Skocz do zawartości

Wczytywanie Cyfr Po Spacji Cd... :)


MitS

Rekomendowane odpowiedzi

Witam!

 

W moim ostatnim poście sorror mi pomógł i chciałem podziękować, lecz zrodził się następny problem sad.gif

 

Mam oto taki kod:

 

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
ios_base::sync_with_stdio(0);

char z;
int a, b, i, j, *zi, *zj;
int wynik;

start:
cout << "Wpisz dane wejściowe 'a' i 'b': ";
cin >> a >> b;

zi = new int [a];
zj = new int [b];

cout << "Wpisz liczby dla a: ";
for(i = 0; i < a; i++)
{
cin >> zi[i];
}
cout << "Wpisz liczby dla b: ";
for(i = 0; i < b; i++)
{
cin >> zj[i];
}

for(i=0; i<a; i++)
zi[i];
for(i=0; i<b; i++)
zj[i];

if ((zi[i] != a) || (zj[i] != b))
{
cout << "Błędna ilość cyfr !!! " << endl;
goto start;
}
else
{
goto next;
}
next:
cout << "Coś tu będzie ..." << endl;
cout << "Naciśnij klawisz ...";
return 0;
}

 

i mam wynik taki:

 

Wpisz dane wejściowe 'a' i 'b': 5 3

Wpisz liczby dla n: 3 4 4 6 4

Wpisz liczby dla m: 5 6 7

Błędna ilość cyfr !!!

Wpisz dane wejściowe 'a' i 'b':

 

Dlaczego nie chce mi przejść dalej ??

Pewnie to jakiś banalny błąd, ale po prostu (_niewiem_ → nie wiem) ORT gdzie jest błąd sad.gif

Odnośnik do komentarza
Udostępnij na innych stronach

Witam.

 

Blad jest w linijce:

 

if ((zi[i] != a) || (zj[i] != b))
...

 

W ten sposob przyrownujesz liczby cyfr "a" i "b" z ostatnimi elementami tablic "zi" i "zj", a powinienes przyrownywac do wielkosci tych tablic.

 

Poprobuj z funkcja "sizeof(nazwa_tablicy)". Powinna dac wielkosc tablicy w bajtach, czyli liczbowa ilosc elementow powinienes otrzymac piszac:

 

sizeof(zi) / sizeof(int)

 

Niestety u mnie cos nie chce to dzialac, a nie mam juz dzisiaj wiecej czasu.

 

Powodzenia smile.gif

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Czytam kod, trafiam na 'goto' -> przestaję czytać. Zawsze z chęcią pomogę, o ile kod nie jest pisany cyrylicą...

 

Dlaczego gdy przeczytałeś goto to przestałeś czytać ???

Ja narazie sie próbuje uczyć jeszcze więc pytam się smile.gif

 

a jeśli chodzi o

sizeof(zi) / sizeof(int)

 

to też coś nie działa :/

Odnośnik do komentarza
Udostępnij na innych stronach

Czytam kod, trafiam na 'goto' -> przestaję czytać. Zawsze z chęcią pomogę, o ile kod nie jest pisany cyrylicą...

 

Dlaczego gdy przeczytałeś goto to przestałeś czytać ???

Ja narazie sie próbuje uczyć jeszcze więc pytam się smile.gif

Więc ucz się bez błędów. Pytanie: z czego się uczysz? goto jest archaizmem, używanie go w kodach C++ jest zaprzeczeniem całej wspaniałej idei obiektowości tego języka.

 

Tu masz poprawny kod, ale użyj pętli zamiast goto.

 

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
ios_base::sync_with_stdio(0);

char z;
int a, b, i, j, *zi, *zj;
int wynik;

start:
cout << "Wpisz dane wejściowe 'a' i 'b': ";
cin >> a >> b;

zi = new int [a];
zj = new int [b];

cout << "Wpisz liczby dla a: ";
for(i = 0; i < a; i++)
{
cin >> zi[i];
}
cout << "Wpisz liczby dla b: ";
for(i = 0; i < b; i++)
{
cin >> zj[i];
}
int num, num1;
num=((sizeof(zi)/sizeof(int))*a);
num1=((sizeof(zj)/sizeof(int))*b);
if (a != num || b != num1)
{
cout << "Błędna ilość cyfr !!! " << endl;
goto start;
}
else
{
}
cout << "Coś tu będzie ..." << endl;
cout << "Naciśnij klawisz ...";
return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 weeks later...

Nio symfonia to chyba najlepsza pozycja zeby zaczac zabawe z c++. Jesli mysli sie juz o czyms bardziej zaawansowanym to trzeba szukac gdzie indziej. Tu wszystko zalezy od stopnia zaawansowania. Kontynuacja symfonii to pasja mozna tez nad tym posiedziec...

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...