"blokada"przed wpisaniem liter do zmiennej


(system) #1

Mam problem z programem, który napisałem ostatnio (Program oblicza średnią arytmetyczną ocen). Otóż ograniczyłem już wpisywanie liczb większych niż 6 ale kiedy wpiszę jakąś literę wyświetla się w nieskończoność jakiś napis. Nie wiem, jak zablokować wpisywanie znaków i wyrazów (żeby program zwracał błąd za każdym razem, kiedy podajemy zmienną inną, niż liczba 0 - 6 (0 kończy wpisywanie). Oto kod programu. Nieudane próby wziąłem w komentarz (Piszę w Dev-C++)

#include 

#include 

#include "console.ddt"

using namespace ddt::console;

using namespace std;

int main()

{

    int kolorTla=10;//min wartosc=0; max wartosc=15;

    int kolorTekstu=12;//min wartosc=0; max wartosc=15;

    ddt::console::textattr(kolorTla*16+kolorTekstu);

    int ilosc=0;

    float srednia=0;

    float ocena;

    //char wyraz; //zmienna wykluczona z programu, gdyz nie jest ona potrzebna

          cout<<"By Victim"<
          cout<
    do

    {

                         cout<<"Podaj ocene (0 konczy wprowadzanie): ";

                         cin>>ocena;

      /*if(wyraz)

      {

                 cout<
                 cout<
                 cout<
                 cout<
                 getch();               

                 return(0);

      }*/ //Ten fragment wykluczylem z powodu bledow w wykonywaniu funkcji

      if(ocena>6)

      {

                 cout<
                 cout<
                 cout<
                 cout<
                 getch();               

                 return(0);  

      }/*else

      {

           continue; //wykluczony z powodu braku obliczen sredniej

      }*/

     if(ocena>0)

    {

      srednia+=ocena;

      ilosc+=1;

    }

  }while(ocena!=0);

  if(ilosc>0) srednia/=ilosc;

  if(ilosc==0) 

  {

               cout<
                 cout<
                 cout<
                 cout<
                 getch();               

                 return(0);  

  }

    cout<
    cout<
    cout<<"Wcisnij dowolny klawisz aby zakonczyc."<
    cout<<"v0.4.4 BETA."<
    cout<
    getch();

    return(0);

}

Proszę o pomoc w napisaniu jakiejś blokady przed wpisaniem liter i wyrazów do zmiennych.


(Ryan) #2

Nigdy, ale to nigdy nie dawaj linków do plików EXE na forum. To jedno.

Drugie - poszukaj proszę na forum dlaczego czytanie przy pomocy cin>>zmienna liczb jest złym pomysłem. Rozwiązań jest kilka, przynajmniej dwa pojawiły się na forum.


(somekind) #3

Ja proponowałbym wczytywać oceny to zmiennej znakowej, a następnie konwertować do liczby. Bo wtedy wpisanie czegokolwiek nie powodowałoby wysypania programu, a jeśli konwersja by się nie powiodła znaczyłoby to, że nie została wpisana liczba.


(system) #4

Dobra, ale ja jestem całkiem zielony (piszę od tygodnia) :stuck_out_tongue: i dlatego proszę o bardziej sprecyzowane instrukcje, lub fragment jakiegoś tutoriala.

To też poprawiłem. Sry za tamto. Wstawiłem w *.RAR


(Ryan) #5

Jeszcze raz.

  1. Odpowiedź jest na forum - znajdziesz ją w 5-10 minut.

  2. Czy rar czy nie - nikt nie wie co naprawdę jest w exe. Może trojan? A może przypadkiem dołączyłeś wirusa? Nie podawaj linków do exe w ogóle, nawet spakowanych.