Program v jazyku C - Kruh

Programovacie jazyky, rady, poradňa...
lowmanek
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 977
Registrovaný: 04 apr 2010, 8:53
Bydlisko: 221B Baker Street

Re: Program v jazyku C - Kruh

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

Kód: Vybrať všetko

string slovo[100] //string, v ktorom bude maximalne 99 lubovolnych znakov, posledny je vyhradeny pre '\0' - oznacuje koniec stringu
int i = 0;
scanf("%s", slovo);
while (slovo[i] != '\0') { //pokial nenarazis na koniec, teda '\0'
     rob_nieco_s_i-tym_pismenom(slovo[i]);
     ++i; //posun sa na dalsi znak
}
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: Program v jazyku C - Kruh

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

Mám spraviť program, kt. bude riešiť to, koľkokrát sa vo vete dane pismeno vyskytuje.
Snažil som sa ísť na to logicky, ale začal som ešte len s programovanim tak neviem, či dobre rozmyšlam.

1.Zadefinoval som si premenne a typ premennych
2.Zadefinoval som si veľkosť pola, neviem či syntax je spravna, tak sa pozrite.
3.Každe pismeno z abecedy som si nastavil na začinajucu hodnotu nula
4.Program vyzve uživatela na zadanie vety a vetu, resp.pismena uloži do pamäte.
5.Cez cyklus while som sa snažil dosiahnuť to, aby každe pole prešiel a keď sa dane pismeno, kt. prehladava nachadza v danom poli,
zapisal ho do pamate. A takto by sa cyklus opakoval stale dookola, dokedy neskotroluje všetky polia. Keď skontroluje všetky polia,
prejde na ďalši while cyklus a zase bude prehladavať polia, kolkokrat sa pismeno ktore je zadane v cykle nachadza vo vete.
6.Keď prebehnu všetky while cykli, program vypiše uživatelovi na monitor koľko krát sa ktore písmo vo vete nachadza.

Čo si myslite o logike, dava to zmysel? A ako to je so syntaxov, mám ju dobre napisanu?

Kód: Vybrať všetko

//Program zobrazi kolkokrat sa vo vete dane pismeno nachadza

//Pouzite hlavickz
#include <stdio.h>
#include <stdlib.h>

int main()
{
    //Zadefinovany typ premennej pre kazde pismeno vo vete
    int PismenoA, PismenoB, PismenoC, PismenoD, PismenoE, PismenoF, PismenoG, PismenoH, PismenoI, PismenoJ, PismenoK, PismenoL, PismenoM;
    int PismenoN, PismenoO, PismenoP, PismenoR, PismenoS, PismenoT, PismenoU, PismenoV, PismenoW, PismenoX, PismenoY, PismenoZ;

    //Zadefinovany typ premennej pre maximalny pocet jedneho pismena vo vete
    int MaxA, MaxB, MaxC, MaxD, MaxE, MaxF, MaxG, MaxH, MaxI, MaxJ, MaxK, MaxL, MaxM;
    int MaxN, MaxO, MaxP, MaxR, MaxS, MaxT, MaxU, MaxV, MaxW, MaxX, MaxY, MaxZ;

    //Velkost pola
    int pismena_pole[100];

    //Inicialiyacia kazdeho pismena na nulu, aby program prehladaval pismena od zaciatku vety
    PismenoA=0;
    PismenoB=0;
    PismenoC=0;
    PismenoD=0;
    PismenoE=0;
    PismenoF=0;
    PismenoG=0;
    PismenoH=0;
    PismenoI=0;
    PismenoJ=0;
    PismenoK=0;
    PismenoL=0;
    PismenoM=0;
    PismenoN=0;
    PismenoO=0;
    PismenoP=0;
    PismenoR=0;
    PismenoS=0;
    PismenoT=0;
    PismenoU=0;
    PismenoV=0;
    PismenoW=0;
    PismenoX=0;
    PismenoY=0;
    PismenoZ=0;

    //Vyyve uzivatela na zadanie vety
    printf("Zadajte vetu:\n");
    //Upozorni uzivatela aby nepouzival diakritiku
    printf("Pozn.:Vetu piste bez diakritiky\n");
    //Medzera medzi riadkami
    printf("\n");
    //Vetu ulozi do pamati pod premennou "pismena_pole"
    scanf("%d", &pismena_pole);

   //Skontroluje kolkokrat sa pismeno A nachadza vo vete
   While(PismenoA=0)
   {
        scanf("%d", &MaxA); //Ulozi do premennej "MaxA", kolkokrat sa pismeno A vo vete vyskytuje
        ++PismenoA; //Prehladava dalsie pismena
   }

   //Skontroluje kolkokrat sa pismeno B nachadza vo vete
   While(PismenoB=0)
   {
        scanf("%d", &MaxB); //Ulozi do premennej "MaxB", kolkokrat sa pismeno B vo vete vyskytuje
        ++PismenoB; //Prehladava dalsie pismena
   }

   //Vypise uzivatelovi kolkokrat sa vo vete nachadza dane pismeno
   printf("A: %d\n", &MaxA);
   printf("B: %d\n", &MaxB);

    getch(); //Program sa stopne a caka na dalsiu akciu od uzivatela
    return 0;
}
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Program v jazyku C - Kruh

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

