kynol |
» 2013-11-21 09:40:16 break nie przerywa ci petli.. po prostu jesli na koncu petli umiesciles break; oznacza to ze po jednym obiegu petli po prostu z niej 'wyskakujesz' i przechodzisz do petli for w ktorej zagniezdziles ta petle for z tym warunkiem (if(znak==samogloska[h])). To chyba dlatego |
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2013-11-21 09:49:03 dokladnie tak, ja sie może źle wyraziłem, tylko teraz jak to zrobic zeby mi nie przeskakiwało do pętli wyżej tylko wykonywalo caly obieg ąż do wartosci prawdziwej i dopiero bo ewentualnym znalezieniu tej prawdziwej wartosci przerywalo? |
|
kynol |
» 2013-11-21 10:12:12 Posluchaj mnie uwaznie, przeanalizuj ta czesc kodu: for( int h = 0; h < 7; h++ ) { if( znak == samogloski[ h ] ) { poj[ n1 ] = znak; n1 += 1; l1 += 1; break; } else { podw[ n2 ] = znak; n2 += 1; l2 += 1; break; } }
Tutaj jest blad. Mala podpowiedz, w warunku if sprawdzasz czy znak jest rowny samogloski[h] jesli jest to do poj[n1] przypisujesz wartosc znak, zas jesli nie to odrazu do podw[n2] przypisujesz znak. Teraz pomysl logicznie, przeciez ta petla for najpierw musi sprawdzic czy znak==samogloski[h] jesli tak to przypisujesz poj[n1] wartosc znaku, jesli nie to POWINNA zwiekszyc element [h] i znow sprawdzic czy znak==samogloski[h], jesli nie to znow i znow i znow... Mysle ze taka podpowiedz ci wystarczy:) |
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2013-11-21 10:32:13 wielkie dzieki udało sie :) zrobilem to w taki sposob: for( int h = 0; h < 7; h++ ) { if( znak == samogloski[ h ] ) l3 += 1; } if( l3 > 0 ) { poj[ n1 ] = znak; l1 += 1; n1 += 1; } else { podw[ n2 ] = znak; l2 += 1; n2 += 1; } l3 = 0; }
myślisz ze to jest dobry spobob? może dalo sie jakos prosciej? |
|
kynol |
» 2013-11-21 14:49:01 Pewnie ze dalo sie prosciej, zaraz odpale kompilator i pokaze ci jak :) |
|
kynol |
» 2013-11-21 15:05:52 #include <iostream> #include <conio.h>
using namespace std;
int main() { char poj[ 100 ], podw[ 100 ]; char samogloski[ 7 ] = { 'e', 'y', 'i', 'j', 'a', 'u', 'o' }; int ile, l1 = 0, l2 = 0, n1 = 0, n2 = 0; cout << "Podaj ile elementow ma miec tablica: "; cin >> ile; char tablica[ ile ]; for( int i = 0; i < ile; i++ ) { cout << "Podaj znak " << i << ": "; cin >> tablica[ i ]; for( int h = 0; h <= 8; h++ ) { if( h <= 7 ) { if( tablica[ i ] == samogloski[ h ] ) { poj[ n1 ] = tablica[ i ]; n1++; l1++; break; } } else { podw[ n2 ] = tablica[ i ]; n2++; l2++; break; } } } cout << "Wszystkie znaki: \n"; for( int k = 0; k < ile; k++ ) { cout << tablica[ k ] << ", "; } cout << "\nWszystkie samogloski: \n"; for( int j = 0; j < l1; j++ ) { cout << poj[ j ] << ", "; } cout << "\nWszystkie spolgloski: \n"; for( int l = 0; l < l2; l++ ) { cout << podw[ l ] << ", "; } getch(); return 0; }
Prosze :), jest o wiele czytelniejszy niz twoj. |
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2013-11-21 16:47:01 racja można było i w ten sposób, ale ważne ze jakkolwiek mi sie udalo :D a co do twojego kodu, konkretnie tego miejsca: cout << "Podaj ile elementow ma miec tablica: "; cin >> ile; char tablica[ ile ];
Tak jak wczesniej rozmawialismy nie powinienes wczesniej zdefiniowac rozmiaru tablicy "tablica[]" przed kompilacja? |
|
kynol |
» 2013-11-21 17:18:28 W jaki sposob to moglem zrobic? przeciez pisze wyraznie 'Podaj ile elementow ma miec tablica:' jesli chcialbym zadeklarowac char tablice na poczatku to skad znalbym jej rozmiar? przeciez ten rozmiar podaje uzytkownik, wiec wczytuje liczbe podana przez uzytkownika i pozniej deklaruje tablice ktora sklada sie wlasnie z tylu elementow ile podal uzytkownik ;P |
|
1 2 « 3 » 4 |