Zistenie poctu cisel nachadzajucich sa v poli

Programovacie jazyky, rady, poradňa...
jakub.eliaš
Novice
Novice
Používateľov profilový obrázok
Príspevky: 1
Registrovaný: 11 mar 2015, 18:24

Zistenie poctu cisel nachadzajucich sa v poli

Príspevok od používateľa jakub.eliaš »

Zdravim. Chcel by som sa opytat,ako zistit, kolko cisel sa nachadza v poli. Napr. uzivatel zada : 50 30 66 3 ,vypise to, ze v poli su 4 cisla. Zatial som nakodil iba program,ktory mi vypise zo spominanych hodnot, ze tam su 2. Za pomoc som vdacny :)

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
float p[1000];
scanf("%f",p);
int length=(sizeof(p)/sizeof(float));
printf("%d",length);

return 0;
}
Michaelo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6177
Registrovaný: 16 júl 2008, 20:29
Bydlisko: Pri PC
Kontaktovať používateľa:

Re: Zistenie poctu cisel nachadzajucich sa v poli

Príspevok od používateľa Michaelo »

Skus pouzit nieco ako explode v PHP, to ti rozdeli string na kazdej mecdzere (alebo ciarke ci cokolvek nastavis) a spravi z neho array. Potom uz len prebehnes cely array a zistis ci je tam string alebo cislo, aj he cisli tak dax X + 1 a na konci vyplujes X.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Zistenie poctu cisel nachadzajucich sa v poli

Príspevok od používateľa BX »

Dá sa to urobiť takto:
1.) Spočítať medzery a z toho vyvodiť, koľko je tam čísel. To je nešikovné riešenie, pretože ak zadám dve medzery medzi číslom, výsledok bude zlý. Ak ale očakávame správny vstup, dá sa to použiť.
2.) Jednoducho prečítať celý string od začiatku do konca, pritom mať jednu premennú ako počítadlo a jednu ako flag (true/false). Akonáhle narazíš na číslo a flag je false, zvýšiš počítadlo o jedna, flag nastavíš na true a pokračuješ, kým čítaš čísla. Akonáhle prečítaš niečo iné, než číslo, flag zhodíš na false a opakuješ to isté.
3.) Použiť sscanf, niečo ako

Kód: Vybrať všetko

while( sscanf(str, "%d",&cislo) == 1 ) pocitadlo++; 
...a dali by sa vymyslieť ďalšie krajšie aj menej pekné riešenia.

No a teraz k veci: WHAT THE ACTUAL FUCK? :| Čo má akože robiť tento kód?

Kód: Vybrať všetko

int main()
{
float p[1000];
scanf("%f",p);
int length=(sizeof(p)/sizeof(float));
printf("%d",length);

return 0;
}
Napísať odpoveď