Błąd sumy w programie. C++

Błąd sumy w programie. C++
CV
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Cześć. Zrobiłem program , który sprawdza na początku znak i sprawdza czy to liczba czy litera. Gdy później spełniając te warunki miały sie dodać liczby wychodzi mi zły wynik.

Kopiuj
#include <iostream>
#include <string.h>
#include <conio.h>
int main()
{
using namespace std;
char a;
char b;
int suma;
do{
cout << "Podaj 1 znak do sprawdzenia " << endl;
cin >> a;
if (a > 47 and a < 58) cout << "\nJest to cyfra"<< endl; else cout << "\nInny znak"<< endl;
}while ( a>=46 && a>=57);
getchar ();
 do{
 cout << "Podaj 2 znak do sprawdzenia " << endl; 
cin >>b;
if (b > 47 and b < 58) cout << "\nJest to cyfra"<< endl; else cout << "\nInny znak"<< endl;
}while (b>=46 && b>=57);
getchar ();
 {
if ((a > 47 and a < 58) && (b > 47 and b < 58))
cout << "Suma tych liczb wynosi : " << (suma=a + b) << endl;

}    
      
      system("PAUSE");
    return EXIT_SUCCESS;
}
 
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

o_O czy ty jesteś poważny? Sam robisz porównania tych cyfr z liczbami 47 i 58 a potem się dziwisz ze jak je dodasz to dostajesz liczbę inną niż gdyby to były zwykłe jednocyfrowe liczby? o_O
znak - '0'

CV
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

Miałem z internetu ściągnać program ,który sprawdza znaki i pisało ,że to własnie robi .

MK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 126
0

Poczytaj sobie o kodowaniu znaków, o ASCII, zastanów się dlaczego inny wynik dostaniesz jeśli zmienną typu char wydrukujesz printf'em z %d, a inną z %c. To nie jest skomplikowane, ale trzeba trochę wiedzy zdobyć, żeby zrozumieć.

Edit: Warunek "while ( a>=46 && a>=57)" jest conajmniej idiotyczny. Jeśli jest większe od 46 57, to jakim cudem miałoby nie być większe od 57 46?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

Zapoznaj się z podstawami matematyki, naucz się odróżniać cyfry od liczb.
if(isdigit(znak)) // to cyfra
if(('0'<=znak)&&(znak<='9')) // to cyfra

CV
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
0

To coś takiego jak ten program ?

Kopiuj
 

#include <iostream>
#include <conio.h>

int main()
{
        char string[20];
        float liczba;
        int temp;
        temp = std::cin.peek();
        if(isdigit(temp))
        {
                std::cin >> liczba;
                std::cout << "liczba: " << liczba;
        }
        else
        {
                std::cin >> string;
                std::cout << "napis: " << string;
        }
        getch();
        return 0;
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
while(true)
  {
   cout<<"podaj dwie liczby: ";
   int A,B;
   if(cin>>A>>B)
     {
      int S=A+B;
      cout<<A<<" + "<<B<<" = "<<S<<endl;
      if(S<1000) return 0;
     }
   else
     {
      cout<<"to nie sa dwie liczby"<<endl;
      cin.clear();
     }
   while(cin.get()!='\n') {}
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.