Sornar Temat założony przez niniejszego użytkownika |
Instrukcje warunkowe » 2015-01-02 13:22:35 Witam. Mam problem z kompilacją mojego programu zawierającego instrukcje warunkowe. Zastanawiam się czy ilość warunków ma na to wpływ bo kod jest raczej pisany "na piechotę".Poproszę o podpowiedź w ewentualnym błędzie lub naprowadzenie. Dodam że jak usuwam drugą linijkę kodu if(b%100=0,01..) to program działa lecz zbytnio nie wyświetla polecenia. Oto treść zadania:
Wiemy, że numer PESEL zawiera rok urodzenia osoby. Więcej informacji na ten temat: http://pl.wikipedia.org/wiki/PESEL#Data_urodzenia Napisz w języku C++ program, który na podstawie numeru PESEL określi rok urodzenia osoby. Input Numer PESEL (jedenastocyfrowy) osoby urodzonej w latach 1895-2012. Output Rok urodzenia posiadacza numeru PESEL (czterocyfrowy). Przykład Input: 97050211225 Output: 1997 Oto mój kod: #include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { long long int a, b, c, d, e, f, g, h, i, j, k; cin >> a; b=a/10000000; c=a/1000000000; if(b%100==0,81 || b%100==0,82 || b%100==0,83 || b%100==0,84 || b%100==0,85 || b%100==0,86 || b%100==0,87 || b%100==0,88 || b%100==0,89 || b%100==0,9 || b%100==0,91 || b%100==0,92 ) {d=1800+c; cout << d; } else if(b%100==0,01 || b%100==0,02|| b%100==0,03 || b%100==0,04 || b%100==0,05 || b%100==0,07 || b%100==0,08 || b%100==0,09 || b%100==0,1 || b%100==0,11 || b%100==0,12) {e=1900+c; cout << e; } else if(b%100==0,21 || b%100==0,22 || b%100==0,23 || b%100==0,24 || b%100==0,25 || b%100==0,26 || b%100==0,27 || b%100==0,28 || b%100==0,29 || b%100==0,3 || b%100==0,31 || b%100==0,32) {f=2000+c; cout << f; }
return 0; }
|
|
czosnek17 |
» 2015-01-02 13:58:28 W liczbach używaj kropek, nie przecinków. |
|
GolemXIV |
» 2015-01-02 14:02:27 Wywal to b%100 gdzieś przed if-y b%Cokolwiek da Ci liczbę całkowitą. Zawsze. |
|
darko202 |
» 2015-01-02 15:03:10 no i zamiast trzech ifów np. if( b % 100 == 0, 21 || b % 100 == 0, 22 || b % 100 == 0, 23 || b % 100 == 0, 24 || b % 100 == 0, 25 || b % 100 == 0, 26 || b % 100 == 0, 27 || b % 100 == 0, 28 || b % 100 == 0, 29 || b % 100 == 0, 3 || b % 100 == 0, 31 || b % 100 == 0, 32 )
mo ż esz zrobic sobie odpowiedni ą funkcj ę np. bool function Sprawdz( double b, int tryb, double tabicaWarunkow[] ) { for( int i = 0; i < iloscWarunkow; i++ ) { if( b % 100 == tabicaWarunkow[ i ] return true; } return false; }
to uprościłoby kod |
|
Sornar Temat założony przez niniejszego użytkownika |
» 2015-01-02 15:21:07 Starałem się zastosować do Waszych rad ale chyba mój program dalej gdzies zawiera błąd wyszły mi dwa takie doky. Obecne kody się kompilują, lecz dalej nie spełniają warunków zadania. Oto kody: #include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { long long int a, b, c, d, e, f, g, h, i, j, k; cin >> a; b=a/10000000; c=a/1000000000; k=b%100;
if(k>=0.81 && k<=0.92) {d=1800+c; cout << d; } else if(k>=0.01 && k<=0.12 ) {e=1900+c; cout << e; } else if(k>=0.21 && k<=0.32) {f=2000+c; cout << f; }
return 0; }
Drugi: #include <iostream>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { long long int a, b, c, d, e, f, g, h, i, j, k; cin >> a; b=a/10000000; c=a/1000000000;
if(b%100==0.81 || b%100==0.82 || b%100==0.83 || b%100==0.84 || b%100==0.84 || b%100==0.85 || b%100==0.86 || b%100==0.87 || b%100==0.88 || b%100==0.89 || b%100==0.90 || b%100==0.91 || b%100==0.92 ) {d=1800+c; cout << d; } else if(b%100==0.01 || b%100==0.02 || b%100==0.03 || b%100==0.04 || b%100==0.05 || b%100==0.06 || b%100==0.07 || b%100==0.08 || b%100==0.09 || b%100==0.1 || b%100==0.11 || b%100==0.12 ) {e=1900+c; cout << e; } else if(b%100==0.21 || b%100==0.22 || b%100==0.23 || b%100==0.24|| b%100==0.25 || b%100==0.26 || b%100==0.27 || b%100==0.28 || b%100==0.29 || b%100==0.30 || b%100==0.31 || b%100==0.32 ) {f=2000+c; cout << f; }
return 0; }
Dzięki za pomoc z kompilowaniem, ale macie może pomysł jak powinienem rozwiązać do zadanie.
|
|
GolemXIV |
» 2015-01-02 16:34:47 No przecież napisałem, że b%100 nigdy nie da Ci wartości ułamkowej. Żaden z tych testów: b%100==0.23 ani żaden inny nigdy nie będzie spełniony. |
|
Sornar Temat założony przez niniejszego użytkownika |
» 2015-01-02 20:55:24 obawiam się że spełniał program tylko cos było nie tak bo wyświetlał mi ciągle rok np 1895 albo 1820 |
|
Sornar Temat założony przez niniejszego użytkownika |
» 2015-01-02 20:56:17 dlatego pytam czy ktoś może ma jkaiś inny pomysł jak rozwiązać to zadanie? |
|
« 1 » 2 |