:D
maetoo napísal: PismenoA=0;
    PismenoB=0;
    PismenoC=0;
    PismenoD=0;
    PismenoE=0;
    PismenoF=0;
    PismenoG=0;
    PismenoH=0;
    PismenoI=0;
    PismenoJ=0;
    PismenoK=0;
    PismenoL=0;
    PismenoM=0;
    PismenoN=0;
    PismenoO=0;
    PismenoP=0;
    PismenoR=0;
    PismenoS=0;
    PismenoT=0;
    PismenoU=0;
    PismenoV=0;
    PismenoW=0;
    PismenoX=0;
    PismenoY=0;
    PismenoZ=0;
preco to neskusis takto:

Kód: Vybrať všetko

int letters[36];
//autoeditácia príspevku (20 Okt 2015, 14:54)
Syntax ti skontroluje kompilator :D
Dufam, ze neprogramujes ako jeden moj spoluziak byvaly - vo Worde.
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: Program v jazyku C - Kruh

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

harrison314 napísal: preco to neskusis takto:

Kód: Vybrať všetko

int letters[36];
Keby som lepšie vedel pracovať v C, určite si to ulahčim.
Zatiaľ to len musim naprogramovať v ramci mojich schopnosti, resp.vedomosti a aj keď zdrojak vyzera asi zdlhave, inak to neviem zatiaľ.
harrison314 napísal:Syntax ti skontroluje kompilator :D
Áno, viem, že mi syntax skontroluje kompilator, ale aj tak, lepšie by bolo,
keby mi ho niekto ukrem kompilatoru skontroluje.
A inak piše mi tieto chyby:

Kód: Vybrať všetko

