Jump to content
M2G

[RSTA 1/2] Intrebari - Raspunsuri

Recommended Posts

Intrebare legata de pagina 60.

Avem acolo un program scris care se foloseste de doua functii (getline() si strindex ()). Observ ca cele doua functii sunt cumva "declarate" apoi folosite in main si abia apoi scrise. Eram curios daca merge programul asa a ca l-am pus in codeblocks si nu a rulat. Daca in schimb scriem functiile deasupra lui main inainte ca ele sa fie chemate (asa cum se procedeaza in toate limbajele pe care le-am vazut), programul merge. Intrebarea mea este ce-i cu aceste linii ("declararile"):

int getline(char line[], int max)

int strindex(char source[], char searchfor[]);

Link to comment
Share on other sites

Trebuie sa mai pui un "punct si virgula" dupa prima linie. In C poti sa declari functiile inainte de main, doar ca sa anunti compilatorul ca functiile exista si sa ii spui ce parametri primeste/returneaza, apoi poti sa scrii functiile dupa main. Trebuie ca functiile sa aiba la declarare si la implementare acelasi nume, aceiasi parametri in aceeasi ordine si acelasi tip de date returnat.

E putin ciudat ca tie nu iti merge in codeblocks, lasa-ne un printscreen sa vedem ce si cum...

Link to comment
Share on other sites

Ideea e simpla. Sa presupunem ca scrii o functie: RST() pe care o apelezi in main().

int main()

{

RST();

}

void RST()

{

// Ceva

}

Acest cod iti va da eroare deoarece in main, NU cunoaste functia RST, deoarece nu a fost declarata inca (pe scurt, pentru ca e definita SUB functia main).

Ceea ce poti face insa e ca deasupra functiei main, sa declari PROTOTIPUL functiei RST, urmat de ";".

Adica:

void RST();

int main()

{

RST();

}

void RST()

{

// Ceva

}

Acum compilatorul stie ca tu ai o functie RST, fara parametri, de tip "void".

Asta e ideea.

Link to comment
Share on other sites

Si ca sa fac o adaugare la ceea ce au spus Nytro si TheTime, in prototipul functie trebuie sa declari parametrii, dar este suficient sa declari doar tipul lor:

void RST(int, float);

int main()

{

int a=3;

float b=4.3;

RST(a,B);

return 0;

}

void RST(int x, float y)

{

//codul functiei

}

Link to comment
Share on other sites

Eu am mai mult o sugestie decat o intrebare, nu stiu daca e locul potrivit, imi cer scuze daca am gresit.

Ideea cu academia e chiar foarte buna, studiul in grup e mult mai usor, dar are totusi o lipsa. Ce lipseste sunt teme!

Aplicatii simple in C care le-ar pune mintea la lucru celor care vor sa invete.

De ex: Sa se scrie un program care calculeaza ecuatia de gradul 2: ax^2+bx+c cu a, b, c citite de la tastatura.

Sau..nu stiu..vedeti voi:))

Asta e cel mai bun mod sa intelegi si sa practici ceea ce citesti. Sa scrii cat mai mult cod.

Link to comment
Share on other sites

Am specificat asta aici: https://rstforums.com/forum/72988-rsta-1-c-programming-language.rst

Or sa se faca doar ca nu am timp sa ma ocup si sa caut sau sa concep exercitii. Sunt super ocupat pana pe la sfarsitul lui septembrie si incerc sa imi fac timp si pentru RST dar nu reusesc de fiecare data.

Or sa fie si exercitii.

O sa vorbesc cu nedo sau cineva care stie C sa vad daca poate sa ne ajute cu asa ceva.

De asemenea, sugestiile trebuie puse aici: https://rstforums.com/forum/72777-rst-academy.rst

Asta ca sa tinem threadurile cat mai curate posibil si bine organizate.

Daca aveti sugestii de exercitii, triteti-mi un PM sau dati-mi add la id-ul din semnatura.

Link to comment
Share on other sites

Pentru cei care mai doresc ceva exercitii.

Incercati sa faceti urmatorul programel.

Este vorba de un "joc". Utilizatorul este rugat sa se gandeasca la o cifra intre 0 si x (puteti pune ce cifra maxima doriti in limita unui int).

Dupa care calculatorul v-a incerca sa ghiceasca numarul vostru.

Algoritmul pentru a face asta este relativ simplu.

Calculatorul va imparti x la 2 si va va intreba daca acela este numarul vostru, sau daca este mai mic sau mai mare.

Daca este mai mare, va face diferenta intre numarul ales si maxim, si il va imparti din nou la 2.

Daca este mai mic, il va lua pe acesta si il va imparti la 2.

In mod normal, prin acest algoritm, ar trebui sa va ghiceasca numarul in cel mult 7 incercari.

Ar trebui sa cunoasteti destule despre functii si despre operatiile cu intregi pentru a putea duce la capat un astfel de joculet.

De asemenea sunt sigur ca veti invata si cate ceva din el.

Daca mai aveti nevoie de indicatii, spuneti-mi.

O sa incerc sa mai vin cu alte idei pentru astfel de programele, pentru nivelul la care suntem.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...