Forum » Programiranje » Neznan problem #2 [C]
Neznan problem #2 [C]
RatedR ::
Torej, imam nalogo da spišem funkcijo, ki sprejme parameter tipa int -> vrsta lika, ter parameter tipa double - polmer/stranica lika. Funkcija izračuna obseg določenega lika in izpiše obseg lika na 6 mest natančno.
Problem nastane ko vnašam polmer lika - ko potrdim vnos mi vrže ven default switch stavka.
Če spremenim vse spremenljivke v tip int, mi kodo normalno compila in izvede tako da nevem kaj je narobe.
#include<stdio.h> #define PI 3.141592; double ObsegLika(int vnosLik, float vnosPolmer); int main(void) { printf("Izracun obsega lika\n"); printf("Vnesite: 0 - krog, 1 - kvadrat, 2 - enakostranicni trikotnik: "); int lik; scanf("%d", &lik); printf("\nVnesite polmer lika: "); float polmer; scanf("%lf", &polmer); ObsegLika(lik, polmer); getch(); } double ObsegLika(int vnosLik, double vnosPolmer) { double rezultat1, rezultat2, rezultat3; switch(vnosLik) { case 0: rezultat1 = 2 * vnosPolmer * PI; printf("\nObseg kroga znasa: %f", rezultat1); break; case 1: rezultat2 = (2 * vnosPolmer) * 4; printf("\nObseg kvadrata znasa: %f", rezultat2); break; case 2: rezultat3 = 3 * vnosPolmer; printf("\nObseg enakostranicnega trikotnika znasa: %f", rezultat3); break; default: printf("\nNapacen vnos!"); } }
Problem nastane ko vnašam polmer lika - ko potrdim vnos mi vrže ven default switch stavka.
Če spremenim vse spremenljivke v tip int, mi kodo normalno compila in izvede tako da nevem kaj je narobe.
- spremenilo: RatedR ()
mallard ::
Tvoj program ima nedefirano obnašanje. Pri drugem scanf klicu si v format descriptor napisal, da bos bral float, podal si pa int spremenljivko.
RatedR ::
No to sem popravil a težava ostaja enaka
#include<stdio.h> #define PI 3.141592; double ObsegLika(int vnosLik, float vnosPolmer); int main(void) { printf("Izracun obsega lika\n"); printf("Vnesite: 0 - krog, 1 - kvadrat, 2 - enakostranicni trikotnik: "); int lik; scanf("%d", &lik); printf("\nVnesite polmer lika: "); float polmer; scanf("%lf", &polmer); ObsegLika(lik, polmer); getch(); } double ObsegLika(int vnosLik, double vnosPolmer) { double rezultat1, rezultat2, rezultat3; switch(vnosLik) { case 0: rezultat1 = 2 * vnosPolmer * PI; printf("\nObseg kroga znasa: %f", rezultat1); break; case 1: rezultat2 = (2 * vnosPolmer) * 4; printf("\nObseg kvadrata znasa: %f", rezultat2); break; case 2: rezultat3 = 3 * vnosPolmer; printf("\nObseg enakostranicnega trikotnika znasa: %f", rezultat3); break; default: printf("\nNapacen vnos!"); } }
mallard ::
Pardon. %lf pomeni double, ne float. Popravi še enkrat, compile, ..., profit!
Pa funkcija ObsegLika nič ne vrača, čeprav deklaracija pravi drugače.
Pa funkcija ObsegLika nič ne vrača, čeprav deklaracija pravi drugače.
Zgodovina sprememb…
- spremenilo: mallard ()
RatedR ::
mallard ::
Še enkrat - če je format %lf, mora bit ustrezna spremenljivka (polmer) tipa double (oziroma double*, kar pošiljaš scanf funkciji). Lahko tud delaš s float tipom, ampak potem naj bo format %f. Pa popravi deklaracijo fukcije ObsegLika - drugi parameter ima v deklaraciji tip float, v definiciji pa double.
Zgodovina sprememb…
- spremenilo: mallard ()
RatedR ::
Okej hvala, zdel deluje, mam še kar nekaj nalog pa manjše probleme z razumevanjem osnov...kaj lahko naredim da mi bo šla stvar v glavo?
Naloge z zankami mi grejo slabo, znanje ti lahko preneseš na nekoga...logike pa ne, torej v čem je "skrivnost"?
Naloge z zankami mi grejo slabo, znanje ti lahko preneseš na nekoga...logike pa ne, torej v čem je "skrivnost"?
RatedR ::
videc ::
Se ne bi strinjal s tabo. Pri predmetu "Algoritmi in programski jeziki" se obdela malo morje takšnih zadev. Tudi logiko razmišljanja in kako delajo algoritmi oziroma postopki.
Je pa treba veliko delat tudi doma. Žal.
Je pa treba veliko delat tudi doma. Žal.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Izris lika - idejaOddelek: Programiranje | 3779 (2814) | RatedR |
» | C in računanje kotovOddelek: Programiranje | 6620 (5673) | RatedR |
» | [Python] Pomoč pri računanju Pi-jaOddelek: Programiranje | 2474 (2106) | Spura |
» | [C] Branje iz datotekeOddelek: Programiranje | 1724 (1555) | BigWhale |
» | [c] char zadevaOddelek: Programiranje | 2258 (2056) | TheCyborg |