[ anateus @ 22.12.2009. 13:21 ] @
napraviti funkciju koja pronalazi koliko se puta u stringu javlja neki dvocifreni broj (bez koristenja funkcija iz string.h) hvala :) |
[ anateus @ 22.12.2009. 13:21 ] @
[ Mihajlo Cvetanović @ 22.12.2009. 13:44 ] @
Da li je taj dvocifrani broj dat, ili se gleda broj pojavljivanja svih dvocifrenih brojeva?
Recimo da je ovo drugo, ovo bi bio algoritam: Imaš jednu promenljivu koja kaže koliko si dvocifrenih brojeva izbrojao. Imaš još jednu promenljivu koja kaže koliko si do sada cifara izbrojao u trenutnoj grupi cifara. U petlji ispituješ znakove u stringu počevši od početka. - Ako je trenutni znak cifra onda povećaj <brojač cifara> za jedan. - Ako trenutni znak nije cifra (ili je kraj stringa) onda vidi da li je <brojač cifara> == 2, pa ako jeste uvećaj <brojač dvocifrenih brojeva>. U svakom slučaju postavi <brojač cifara> na nulu. [ anateus @ 22.12.2009. 14:15 ] @
dat je neki dvocifreni br
[ Mihajlo Cvetanović @ 22.12.2009. 14:31 ] @
U tom slučaju algoritam je isti, samo sa sledećim dodatkom: u trenutku kad povećaš <brojač cifara> za jedan treba da ažuriraš i jedan broj koji služi za čitanje stringa.
brojac_cifara++; procitani_broj = 10*procitani_broj + (dati_string[trenutni_indeks] - '0'); Kada ispituješ da li je <brojač cifara> jednak 2 treba istovremeno da ispituješ i da li je <pročitani broj> jednak <datom broju>. Kada resetuješ <brojač cifara> na nulu treba takođe da resetuješ i <pročitani broj>. Postoji jedna nedoumica: da li dati broj sme da bude substring nekog većeg broja u datom stringu? Ako je dati broj 42 a dati string 'ab1425cd' da se ovaj 42 računa kao pojavljivanje dvocifrenog broja 42? [ anateus @ 22.12.2009. 16:45 ] @
mislim da nije, jer u tom slucaju to vise nije dvocifreni broj
[ drki89 @ 30.01.2010. 21:41 ] @
Ako sam dobro shvatio problem ovo bi trebalo da bude resenje:
Code: #include <stdio.h> #include <stdlib.h> int brojPonavljanja(char* str, char* br) { int brPon = 0; char *p; for(p=str;*p!='\0';) { if(*p==br[0]) { p++; if(*p==br[1]) brPon++; } else p++; } return brPon; } void main() { char* str; int duz; printf("Duzina niza:"); scanf("%d",&duz); str = (char*)malloc(duz*sizeof(char)); getchar(); printf("Niz: "); gets(str); char br[2]; br[0]=br[1]=0; printf("Broj koji se trazi:"); scanf("%c%c",&br[0],&br[1]); printf("Broj ponavljanja: %d ",brojPonavljanja(str,br)); free(str); system("pause"); } Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|