Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Praca domowa do lekcji 15 - kalkulator

Ostatnio zmodyfikowano 2015-08-15 16:14
Autor Wiadomość
C-Objective
» 2015-08-14 18:24:52
nie używaj cin tylko getch jak mówię
P-136263
BadBullPL
» 2015-08-14 18:30:05
nie używaj cin tylko getch jak mówię
Poco?
Niestety nie pomaga. Wpisanie litery kończy program
Wczytuj liczbę w pętli.
P-136264
kaczan
Temat założony przez niniejszego użytkownika
» 2015-08-14 18:37:07

nie używaj cin tylko getch jak mówię
Jeszcze nie znam tej funkcji. Poczytam dalej i pewnie będę w stanie z tym sobie poradzić. Czy jednak nie da się zrobić tego zadania z funkcją cin?


Wczytuj liczbę w pętli.

W poleceniu było zastosowanie zabezpieczenia przed błędnym wpisem. Pętla sama z siebie działa. Zabezpiecznie nie. Więc zadanie nie jest wykonane. Chcę się dowiedzieć, gdzie robię błąd.
P-136265
carlosmay
» 2015-08-14 18:47:39
Nie wiem czemu nie działa u Ciebie program.
Skompilowałem twój program na vs13 i działa sprawdzanie wczytanych danych działa, czyli pyta ponownie gdy dane są niezgodne z oczekiwanym typem.
Natomiast na vs15 zmieniłem na cin.ignore() i też zaczął działać poprawnie.

Jakiego IDE używasz?
P-136266
C-Objective
» 2015-08-14 18:58:42
Nie ide tylko kompilator. @up Przetestuj ten program.
C/C++
#include <conio.h> //Hardcore xd
int toInt( char * s ) {
    int n, i;
    i = n = 0;
    while( s[ i ] >= '0' && s[ i ] <= '9' ) {
        n = n * 10 + s[ i++ ] - '0';
    }
    return n;
}
int main() {
    char arr[] = { "Wpisz a aby zakonczyc program. Podaj dwie cyfry, a ja wyswietle ci sume. Nawet jestli wpiszesz durnote to sie nie zawiesze ;)" }
    for( int i = 0; i < strlen( & arr ); i++ ) putch( arr[ i ] ); //Niczym printf :D Putch wyswiela znak getch pobiera znak. Podobnie jak cin-cout tylko bardziej tolerancyjne.
   
    char c = getch(); //Magiczna instrukcja. To co wpisal podejzliwy user laduje w zmiennej c.
    char c2 = getch();
    if( c == 'a' || c2 == 'a' )
    else {
        if( c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9' || c == '0' ) { //Liczba
            if( c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9' || c == '0' ) { //Nie ma jak copy-paste ;d.
                putch( toInt( & c ) + toInt( & c2 );
            }
            else {
                //Zbesztaj usera za pisanie durnot.
            }
        }
        else {
            //Zbesztaj usera za pisanie durnot.
        }
    }
}
Powinno dzialac
P-136267
BadBullPL
» 2015-08-14 19:29:34
Powinno działać.
Nie skompiluje się.
P-136270
JMII89
» 2015-08-14 19:37:16
@C-Objective

Ciekawe. Kod poza mainem()
P-136272
carlosmay
» 2015-08-14 19:42:36
C/C++
#include <iostream>

int main()
{
    int liczba1 = 0;
    do {
        std::cin.clear();
        std::cin.sync();
        std::cin >> liczba1;
        if( !std::cin )
             std::cout << "Dane niepoprawne. Podaj ponownie." << std::endl;
       
    } while( !std::cin );
   
    return 0;
}

Spróbuj przepisać swój kod od nowa i w ten sposób sprawdzać czy stan cin jest poprawny.
P-136274
1 « 2 » 3
Poprzednia strona Strona 2 z 3 Następna strona