enisz Posted December 12, 2007 Share Posted December 12, 2007 Hali! Egy kis segítség kéne nekem. Már nagyon régen tanultam programozást (tavaly) akkor is meghúztak belőle, pedig érdekel... szal most elővettem megint, és szeretnék írni egy kisebb számoló programot, ami először bekéri a számokat, majd egy műveleti jelet, és kiíratja az egészet. Az eleje meg is van, csak a végén az elágazások nem mennek. Önerőből eddig jutottam: (ja és BorlandC nevezetű programot használom) #include "getnum.c" main(){ int a,b,c; clrscr(); printf("Kérem az első számot: "); a=getnum(); printf("Kérem a második számot: "); b=getnum(); printf("\n---------------------------"); printf("\nAdj meg egy műveleti jelet: "); c=getchar(); printf("\n"); if(c="+") printf("%5d\n+%4d\n-----\n%5d",a,b,a+b); else if(c="-") printf("%5d\n-%4d\n-----\n%5d",a,b,a-b); else if(c="*") printf("%5d\n*%4d\n-----\n%5d",a,b,a*b); else if(c="/") printf("%5d\n/%4d\n-----\n%5d",a,b,a/b); else printf("Nem műveleti jelet adtál meg!"); getch(); } Az elején van egy hivatkozás a getnum.c-re, ezt még a programozás tanáromtól kaptam tavaly. Ha kell, ezt is be tudom majd linkelni. Na most ennek a programnak valahogy így kéne kinézni: Eddig stimmel is a dolog, és ezt szerettem volna. De ha mondjuk kivonást szeretnék, akkor is az összeadás ág fut le: Vagy ha mondjuk egy érvénytelen karaktert adok be, mondjuk egy sima "a" betűt, akkor azt kéne visszaadnia, hogy "Nem műveleti jelet adtál meg!". Ehelyett lefuttatja az összeadás ágat: Tudom, hogy elég láma kérdés, de tényleg nagyon régen tanultam már, anyagom sincs hozzá. Én úgy érzem, hogy valahol az if() függvényt rontottam el, csak nem tudom, hogy hol :S Ha valaki tud segíteni egy kicsit, azt nagyon megköszönném Idézés Link to comment Share on other sites More sharing options...
Markeee Posted December 21, 2007 Share Posted December 21, 2007 Adj Borland C-t és getnum.c-t és megnézem, de szerintem az elsevel van baj. Idézés Link to comment Share on other sites More sharing options...
SixHouse Posted December 21, 2007 Share Posted December 21, 2007 Heeeelóóóóóóóóó! Én igy csinálnám, mert ezzel nem látom mi lehet a baj : switch( c ) { case '+': { printf("%d%c%d=%d\n",a,c,b,a+b );break; } case '-': { printf("%d%c%d=%d\n",a,c,b,a-b );break; } case '*': { printf("%d%c%d=%d\n",a,c,b,a*b );break; } case '/': { printf("%d%c%d=%d\n",a,c,b,a/b );break; } default:printf("Nem megfelelő műveleti jel\n"); } Idézés Link to comment Share on other sites More sharing options...
enisz Posted December 22, 2007 Author Share Posted December 22, 2007 üdv! először is köszi másodszor feltöltöttem borlandc-t rapidshare-re (~2,7 mega) Törölve rarpass nincs. a getnum.c benne van a gyökér könyvtárban és nekünk a tanár azt mondta, hogy ez csak a c:\borlandc mappában műxik, mert hogy úgy van konfigurálva Idézés Link to comment Share on other sites More sharing options...
Pörköltszaft Posted December 22, 2007 Share Posted December 22, 2007 if(c="+") printf("%5d\n+%4d\n-----\n%5d",a,b,a+b); else if(c="-") printf("%5d\n-%4d\n-----\n%5d",a,b,a-b); else if(c="*") printf("%5d\n*%4d\n-----\n%5d",a,b,a*b); else if(c="/") printf("%5d\n/%4d\n-----\n%5d",a,b,a/b); else printf("Nem műveleti jelet adtál meg!"); Én is régen nyomtam már C-t, de nem ugy kell hogy if (c=="+") ... ? tehát a "=" jeleket sztem duplázd meg mert igy értéket adsz, "==" pedig vizsgálja hogy egyenlő-e (bár nem tudom hogy a Borland C hogy csinálja, de elvileg szabvány lenne sztem).. Idézés Link to comment Share on other sites More sharing options...
enisz Posted December 22, 2007 Author Share Posted December 22, 2007 én is régen c-ztem már, azért kértem segítséget köszi a tippet, ki is próbálom Idézés Link to comment Share on other sites More sharing options...
anntty Posted December 28, 2007 Share Posted December 28, 2007 Lenne nekem is egy további észrevételem, a c-ben a " jel a stringet jelöli, a getchar függvénnyel pedig karaktert olvastok, a karaktereket viszont a szimpla aposztrof jellel kell írni, (legalábbis ez a szabvány). Csatlakozom az előttem szólóhoz az = jeleket illetően, az összehasonlításra a == használt, tehát helyesen: if ( c == '+' ) ... Idézés Link to comment Share on other sites More sharing options...
enisz Posted December 28, 2007 Author Share Posted December 28, 2007 rendben, köszönöm szépen mint mondtam, már nagyon régen c-ztem, és akkor sem ment valami fényesen Idézés Link to comment Share on other sites More sharing options...
seekoly Posted Január 5, 2008 Share Posted Január 5, 2008 és mivan, ha a paraszt 12548 helyett azt írja be egy számnak, hogy "asdf"? Vagy mi történik, ha osztásnál 0-val akar osztani? + az is kérdés, hogy te csak egész osztást akarsz végezni? A te programod szerint ugyanis 3/2 = 1 vmelyest ésszerűbb lenne így csinálni: #include <stdio.h> int main( void ) { int a, b; char muv; printf( "A kifejezes (pl: 1+2): " ); if( scanf( "%d%c%d", &a, &muv, &b ) != 3 ) { puts( "Hibas adat!" ); return -1; } switch( muv ) { case '+' : printf( "%d + %d = %d\n", a, b, a + b ); break; case '-' : printf( "%d - %d = %d\n", a, b, a - b ); break; case '*' : printf( "%d * %d = %d\n", a, b, a * b ); break; case '/' : b != 0 ? printf( "%d / %d = %.4f\n", a, b, (double)a / (double)b ) : puts( "ERROR!" ); break; default : puts( "Ismeretlen muvelet!" ); } return 0; } A következő szint: (nem teljesen zárójelezett) infix kifejezés kiértékelése + windows alatt lassan ideje lenne már elfelejteni a Borland-ot! Idézés Link to comment Share on other sites More sharing options...
SixHouse Posted Január 5, 2008 Share Posted Január 5, 2008 és mivan, ha a paraszt 12548 helyett azt írja be egy számnak, hogy "asdf"? Gondolom erre van neki a "getnum" függvénye! Idézés Link to comment Share on other sites More sharing options...
enisz Posted Január 5, 2008 Author Share Posted Január 5, 2008 őszintén szólva, nekem még ennyire nem megy a programozás... egy sima if függvényt sem tudok hiba nélkül megírni a programozás nálunk csak második féléves tantárgy, és ezt is magánszorgalomból próbálgattam... Idézés Link to comment Share on other sites More sharing options...
seekoly Posted Január 6, 2008 Share Posted Január 6, 2008 Gondolom erre van neki a "getnum" függvénye! getchar()-t olvastam... Habár az implementációt még ígysem látom őszintén szólva, nekem még ennyire nem megy a programozás... egy sima if függvényt sem tudok hiba nélkül megírni a programozás nálunk csak második féléves tantárgy, és ezt is magánszorgalomból próbálgattam... ezzel csak annyi a probléma, hogy az if-else nem függvény, hanem egy kétirányú elágaztató utasítás (feltételes utasítás) Idézés Link to comment Share on other sites More sharing options...
enisz Posted Január 6, 2008 Author Share Posted Január 6, 2008 na tessék Idézés Link to comment Share on other sites More sharing options...
SixHouse Posted Január 6, 2008 Share Posted Január 6, 2008 Amugy sztem használj inkább turbo c -t vagy dev c++ -t ? Jobban jársz! Idézés Link to comment Share on other sites More sharing options...
enisz Posted Január 6, 2008 Author Share Posted Január 6, 2008 igazság szerint nem rajtam múlik, suliban nekünk borlandc-vel tanítanak Idézés Link to comment Share on other sites More sharing options...
seekoly Posted Január 6, 2008 Share Posted Január 6, 2008 azzal nincsen semmi gond, csak kérdéses h milyen platform alatt! DOS alatt pl. tökéletes a borland c és a turbo c! (elvégre mindkettő borland termék.) A DevCpp azonban tényleg egy jól kezelhető IDE a pár száz/ezer/esetleg nagyobb programokhoz! Idézés Link to comment Share on other sites More sharing options...
Gabi89 Posted November 11, 2008 Share Posted November 11, 2008 (edited) Na nekem lenne is egy kérdésem.Szóval a feladat,hogy csinálni kell egy számológépet amely tudja a 4alapműveletet és kilehessen választani "menübő"l ezt a 4alapműveletet.Meg is valósítottam ezt "if-es" módszerrel de amikor beírom a műveleti jelet a program hibát hajt végre és kilép :S "Swith-es" módszerrel tökéletes viszont :S # include <stdio.h> int main() { double a=0, b=0, c=0; char jel; printf("Valassz: + | - | * | / : "); scanf("%c",jel); printf("Elso szam erteke: "); scanf("%lf",&a); printf("Masodik szam erteke: "); scanf("%lf",&b); if (jel == '+') { c=a+b; } else if (jel == '-') { c=a-b; } else if (jel == '*') { c=a*b; } else if (jel == '/') { c=a/b; } else { printf ("Rossz karaktert adtal meg.\n"); } printf("\n\nAz eredmeny %lf %c %lf = %lf" ,a,jel,b,c); getch(); return 0; } Edit:Na közben rájöttem Ha a scanf után %d -t írok %c helyett akkor jó Edit2: Így jó is lenne csak bármilyen számítást végez el képest kiírni,hogy rossz karaktert adtam meg :S Bocsi a lámulásért nem rég kezdtük el a programozást. Módosította November 11, 2008 Gabi89 Idézés Link to comment Share on other sites More sharing options...
Pörköltszaft Posted November 11, 2008 Share Posted November 11, 2008 Nem vagyok benne biztos, hogy ez lesz a baja, de a scanf("%c",jel); sorban a jel elől nem hagytad ki a & jelet? Idézés Link to comment Share on other sites More sharing options...
Gabi89 Posted November 11, 2008 Share Posted November 11, 2008 Na ez volt a baj beírtam a vessző után & jelet és tökéletes Köszönöm szépen :) Idézés Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.