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

Rozdz. 1 lekcja 9 - Prosze o pomoc w zadaniu

Ostatnio zmodyfikowano 2019-10-03 14:38
Autor Wiadomość
komornik11
Temat założony przez niniejszego użytkownika
Rozdz. 1 lekcja 9 - Prosze o pomoc w zadaniu
» 2018-09-13 13:47:35
Czesc wszystkim, wczoraj postanowilem zmienic cos w swoim zyciu, zagonic sie do dzialania i tak o to rozpoczalem nauke programowania. Napotkalem pewna trudnosc z ktora nie moge sobie poradzic. Bardzo prosze, gdyby ktos byl tak mily, przeanalizowal kod i powiedzial dlaczego nie chce sie skompilowac.
C/C++
#include <iostream>
#include <limits>
int main()
{
    float liczba1;
    float liczba2;
    float liczba3;
    bool test1;
    bool test2;
    bool test3;
   
   
    std::cin >> liczba1;
    test1 = std::cin.fail;
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
    std::cin >> liczba2;
    test2 = std::cin.fail;
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
    std::cin >> liczba3;
    test3 = std::cin.fail;
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
    std::cout << "liczba pierwsza to: " << liczba1 << " wczytano? " << test1;
    std::cout << "liczba druga to: " << liczba2 << " wczytano? " << test2;
    std::cout << "liczba trzecia to: " << liczba3 << " wczytano? " << test3;
   
    return 0;
   
}
Pozdrawiam cieplo!
P-172305
YooSy
» 2018-09-13 14:58:04
W C++ przypisujemy prawą stronę do lewej.
test1 = std::cin.fail();
.

Na przyszłość podawaj też treść błedu.
P-172306
komornik11
Temat założony przez niniejszego użytkownika
» 2018-09-13 15:59:40
Dzięki za odpowiedź, jednak nadal nie działa!
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
C:\Users\user\Documents\start.cpp||In function 'int main()':|
C:\Users\user\Documents\start.cpp|14|error: cannot convert 'std::basic_ios<_CharT, _Traits>::fail<char, std::char_traits<char> >' from type 'bool (std::basic_ios<char>::)() const' to type 'bool'|
C:\Users\user\Documents\start.cpp|19|error: cannot convert 'std::basic_ios<_CharT, _Traits>::fail<char, std::char_traits<char> >' from type 'bool (std::basic_ios<char>::)() const' to type 'bool'|
C:\Users\user\Documents\start.cpp|24|error: cannot convert 'std::basic_ios<_CharT, _Traits>::fail<char, std::char_traits<char> >' from type 'bool (std::basic_ios<char>::)() const' to type 'bool'|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

EDIT:
Okej, zapomniałem o nawiasach, jednak jeszcze nie działa tak jak powinno. Program zwraca 1 gdy wystąpi błąd przy wczytaniu danych, natomiast chciałbym uzyskać odwrotny efekt, jak to zrobić?
P-172307
pekfos
» 2018-09-13 18:22:17
Jak wygląda kod?

PS: poprawiłem formatowanie twoich postów. Lepiej żebyś to dalej sam robił.
P-172308
komornik11
Temat założony przez niniejszego użytkownika
» 2018-09-14 11:51:45
C/C++
#include <iostream>
#include <limits>
int main()
{
    float liczba1;
    float liczba2;
    float liczba3;
    bool test1;
    bool test2;
    bool test3;
   
   
    std::cin >> liczba1;
    test1 = std::cin.fail();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
    std::cin >> liczba2;
    test2 = std::cin.fail();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
    std::cin >> liczba3;
    test3 = std::cin.fail();
    std::cin.clear();
    std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
   
    std::cout << "liczba pierwsza to: " << liczba1 << " wczytano? " << test1 << std::endl;
    std::cout << "liczba druga to: " << liczba2 << " wczytano? " << test2 << std::endl;
    std::cout << "liczba trzecia to: " << liczba3 << " wczytano? " << test3;
   
    return 0;

Chcę żeby zwracał 1 gdy nie wystąpi błąd i 0 jeśli wystąpi.
Aktualnie jest odwrotnie
P-172309
pekfos
» 2018-09-14 12:19:10
Yy.. to tak nie powinno wyglądać. Będę musiał to poprawić w lekcji ;) Jak chcesz zrobić zadanie tak jak jest sformułowane teraz, to potrzebujesz wiedzy z następnych 3 lekcji opisujących podstawowe operacje matematyczne, logiczne itd. W praktyce powinna wystarczyć już sama następna lekcja.
P-172310
YooSy
» 2018-09-14 14:47:24
Możesz też skorzystać z metody
good()
 zamiast
fail()
.
good()
 zwraca wartości przeciwne do
fail()
. Te metody nie są dokładnymi przeciwieństwami, ale w tym prostym przypadku wystarczy.
P-172312
pekfos
» 2018-09-14 15:02:21
Te metody nie są dokładnymi przeciwieństwami
Dlatego good() zostało usunięte z kursu.
P-172313
« 1 » 2 3
  Strona 1 z 3 Następna strona