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ść
kaczan
Temat założony przez niniejszego użytkownika
» 2015-08-14 22:21:48


Jakiego IDE używasz?

Korzystam z Code::Bloks pod linuksem (Ubuntu 15.04). Kompilator GNU GCC Compiler.

Co śmiesznie robiąc zadania do kolejnych lekcji stworzyłem funkcję:

C/C++
int wczytajLiczbe()
{
    int a;
    do
    {
       
        std::cin.clear();
        std::cin.ignore( 1000, '\n' );
        std::cin >> a;
    } while( !std::cin.good() );
   
    return a;
}

Która działa poprawnie. Nie rozumiem dlaczego analogiczny fragment kodu nie działa poprawnie.

EDIT:

W dniu dzisiejszym pojawił się kolejny problem z wczytywaniem. Wczytuje liczbę dopiero za 3 razem. Pierwsze 2 razy ignoruje. Jeśli wczytuje znak inny niż liczbę, to oczywiście pętla działa. Czy ja popełniam błąd, czy błędny jest kompilator? Jeśli kompilator, co zrobić aby działał poprawnie?


 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
 

Kompilator zwraca błąd fata error conio.h nie ma takiego pliku lub katalogu
P-136283
carlosmay
» 2015-08-15 15:39:13
BadBullPL napisał:

Powinno działać.
Nie skompiluje się.
 i tak jest. Brakuje kilku elementów do działania: średników, instrukcji w ifie, nawiasów.
P-136297
Monika90
» 2015-08-15 16:14:39
Co śmiesznie robiąc zadania do kolejnych lekcji stworzyłem funkcję:

Porównaj sobie z tym
C/C++
#include <iostream>
#include <limits>
using namespace std;

int podaj()
{
    int liczba;
    cout << "Podaj liczbe: ";
    while( !( cin >> liczba ) )
    {
        cin.clear();
        cin.ignore( numeric_limits < streamsize >::max(), '\n' );
        cout << "To nie liczba, podaj liczbe: ";
    }
   
    return liczba;
}

int main()
{
    int liczba = podaj();
    cout << "Podano " << liczba << endl;
}
P-136299
1 2 « 3 »
Poprzednia strona Strona 3 z 3