WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 05.03.2002, 15:13   #1
coolbininet
Hero
 
Registriert seit: 19.09.2001
Alter: 46
Beiträge: 859


coolbininet eine Nachricht über AIM schicken coolbininet eine Nachricht über Yahoo! schicken
Unglücklich QuellCode, ich hasse, dass ich C/C++ oder die Logik noch nicht gut durchschaue!

@all

Kann mir bitte jemand helfen, habe folgendes Programm zusammen gebastelt, es soll umbedingt mit if und else gelöst werden (kein Case oder andere Hilfsmittel) ich habe das Struktogramm gemacht, da schien es mit einem Schreibtischtest zu funken, aber als ich dann das C/C++ Programm dazu tippselte, funkt es nicht!

Zur Erklärung: Es sollen drei Zahlen eigelesen werden und dann die größte ausgegben werden. Die größte kann jetzt sein, die erste, die zweite, die dritte aber es können auch gleichgrosse vorkommen oder alle drei gleich gross sein: Der Source der im C/C++ nicht aber lt. Schreibtischtest und Struktogramm funkt! Ich glaube, ich habe mich mit den If's und Else's vertan brauche diese aber unbedingt:

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

void main ()
{
int a,b,c;

printf ("(A)Erste Zahl eingben: ");
scanf ("%d",&a);
printf ("(B)Zweite Zahl eingben: ");
scanf ("%d",&b);
printf ("(C)Dritte Zahl eingben: ");
scanf ("%d",&c);
if (a=b=c)
printf ("Die erste Zahl %d und die zweite Zahl %d und die dritte Zahl %d sind gleich gross!",a,b,c);
else
if (a>b);
if (a>c);
printf ("Die Zahl %d ist die groesste Zahl",a);
else
if (a=c);
printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,c);
else
printf ("Die Zahl %d ist die groesste",c);
else
if (a=b);
printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,b);
else
if (c>b)
printf ("Die Zahl %d ist die groesste Zahl",c);
else
if (c=b)
printf ("Die Zahl %d und die Zahl %d sind gleich groß",b,c);
else
printf ("Die Zahl %d ist die groesste Zahl",b);

}

Brauche das noch heute am Abend für das Kolleg Spengergasse und bin wirklich im Zeitstress!

Mit freundlichen Grüßen

Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst!
Website RI

Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden.

|Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker|

If you want to see the Sky, fuck a Duck and learn to fly!

Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten!

Möge die MACHT mit uns sein!
coolbininet ist offline   Mit Zitat antworten
Alt 05.03.2002, 15:23   #2
batigol1860
Veteran
 
Registriert seit: 20.12.2000
Alter: 51
Beiträge: 383


batigol1860 eine Nachricht über ICQ schicken
Standard

Der Vergleichsoperator ist "==" nicht "=" !!!

Du machst hier keinen Vergleich der Variablen, du weist hier etwas zu.
Ach ja, und der Strichpunkt hinter jedem if gehört dort auch nicht hin, wie es ausschaut.

Viel Erfolg,
Batigol
batigol1860 ist offline   Mit Zitat antworten
Alt 05.03.2002, 15:30   #3
coolbininet
Hero
 
Registriert seit: 19.09.2001
Alter: 46
Beiträge: 859


coolbininet eine Nachricht über AIM schicken coolbininet eine Nachricht über Yahoo! schicken
Frage Frage konkretisiert!

@batigol1860

Aber die Logik, kann die wenigstens stimmen?

mfg

Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst!
Website RI

Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden.

|Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker|

If you want to see the Sky, fuck a Duck and learn to fly!

Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten!

Möge die MACHT mit uns sein!
coolbininet ist offline   Mit Zitat antworten
Alt 05.03.2002, 15:57   #4
wizo
Inventar
 
Registriert seit: 13.12.1999
Alter: 43
Beiträge: 2.929


wizo eine Nachricht über ICQ schicken
Standard

das mit den 2 if anweisungen ist auch net richtig glaub ich
solltest durch ein and verbinden
und warum verwendest nicht elseif?
das macht das ganze übersichtlicher und kürzer
____________________________________
//---< wizo >---\\\\
wizo ist offline   Mit Zitat antworten
Alt 05.03.2002, 16:00   #5
Stingerr
Senior Member
 
