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

Instrukcje warunkowe

Ostatnio zmodyfikowano 2015-01-02 23:01
Autor Wiadomość
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;
}

P-123853
czosnek17
» 2015-01-02 13:58:28
W liczbach używaj kropek, nie przecinków.
P-123855
GolemXIV
» 2015-01-02 14:02:27
Wywal to b%100 gdzieś przed if-y
b%Cokolwiek da Ci liczbę całkowitą. Zawsze.
P-123856
darko202
» 2015-01-02 15:03:10
no i zamiast trzech ifów
np.
C/C++
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
P-123862
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.
P-123865
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.
P-123874
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
P-123887
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?
P-123888
« 1 » 2
  Strona 1 z 2 Następna strona