||=== Build: Debug in fewfew (compiler: GNU GCC Compiler) ===|
E:\Dokumenty-all\Programovanie C\fewfew\main.c||In function 'main':|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|54|warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int (*)[100]' [-Wformat]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|57|warning: implicit declaration of function 'While' [-Wimplicit-function-declaration]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|58|error: expected ';' before '{' token|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|72|warning: format '%d' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|74|warning: implicit declaration of function 'getch' [-Wimplicit-function-declaration]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxZ' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxY' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxX' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxW' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxV' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxU' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxT' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxS' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxR' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxP' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxO' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|15|warning: unused variable 'MaxN' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxM' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxL' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxK' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxJ' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxI' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxH' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxG' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxF' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxE' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxD' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxC' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|14|warning: unused variable 'MaxA' [-Wunused-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoZ' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoY' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoX' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoW' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoV' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoU' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoT' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoS' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoR' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoP' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoO' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|11|warning: variable 'PismenoN' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoM' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoL' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoK' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoJ' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoI' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoH' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoG' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoF' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoE' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoD' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoC' set but not used [-Wunused-but-set-variable]|
E:\Dokumenty-all\Programovanie C\fewfew\main.c|10|warning: variable 'PismenoB' set but not used [-Wunused-but-set-variable]|
||=== Build failed: 1 error(s), 52 warning(s) (0 minute(s), 0 second(s)) ===|
harrison314 napísal:Dufam, ze neprogramujes ako jeden moj spoluziak byvaly - vo Worde.
Pobavilo :D Určite neprogramujem vo Worde, ani mi to nenapadlo. Použivam program CodeBlocks.
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Program v jazyku C - Kruh

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

maetoo:
mas tam mrte zaciatocnickych chyb.

c-cko je case sensitive, teda While je blbost, musis napisat while.

dalej while(pismeno = 0) ti do premennej pismeno priradi nulu. musis pouzit while(pismeno == 0).

= je priradenie
== je porovanie

dalej
ak chces pouzivat getch(), musis si includnut <conio.h>

ked toto zmenis tak to aspon skompilujes. ale aj tak ten program nebude robit to co chces aby robil... scanf("%d", ..) nacitava integer, ty zadavas vetu, teda znaky. cele tie while cykly su zle...

poriadne si nastuduj ako funguje scanf.
maetoo
Light Star
Light Star
Príspevky: 263
Registrovaný: 24 okt 2009, 20:05
Bydlisko: Trenčín

Re: Program v jazyku C - Kruh

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

aacid: Áno, som začiatočník v c, takže v kode môžu byť zaciatocnicke chyby.
Ďakujem za pozretie chýb z kompilatoru a poradenie, kde mám chyby a čo zlé robím.
Čo mám v definicii premennych namiesto int použiť, aby mi to nebralo čísla, ale slova, resp.znaky z abecedy?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Program v jazyku C - Kruh

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

maetoo napísal:Keby som lepšie vedel pracovať v C, určite si to ulahčim.
Zatiaľ to len musim naprogramovať v ramci mojich schopnosti, resp.vedomosti a aj keď zdrojak vyzera asi zdlhave, inak to neviem zatiaľ.
Ucenie pouzivania polí a cyklov, ti zaberie menej, ako napisanie takeho dlheho programu s milionom premennych, v ktorych sa zacnes stracat. Nehovoriac o case, ktory stravis tym ze budes hladat v nom chyby. S coho mozu byt vetcinou typu PismenoI malo byt niekde PismenoJ,...

//autoeditácia príspevku (20 Okt 2015, 21:47)
maetoo napísal:Čo mám v definicii premennych namiesto int použiť, aby mi to nebralo čísla, ale slova, resp.znaky z abecedy?
char je jeden znak, pole znakov je string (textovy retazec) http://www.cplusplus.com/reference/cstdio/gets/
Fabo
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6810
Registrovaný: 16 nov 2007, 17:23
Bydlisko: 's Chravenhache
Kontaktovať používateľa:

Re: Program v jazyku C - Kruh

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

a potom je este rozdiel medzi (std::)str a char array, ale to je C++ zalezitost... pre tvoje potreby ries asi jednotlive chary. Potom ich mozes porovnavat s char literalom alebo int "ekvivalentnou" hodnotou.

polia a cykly si pozri, tato uloha bude dost mozno zamerana prave aby si si toto osvojil.

Este jedna vec, z kompilatoru ti vyliezli vacsinou warningy(varovania), chybu si tam mal len jednu - v syntaxi okolo toho While
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Program v jazyku C - Kruh

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

Fabo napísal:a potom je este rozdiel medzi (std::)str a char array, ale to je C++ zalezitost... pre tvoje potreby ries asi jednotlive chary. Potom ich mozes porovnavat s char literalom alebo int "ekvivalentnou" hodnotou.
Robi v C-ecku, takze C++, by som do toho nemiesal ani zmienkou.
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Program v jazyku C - Kruh

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

mozno by bolo dobre prezradit co je jeho cielom. ucis sa to v ramci skoly? musite pouzivat C? ciste C alebo moze byt aj C++?

pokial to proste musi byt C, tak to mas trochu zlozitejsie, nemozes pouzit string ale pole znakov. to zase znamena nastudovat si polia, co to je, ako to funguje.

pokial sa ucis programovat z vlastnej vole a nie si nicim obmedzovany, osobne by som vybral iny programovaci jazyk ako C... ano, vela ludi ti povie ze C je zaklad, ze od toho su odvodene ostatne jazyky ale C je na velmi nizkej urovni, pre uplneho zaciatocnika je praca so smernikmi nocna mora. taky C# je ovela jednoduchsie sa naucit, .net obsahuje plno kniznic ktore ti ulahcia pracu a nic ti nebrani sa v buducnosti vratit k C/C++ a naucit sa pokrocilejsie veci.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Program v jazyku C - Kruh

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

aacid:
Jumpik napísal:... dostal som úlohu v jazyku C : frekvečna analýza ciže ....
Na rienie tohoto zadania staci printf, getchar (alebo nieco obdobne), cyklus a jedno pole, o ziadnych pointeroch netreba nic vediet.
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Program v jazyku C - Kruh

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

to mi uslo, nevedel som na to co robi. samozrejme ze tu ziadne smerniky nepotrebuje, ale ako mozes vidiet z toho jeho kodu, napriek tomu ze ich nepotrebuje uz z toho ma bordel v hlave, pretoze sa snazi vytlacit adresu premennej miesto hodnoty premennej...

jasne ze ked to ma ako zadanie do skoly, tak nema zmysel mu doporucovat iny jazyk, treba robit to co skola povie.
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8216
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: Program v jazyku C - Kruh

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

Povedal, by som ze je to skor syntakticka chyba, repektyve nepochopnie printf.
Priznamvam je dobre vediet co je to pointer (aj by to mal vediet), no nepotrebuje s nimi manipulovat (pointerova aritmetika).
Napísať odpoveď