Registriert seit: 05.11.2000
Beiträge: 114


Stingerr eine Nachricht über ICQ schicken
Blinzeln jaja...

hinter if den strichpunkt weg!
schreib %i statt %d -> Integer
____________________________________
\"imagination is more important than knowledge\"
Albert Einstein

\"er ist tot jim\"
Stingerr ist offline   Mit Zitat antworten
Alt 05.03.2002, 16:18   #6
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard Re: QuellCode, ich hasse, dass ich C/C++ oder die Logik noch nicht gut durchschaue!

Zitat:
Original geschrieben von COOLBININET
@all

Kann mir bitte jemand helfen, habe folgendes Programm zusammen gebastelt, es soll umbedingt mit if und else gelöst werden (kein Case oder andere Hilfsmittel) ich habe das Struktogramm gemacht, da schien es mit einem Schreibtischtest zu funken, aber als ich dann das C/C++ Programm dazu tippselte, funkt es nicht!

Zur Erklärung: Es sollen drei Zahlen eigelesen werden und dann die größte ausgegben werden. Die größte kann jetzt sein, die erste, die zweite, die dritte aber es können auch gleichgrosse vorkommen oder alle drei gleich gross sein: Der Source der im C/C++ nicht aber lt. Schreibtischtest und Struktogramm funkt! Ich glaube, ich habe mich mit den If's und Else's vertan brauche diese aber unbedingt:

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

void main ()
{
int a,b,c;

printf ("(A)Erste Zahl eingEben: ");
scanf ("%d",&a);
printf ("(B)Zweite Zahl eingEben: ");
scanf ("%d",&b);
printf ("(C)Dritte Zahl eingEben: ");
scanf ("%d",&c);

// falsch, richtig ist: if(a==b && b==c)

if (a=b=c)
printf ("Die erste Zahl %d und die zweite Zahl %d und die dritte Zahl %d sind gleich gross!",a,b,c);
else
if (a>b);
if (a>c);
printf ("Die Zahl %d ist die groesste Zahl",a);
else
if (a=c); // ohne ; if(a==c)
printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,c);
else
printf ("Die Zahl %d ist die groesste",c);
else

// falsch, richtig ist: if(a==b) ! und ohne ; überall sonst bei if(bedingung) auch (=EBENSO) ohne ;

if (a=b); // detto ; ==
printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,b);
else
if (c>b)
printf ("Die Zahl %d ist die groesste Zahl",c);
else
if (c=b) // usw.
printf ("Die Zahl %d und die Zahl %d sind gleich groß",b,c);
else
printf ("Die Zahl %d ist die groesste Zahl",b);

}

Brauche das noch heute am Abend für das Kolleg Spengergasse und bin wirklich im Zeitstress!

Mit freundlichen Grüßen

Coolbininet
Es gibt kein elseif, es gibt nur ein else + if(bedingung) anweisung;
kikakater ist offline   Mit Zitat antworten
Alt 05.03.2002, 16:27   #7
Sonic
Master
 
Registriert seit: 28.03.2000
Alter: 45
Beiträge: 691


Sonic eine Nachricht über ICQ schicken
Standard

Dein Programm ist auch logisch nicht ganz richtig!

Die Zeilen

if (a=b);
printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,b);

gehören vor dem letzen else! Sonst gibt er zb bei der eingabe von a=1, b=1, c=2 "Die Zahl 1 und die Zahl 1 sind gleich groß" aus.

Korrigierte Version:

Code:
if (a==b && a==c)
 printf ("Die erste Zahl %d und die zweite Zahl %d und die dritte Zahl %d sind gleich gross!",a,b,c);
else 
 if (a>b)
  if (a>c)
   printf ("Die Zahl %d ist die groesste Zahl",a);
  else if (a==c)
    printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,c);
  else
    printf ("Die Zahl %d ist die groesste",c);
 else if (a==b)
  printf ("Die Zahl %d und die Zahl %d sind gleich groß",a,b);
 else if (c>b)
  printf ("Die Zahl %d ist die groesste Zahl",c);
 else if (c==b)
  printf ("Die Zahl %d und die Zahl %d sind gleich groß",b,c);
 else
  printf ("Die Zahl %d ist die groesste Zahl",b);
"Schönere" und ausgebesserte version
Code:
  if (a==b && a==c)
   printf ("Die erste Zahl %i und die zweite Zahl %i und die dritte Zahl %i sind gleich gross!\n",a,b,c);
  else
  {
   if(a>=b)
   {
    if (a>c)
     printf("Die Zahl %i ist die größte Zahl\n", a);
    else if(a<c)
     printf("Die Zahl %i ist die größte Zahl\n", c);
    else 
     printf("Die zahl %i und die zahl %i sind gleich groß\n", a,b);
   }
   else
   {
    if (b>c)
     printf("Die Zahl %i ist die größte Zahl\n", b);
    else if(b<c)
     printf("Die Zahl %i ist die größte Zahl\n", c);
    else 
     printf("Die zahl %i und die zahl %i sind gleich groß\n", a,c);
   }
  }
____________________________________
__________________
|»»»»»SONIC««««««|
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sonic ist offline   Mit Zitat antworten
Alt 05.03.2002, 17:18   #8
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Tipp 1: Benutz Klammern und Einrückungen, auch wenn es nur um einen Befehl nach dem IF handelt - das ganze wird überscihttlicher und fuer Dich leichter les- und debugbar. Dann schnallst Du auch die if/else-Konstruktionen.

Tipp 2: Schalt dei Kompilerwarning auf die höchste Stufe. Damit findest Du Zuweisungen wie "(a=b)" in IF-Bedungungen, wenn es eigentlich ein Verglecih sein sollte.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 05.03.2002, 17:40   #9
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Code:
/* 3vgl.c */

#include <stdio.h>

int main(int argc,char *argv[])
{

 int a,b,c,r1,r2,r3;

 printf("\n----------------------------------------------------------------------\n"
        "Programm Zahlenvergleich 3VGL: Bitte geben sie drei Zahlen (a,b,c) ein\n"
		"----------------------------------------------------------------------\n\n");


 printf("Eingabe von a .. "); scanf("%d",&a);
 printf("Eingabe von b .. "); scanf("%d",&b);
 printf("Eingabe von c .. "); scanf("%d",&c);

 printf("\n\n----------------------------------------------------------------------\n"
        "Ergebnis:\n"
		"----------------------------------------------------------------------\n\n");

 r1=a-b; r2=a-c; r3=b-c;

 if(r1>0 && r2>0) {
  printf("a ist die größte Zahl\n");
  if(r3) printf("%c ist die mittlere Zahl und %c die kleinste\n", (r3>0) ? 'b' : 'c', (r3>0) ? 'c' : 'b' );
  else printf("b und c sind gleich groß und kleiner als a\n");
 }

 else

  if(r1<0 && r3>0) {
   printf("b ist die größte Zahl\n");
   if(r2) printf("%c ist die mittlere Zahl und %c die kleinste\n", (r2>0) ? 'a' : 'c', (r2>0) ? 'c' : 'a' );
   else printf("a und c sind gleich groß und kleiner als b\n");
  }

  else

   if(r2<0 && r3<0) {
    printf("c ist die größte Zahl\n");
    if(r1) printf("%c ist die mittlere Zahl und %c die kleinste\n", (r1>0) ? 'a' : 'b', (r1>0) ? 'b' : 'a' );
    else printf("a und b sind gleich groß und kleiner als c\n");
   }

   else

    if(!r1 && r2) printf("a und b sind gleich groß und größer als c\n");

    else

     if(!r2 && r3) printf("a und c sind gleich groß und größer als b\n");

     else

      if(!r3 && r1) printf("b und c sind gleich groß und größer als a\n");

      else

       printf("a, b und c sind gleich groß\n");


 printf("\na = %d\nb = %d\nc = %d\n",a,b,c);

 return 0;
}
kikakater ist offline   Mit Zitat antworten
Alt 05.03.2002, 18:24   #10
wizo
Inventar
 
Registriert seit: 13.12.1999
Alter: 43
Beiträge: 2.929


wizo eine Nachricht über ICQ schicken
Standard

tschuldigung wegen dem elseif
gibts in c nicht aber wo anders
@kikakater
was bedeutet zb if(!r3 ...??
____________________________________
//---< wizo >---\\\\
wizo ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:07 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag