Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi

[ Pregleda: 6896 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandar Gajic
Belgrade

Član broj: 126684
Poruke: 29
*.static.ikomline.net.



Profil

icon [Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi08.04.2008. u 15:13 - pre 195 meseci
Dobio sam u skoli neki malo "komplikovaniji" zadatak, odnosno veoma je jednostavan, samo sto ima 15-ak kombinacija, a njegova svrha je da izracuna impedansu otpornika, kalema i kondenzatora u bilo kakvoj vezi, u zavisnosti od toga sta korisnik odabere. Ima dosta "if"ova, a nisam koristio swich-case zasto sto to jos uvek nismo radili zvanicno u skoli.
Evo u cemu je problem:
Program startuje normalno, i sve tece normalno do prvog if-a. Kada skeniram da li se koristi otpornik kalem i kondenzator i odgovorim na postavljena pitanja sa "DA" ili "NE", umesto da u skladu sa odgovorima program nastavi da vrsi predvidjene operacije, on odlazi na kraj i ispisuje da je impedansa 0.00000 i zatvara se.
Mozete li mi skrenuti paznju gde je greska i kako da je ispravim?

Mala napomena: Program nije potpuno zavrsen, ali problem ne bi trebalo da se javlja. Napisane su formule samo za par slucajeva, ali problem nastaje jos ranije, tako da ga nisam zavrsavao...

Kompajler je Turbo C


A evo i programa:
Code:

#include <stdio.h>
#include <math.h>
main()
{
    /*Deklaracija*/
    float r,l,c,z;
    char ur[5], ul[5], uc[5], rp;
    int test;
    /*Unosenje otpornosti, induktivnosti i kapacitivnosti*/
    printf ("\nUnesite otpornost otpornika. Ukoliko otpornik nije potreban unesite samo nulu:");
        scanf ("%f", &r);
    printf ("Unesite induktivnost kalema Ukoliko kalem nije potreban unesite samo nulu:");
        scanf ("%f", &l);
    printf ("Unesite kapacitivnost kondenzatora Ukoliko kondenzator nije potreban unesite samo nulu:");
        scanf ("%f", &c);
    
    /*Upitnik za izbor elemenata*/
    /*Otpornik*/
    printf ("Da li ce u zadatku biti koriscen otpornik? \n (Odgovorite sa DA ili NE, velikim slovima!)");
        scanf ("%s", &ur);
    /*Kalem*/
    printf ("Da li ce u zadatku biti koriscen kalem? \n (Odgovorite sa DA ili NE, velikim slovima!");
        scanf ("%s", &ul);
    /*Kondenzator*/
    printf ("Da li ce u zadatku biti koriscen kondenzator? \n (Odgovorite sa DA ili NE, velikim slovima!");
        scanf ("%s", &uc);

    /*Testiranje unetih odgovora iz upitnika*/
        /*Ako su za zadatak potrebni i otpornik i kalem i kondenzator, ispitujemo sve moguce kombinacije veza za sva 3 elementa*/
        if (ul=="DA" && ur=="DA" && uc=="DA")
        {
            printf ("Ako su otpornik, kalem i kondenzator redno vezani unesite '1'.");
            printf ("Ako su otpornik, kalem i kondenzator paralelno vezani unesite '2'.");
            printf ("Ako su paralelno vezani otpornik i kalem, povezani redno sa kondenzatorom unesite '3'.");
            printf ("Ako su redno vezani otpornik i kalem, povezani paralelno sa kondenzatorom unesite '4'.");
            printf ("Ako su paralelno vezani otpornik i kondenzator, povezani redno sa kalemom unesite '5'.");
            printf ("Ako su redno vezani otpornik i kondenzator, povezani paralelno sa kalemom unesite '6'.");
            printf ("Ako su paralelno vezani kalem i kondenzator, povezani redno sa otpornikom unesite '7'.");
            printf ("Ako su redno vezani kalem i kondenzator, povezani paralelno sa otpornikom unesite '8'.");
                scanf ("%i",&test);
                 if (test==1)
                     z=sqrt(pow(r,2)+pow((2*M_PI*100*l),2)+pow((1/(2*M_PI*100*c)),2));
                 if (test==2)
                     z=2;
                 if (test==3)
                     z=3;
                 if (test==4)
                     z=4;
                 if (test==5)
                     z=5;
                 if (test==6)
                     z=6;
                 if (test==7)
                     z=7;
                 if (test==8)
                     z=8;
        }
        /*Ako su nam za zadatak potrebni samo otpornik i kalem, ispitujemo da li je u pitanju redna ili paralelna veza*/
        if (ur=="DA" && ul=="DA" && uc=="NE")
        {
            printf ("Da li su otpornik i kalem vezani redno ili paralelno? \n (Unesite 'R' za rednu ili 'P' za paralelnu vezu, obavezno velikim slovima!)");
            scanf ("%c", &rp);
            if (rp=='R')
                /*Redna veza otpornika i kalema*/
                z=sqrt(r*r+(100*M_PI*l)*(100*M_PI*l));
            if (rp=='P')
                /*Paralelna veza otpornika i kalema*/
                z=r*100*M_PI*l/(r+100*M_PI*l);
        }
        if (ur=="DA" && ul=="NE" && uc=="DA")
        {
            printf ("Da li su otpornik i kondenzator vezani redno ili paralelno? \n (Unesite 'R' za rednu ili 'P' za paralelnu vezu, obavezno velikim slovima!)");
            scanf ("%c", &rp);
            if (rp=='R')
                /*Redna veza otpornika i kondenzatora*/
                z=sqrt(r*r+(1/pow((100*M_PI*c),2)));
            if (rp=='P')
                /*Paralelna veza otpornika i kondenzatora*/
                z=r*1/(100*M_PI*c)/(r+(1/(100*M_PI*c)));
        }
        if (ur=="NE" && ul=="DA" && uc=="DA")
        {
            printf ("Da li su kalem i kondenzator vezani redno ili paralelno? \n (Unesite 'R' za rednu ili 'P' za paralelnu vezu, obavezno velikim slovima!)");
            scanf ("%c", &rp);
            if (rp=='R')
                /*Redna veza kalema i kondenzatora*/
                z=1;
            if (rp=='P')
                /*Paralelna veza kalema i kondenzatora*/
                z=1;
        }
    printf ("Impedansa za unete podatke je: %f", z);
return 0;
}
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: [Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi08.04.2008. u 15:24 - pre 195 meseci
Citat:

if (ul=="DA" && ur=="DA" && uc=="DA")

Ovo (na više mesta u tvom kodu) neće da radi ono što si očekivao.

Poređenje možeš da radiš recimo funkcijama strcmp(), strncmp(), strcmpi() ili strncmpi(). Pogledaj u Helpu tačan opis i sintaksu. Uglavnom, ova zadnja je case insensitive.

Dakle, treba otrpilike ovako:

#include <string.h>
// ...
if ( strncmpi( ul, "da", 2) && strncmpi( ur, "da", 2) && strncmpi( uc, "da", 2) )

 
Odgovor na temu

Aleksandar Gajic
Belgrade

Član broj: 126684
Poruke: 29
*.static.ikomline.net.



Profil

icon Re: [Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi08.04.2008. u 20:41 - pre 195 meseci
Steta sto nisam nasao sintaksu na srpskom, jer me je mrzelo da citam ona opsirna objasnjenja na engleskom, a nemam neku knjigu u kojoj bih mogao da pogledam to...
 
Odgovor na temu

arandjel88
nezaposlen
novisad

Član broj: 180307
Poruke: 5
*.static.sbb.rs.



Profil

icon Re: [Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi10.05.2008. u 18:14 - pre 193 meseci
pokusaj sa funkcijom int izbor(int) pa navedi sve slucajeve po brojevima i onda u zavisnosti od return iz izbora biraj odgovarajucu funkciju
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Izracunavanje impedanse otpornika, kalema i kondenzatora u bilo kakvoj vezi

[ Pregleda: 6896 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.