Prikazujem rezultate 1 do 23 od 23

Tema: pomoc c

  1. #1
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    pomoc c

    pozdrav, moze li mi itko pomoci pa reci gdje je greska u ovom kodu:

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

    int main()
    {
    int MAX=100,vel,i,j,k;
    float A[MAX], B[MAX], C[MAX];
    char op;

    ponovno:
    printf("Unesite velicinu polja:");
    scanf("%d", &vel);

    if(vel>0 && vel<=100){
    for(i=1; i<=vel; i++){
    printf("Unesi A[%d]:", i);
    scanf("%f", &A[i]);
    }
    for(j=1; j<=vel; j++){
    printf("Unesi B[%d]:", j);
    scanf("%f", &B[j]);

    }
    printf("Unesite operaciju:"); //ovdje nastaje greska
    scanf("%c", &op);

    }
    else{
    goto ponovno;
    }


    for(k=1; k<=vel; k++){
    if(op == &#39;+&#39{
    C[k]=A[k]+B[k];
    }
    else if(op == &#39;/&#39{
    C[k]=A[k]/B[k];
    }
    else if(op == &#39;*&#39{
    C[k]=A[k]*B[k];
    }
    else{
    C[k]=A[k]-B[k];
    }
    printf("%.2f\n", C[k]);
    }
    return 0;
    }


    problem je sto mi ne dozvoljava da unesem operaciju koju zelim izvrsiti, nego odma pređe na daljnje izvrsavanje programa.
    Hvala.

    tekst zadatka:

    Napisati program koji će izvršiti elementarnu operaciju nad dva polja decimalnih brojeva. Na početku
    programa korisnik unosi veličinu polja (max 100) te elemente oba polja. Nakon unosa zahtijeva se
    unos operacije koja može biti &#39;+&#39;, &#39;-&#39;, &#39;*&#39; i &#39;/&#39; te se izvrši ta operacija između svaka dva
    odgovarajuća elementa. Rezultat se zapisuje u treće polje, koje se na kraju programa ispisuje.
    Primjer interakcije:
    Unesi broj elemenata: 3
    Unesi A1: 2.1
    Unesi A2: 0
    Unesi A3: 7
    Unesi B1: 1.5
    Unesi B2: 2.2
    Unesi B3: 3
    Odaberi operaciju (+,-,*,/): +
    3.6
    2.2


  2. #2
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: pomoc c

    To je poznati problem koji se dešava kod unosa charactera. Već sam i ja zaboravio što se točno dogodi, možda očita zadnje slovo iz printane rečenice ili nešto tako. Uglavnom, mislim da se ne bi smjelo dešavati ako ga očitaš sa getchar-om, ali najjednostavnije rješenje je da prvo tražiš operaciju pa onda brojeve. Ako baš mora ići tako ko u zadatku da se poslije brojeva unosi operacija, probaj sa getchar naredbom.

  3. #3
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    probao sam postavit i da mi operaciju ocita na pocetku, odma nakon unosa velicine polja, ali ista stvar samo preskoci na sljedeci korak programa, negdje sam izgleda sjebo ali ne vidim gdje XD

  4. #4
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: pomoc c

    Ne, mislio sam da baš taj unos operacije bude prvi input koji se traži od usera.

    I jel radiš u windows ili linux OS-u?

  5. #5
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    radim u windowsu u Code::Blocksu, ok pokusat cu

    EDIT: evo radi sada kad sam stavio da bude prvi input, valjda je bila caka da pokupi neki char po putu =) hvala ti mnogo

  6. #6
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: pomoc c

    Znam da kad sam radio u windowsu da mi je trebala komanda system("pause") da bi program pričekao input. Možeš to probat ako ti ni ovo ne bude radilo.

  7. #7
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    ma kenja nesto ovaj Code::Blocks svako malo, skino sam sada Ubuntu image

  8. #8
    Senior Member Giant leap for forum
    Datum registracije
    Oct 2006
    Lokacija
    Hostile universe
    Postova
    3.468

    Re: pomoc c

    Dio tekstaSkoji sam pisao za svoje studente objašnjava tu pojavu i rješenje, možda će ti biti od pomoći.

  9. #9
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    = Citat = Izvorno postao Burek_fr0m_SPACE
    Dio tekstaSkoji sam pisao za svoje studente objašnjava tu pojavu i rješenje, možda će ti biti od pomoći.
    svakako ce pomoci, hvala

  10. #10
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    ok imam novi problem s jednim zadatkom, pa ako netko ima vremena neka baci oko :
    kod:

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

    void unos(int *red, int *stupac, float *polje)
    {
    int x,y;
    float matrica[*red][*stupac];


    for(x=0; x<*red; x++){
    for(y=0; y<*stupac; y++){
    printf("Unesite element matrice [%d]:[%d]=\n", x,y);
    scanf("%f", &matrica[x][y]);
    }
    }
    for(x=0; x<*red; x++){
    for(y=0; y<*stupac; y++){
    polje[x]+=matrica[x][y];
    }
    }

    }
    void prosjek(float *polje,float *ar, int *stupac, int *red)
    {
    int x;

    for(x=0; x<*red; x++){
    ar[x]= polje[x]S/ *stupac;
    }
    for(x=0; x<*red; x++){
    printf("%f", ar[x]);
    }
    }
    void main(){

    int red;
    int stupac;
    float polje[100];
    float ar;
    ponovno:
    printf("Unesite broj redaka:");
    scanf("%d", &red);
    printf("Unesite broj stupaca:");
    scanf("%d", &stupac);
    if((red&&stupac)>0 && (red&&stupac)<100){
    unos(&red, &stupac, &polje[100]);
    }
    else {
    printf("Pogrešan unos, pokušajte ponovno!\n");
    goto ponovno;
    }
    prosjek(&polje[100], &ar, &stupac, &red);
    }


    tekst zadatka:

    Napisati funkciju unos koja će popuniti zadanu realnu matricu.
    Napisati funkciju sredina koja vraća aritmetičku sredinu zadanog 1D polja realnih brojeva.
    Napisati program u kojemu korisnik unosi željenu veličinu matrice (napraviti provjeru ispravnosti
    unesenih brojeva). Zatim se korištenjem funkcije unos upisuju svi elementi u matricu. Korištenjem
    funkcije sredina se na koncu ispišu aritmetičke sredine svakog od redaka unesene matrice.



    Problem nastaje kada se treba izvrsiti funkcija sredina.
    Hvala.

  11. #11
    Senior Member Small step for mankind
    Datum registracije
    Apr 2006
    Lokacija
    Area 51 - talking to Helios
    Postova
    2.357

    Re: pomoc c

    Code:
    void main(){
    
    int red;
    int stupac;
    float polje[100];
    float ar;
    ponovno:
    printf("Unesite broj redaka:");
    scanf("%d", &red);
    printf("Unesite broj stupaca:");
    scanf("%d", &stupac);
    if((red&&stupac)>0 && (red&&stupac)<100){
    unos(&red, &stupac, &polje[100]);
    }
    else {
    printf("Pogrešan unos, pokušajte ponovno!\n");
    goto ponovno;
    }
    /************************/
    prosjek(&polje[100], &ar, &stupac, &red);
    /************************/
    }
    Prenosis u funkciju adresu iza zadnjeg elementa polja.

    trebalo bi radit sa:

    prosjek(polje, &ar, &stupac, &red);
    ako te buni zasto ne pise & ispred polja moze se i klasicno
    prosjek(&polje[0], &ar, &stupac, &red);

    Moja preporuka je takodjer izbjegavaj goto jer cini kod jako necitkim, i malo smanji sa prijenosima pointera u funkcije (npr, nemoras slat adrese retka i stupca jer ih funkcija ionako ne mjenja)

    Nadam se da sam bio od pomoci
    A.K.A 7h30n
    = Citat = Izvorno postao Terran Marine
    It says press any key....but which one's the any key?!

  12. #12
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    = Citat = Izvorno postao Teon
    Prenosis u funkciju adresu iza zadnjeg elementa polja.

    trebalo bi radit sa:

    prosjek(polje, &ar, &stupac, &red);
    ako te buni zasto ne pise & ispred polja moze se i klasicno
    prosjek(&polje[0], &ar, &stupac, &red);

    Moja preporuka je takodjer izbjegavaj goto jer cini kod jako necitkim, i malo smanji sa prijenosima pointera u funkcije (npr, nemoras slat adrese retka i stupca jer ih funkcija ionako ne mjenja)

    Nadam se da sam bio od pomoci
    hvala ti, sada barem izbacuje neku vrijednost, ali ona nije tocna . Goto koristim jer mi je u takvim slucajevima jednostavniji nego petlja.
    Ovo s prijenosima pointera te nisam razumio, jer se zeljeni broj redaka i stupaca unosi u funkciji main, a potreban mi je i u funkciji unos i prosjek, tako da ne razumijem kako smanjiti to?

  13. #13
    Senior Member Small step for mankind
    Datum registracije
    Apr 2006
    Lokacija
    Area 51 - talking to Helios
    Postova
    2.357

    Re: pomoc c

    Umjesto npr funkcije

    Code:
    void unos(int *red, int *stupac, float *polje)
    Slozis funkciju:

    Code:
    void unos(int red, int stupac, float *polje)
    Unutar funkcije nemoras pisati zvjezdice uz ime varijable, a kad joj predajes argumente (pozivas funkciju)

    pises umjesto

    Code:
    unos(&red, &stupac, &polje[100]);
    I sad skuzio i tu je greska,

    Code:
    unos(red, stupac, polje);
    Edit: Eh, treba malo vise prostudirat kod, jos jedna greska: aritmeticku sredinu spremas kao polje no na pocetku maina ar nije deklariran kao polje nego samo

    float ar

    Stavis da je: float ar[neki_broj]

    te onda u pozivu prenosis:
    prosjek(polje, ar, &stupac, &red);
    A.K.A 7h30n
    = Citat = Izvorno postao Terran Marine
    It says press any key....but which one's the any key?!

  14. #14
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    aha sad sam skontao, znaci samo promjenjive varijable pisem s *, thx. Kod jos uvijek ne radi, pokusat cu ga sada sredit.
    Hvala ti za pomoc

  15. #15
    Senior Member Small step for mankind
    Datum registracije
    Apr 2006
    Lokacija
    Area 51 - talking to Helios
    Postova
    2.357

    Re: pomoc c

    Ok, sad sam provjerio kod sebe.

    Imas gresku prilikom unosa (u funkciji unos).

    Code:
    for(x=0; x<*red; x++)
    {
           for(y=0; y<*stupac; y++)
           {
                  polje[x]+=matrica[x][y];
            }
    }
    u polje prenosis polje + matricu.

    U mainu kada deklariras varijablu

    Code:
    float polje[100]
    Su njoj se nalaze neke vrijednosti koje su zatecene prilikom alociranja potrebne memorije za polje

    trebao bi polje inicijalizirati na nulu

    Code:
    float polje[100]S= {0};
    to ce stavit sve clanove polja na nulu pa ce ono gore zbrajanje u funkciji unos funkcionirati.

    Sad sve daje tocno rjesenje, no potkrala ti se jedna cesta pogreska:

    if uvjet ti ne radi.

    Probaj unijeti red 100.

    pise:
    Code:
    if ( (red&&stupac)>0 && (red&&stupac)<100 )
    Naime u c-u ti je sve osim nule "true". Za primjer 100 bi se if izvrsio ovako

    if ( ( 100 && stupac) > 0 && ( 100 && stupac) < 100 )

    100 && stupac daju 1 ukoliko stupac nije 0, 1 je vece od nule i 1 je manje od 100 pa ce if proc iako si "tehnicki limitirao da redak mora biti manji od 100.

    Probaj sa:

    Code:
    if ( red*stupac > 0 && red*stupac < 100 );
    Moras uzet u obzir da je matrica dvodimenzionalna. Matrica sa retcima 100 i stupcima 100 je ekvivalnetna jednodim. polju od 100*100 = 10,000 elemenata sto prekoracuje tvoj limit.

    BTW Ovo radis samouko ili u skoli ucite ovo gradivo?
    A.K.A 7h30n
    = Citat = Izvorno postao Terran Marine
    It says press any key....but which one's the any key?!

  16. #16
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    ma ucimo to na faksu, ali sam tolko zaostao a sada moram sve nadoknadjivat jebiga, a previse informacija u kratkom vremenu nije dobro , sad sam zapeo na tim funkcijama, moram jos nizove,dinamicku alokaciju memorije, i rad s datotekama =) happy times.

  17. #17
    Senior Member Small step for mankind
    Datum registracije
    Apr 2006
    Lokacija
    Area 51 - talking to Helios
    Postova
    2.357

    Re: pomoc c

    Ajme

    Koj je to fax?

    Se mislis inace bavit programiranjem ili to samo da kolegij izduras?

    Ono, pitam da znam s kolko informacija da te zatrpavam.
    A.K.A 7h30n
    = Citat = Izvorno postao Terran Marine
    It says press any key....but which one's the any key?!

  18. #18
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: pomoc c

    Inače, * se koristi kod pointera (pokazivača), dakle ako varijabla sadrži adresu druge varijable, pa da očita vrijednost sa adrese sadržane u prvoj varijabli.

  19. #19
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    ma samo za prolaz kolegija, elektrotehnika je u pitanju. Dosta mi programiranja nakon ova 2 mjeseca za narednih par godina

  20. #20
    Senior Member You have been warned cham3leon's Avatar
    Datum registracije
    Oct 2007
    Lokacija
    Rijeka
    Postova
    18.414

    Re: pomoc c

    Tehnički fax u Rijeci? Znam da tu elektrotehničari imaju programiranje u 3. bloku. Ako ti treba neke kompliciranije stvari, nastavit ću sa tutorialom koji je negdje u Programiranju i izradi igara.

  21. #21
    Senior Member Respawned sorcerer
    Datum registracije
    Jun 2009
    Postova
    1.030

    Re: pomoc c

    da, s tutorialom svakako nastavi za buduce generacije ''programera'', ali ja imam jos par dana da pokusam pohvatat nesto informacija pa da uspijem rijesit dva zad na kolokviju, te se izborit za popravni kolokvij iz prvog dijela gradiva koje sam sada dosta dobro savladao

    blokovi , tko ih izmisli

  22. #22
    Senior Member Small step for mankind
    Datum registracije
    Apr 2006
    Lokacija
    Area 51 - talking to Helios
    Postova
    2.357

    Re: pomoc c

    Pointere najlakse skuzis tak da slozis dve funkcije, jedna koja ima pointer kao argument a druga koja nema pa ispises rezultat nakon svake

    Nesto tipa:


    void prva( int x)
    {
    x += 2;
    printf("\n%d ", x);
    }

    void druga( int *x)
    {
    *x += 2;
    printf("\n%d ", *x);
    }

    int main()
    {
    int x = 4;

    printf("%d", x);

    prva(x);
    printf("%d", x);

    druga(&x);
    printf("%d", x);

    return 0;
    }



    Ako te jos kaj muci, samo pitaj.
    A.K.A 7h30n
    = Citat = Izvorno postao Terran Marine
    It says press any key....but which one's the any key?!

  23. #23
    Senior Member Giant leap for forum
    Datum registracije
    Oct 2006
    Lokacija
    Hostile universe
    Postova
    3.468

    Re: pomoc c

    = Citat = Izvorno postao Teon
    Pointere najlakse skuzis tak da slozis dve funkcije
    <preserans> Ili još bolje - kada skužiš zašto je u C-u a[b]Sisto što i b[a]S </preserans>

Slične teme

  1. pomoc!!!
    By SiNO22 in forum Pomagaj brate!
    Odgovora: 5
    Posljednji post: 29-05-2008, 20:23
  2. pomoc SA
    By dvdaerox in forum Pomagaj brate!
    Odgovora: 2
    Posljednji post: 09-12-2007, 17:15
  3. pomoc
    By star in forum Pomagaj brate!
    Odgovora: 8
    Posljednji post: 05-10-2006, 19:34

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •