GRY-Online.pl --> Archiwum Forum

Problem w c++

03.03.2007
19:38
[1]

super game fan [ ranga ]

Problem w c++

Mam pewien problem z takim fragmentem kodu w c++.
for (unsigned short i=0;i<=6;) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ); // wczesniej zadeklarowalem 6-elementowa tablice typ typu int
i=i+1;


Za pierwszym razem petla idzie ok, ale za drugim razem po "wytypowaniu" pokazuje się błąd windows. Czy ktoś wie co jest nie tak i jak to poprawic??

03.03.2007
19:39
smile
[2]

Narmo [ 42 ]

A nie powinno być zamiast i+1 i++?
Chyba, że mi się z javą pomerdało.

03.03.2007
19:41
[3]

pecet007 [ Talk to the claw ]

w scanf zamiast typ powinno być typ[ i ], zeby wczytał to i-tej komórki tablicy a nie zmienił wskaźnik na tę tablicy AFAIK

03.03.2007
19:42
[4]

Regis [ ]

jesli tablice masz 6 elementowa, to indeksy masz od 0 do 5, wiec tym zabiegiem: "i<=6" wylazisz poza tablice, jak i=6.

Swoja droga za cholere nie kumam po kiego grzyba pisac "unsigned short i=0" w takiej petli. To tak jakbys sobie zdefiniowal funkcje:

unsigned long int Funkcja (unsigned long liczba) ‹
return liczba;


, wiedzac ze operujesz na liczbach 1-100 na przyklad.

Przerost formy nad trescia, jednym slowem.

03.03.2007
19:46
[5]

super game fan [ ranga ]

Mogłem zrobic i++ (lub ++i) ale robiłem tak, i nic by to nie dało. Dołączam screena -->

regis--> za bardzo zaawansowany w c++ to ja nie jestem, na funkcjach jeszcze nie operowalem.

03.03.2007
19:46
[6]

Scatterhead [ łapaj dzień ]

for (unsigned short i=0;i<=6;) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ); // wczesniej zadeklarowalem 6-elementowa tablice typ typu int
i=i+1;



Po pierwsze -> po to masz intsrukcję for, aby samemu nie zwiększać iteratora pętli.

for (unsigned short i=0;i<=6;i++) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ); // wczesniej zadeklarowalem 6-elementowa tablice typ typu int


Po drugie, jeżeli wczytujesz coś na tablicę, musisz podać komórkę tej tablicy, która zapewne będzie kolejnymi wartościami iteratora i.

for (unsigned short i=0;i<=6;i++) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ[ i] ); // wczesniej zadeklarowalem 6-elementowa tablice typ typu int


Po trzecie to zły nawyk tworzyć zmienna w środku instrukcji.

unsigned short i=0;
for (i=0;i<=6;i++) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ[ i ]); // wczesniej zadeklarowalem 6-elementowa tablice typ typu int


03.03.2007
19:46
[7]

fanlegii79 [ Generaďż˝ ]

Petla ta wykona sie 7 razy, wiec 6 elementowa tablica jest za mala.
zmien na mniejsze zamiast mniejsze rowne.
for (unsigned short i=0;i<6;i++) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ);


i napisz jeszcze deklaracje tego typ.

03.03.2007
19:54
[8]

super game fan [ ranga ]

Sory nie wiem dlaczego tu tak nie jest ale ja w pisalem typ, tylko ze bez spacji.
Teraz jest takie coś:
int typ[6];
...
unsigned short i = 0;
for (;i<6;i++) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ[ i ]);

i nadal jest ten sam błąd!

03.03.2007
20:00
[9]

Qbaa [ Senator ]

1. jeśli bierzesz kod z forum, to nie zapomnij pozamieniać znaków ‹›, z powrotem na nawiasy klamrowe.
2. jak chcesz na tym forum wklejać kod, to najlepiej w okienku dodawania postu wyłącz znaczniki (odptaszkuj). wtedy nie trzeba nic kombinować przy nawiasie kwadratowym:
unsigned short i = 0;
for (;i<6;i++) ‹
printf("Wytypuj %hu liczbe: ", i+1);
scanf("%i", typ[i]);

03.03.2007
20:03
[10]

Scatterhead [ łapaj dzień ]

int typ[6];
...
int i = 0;
for (i = 0 ;i<6;i++) ‹
printf("Wytypuj %i liczbe: ", i+1);
scanf("%i", typ[ i ]);


tak sproboj

04.03.2007
11:45
[11]

super game fan [ ranga ]

Ja już wiem! Zrobiłem tak:

int typ[6];
...
int i = 0;
for (i = 0 ;i<6;i++) ‹
printf("Wytypuj %i liczbe: ", i+1);
scanf("%i", &typ[(I]);

I dziala pieknie. Chodziło o to że powinno być &typ a nie typ. Chociaż zagadką pozostaje dla mnie dlaczego 1 petla dzialala dobrze ale cóż..
Temat uważam za zamknięty.

© 2000-2026 GRY-OnLine S.A.