Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Help!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]
010
04.10.2003, 19:54 Uhr
~Tai03
Gast


Ja das hab ich schon länger verbessert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
05.10.2003, 10:10 Uhr
~Tai03
Gast


Ich hab auch eine version die funkioniert, aber nicht wenn nur zwei zahlen gleich sind...

C++:
#include<iostream.h>

[b]int[/b] main(){ // ich (Pablo) habe hier void in int geändert !

     int nA, nB, nC, nMax, nMitte, nMin, nAuswahl;

     cout<< "Dieses Programm ordnet die 3 Zahen die sie eingeben nach der groesse" <<endl;

     cout<< "\n\n";
     while (true){

     cout<< "Bitte geben sie Ganzzahl1 ein ";
     cin>> nA;
     cout<<endl;
     cout<< "Bitte geben sie Ganzzahl2 ein ";
     cin>> nB;
     cout<<endl;
     cout<< "Bitte geben sie Ganzzahl2 ein ";
     cin>> nC;
     cout<< "\n\n";//Zwei Zeilen herunterschieben
     if (nA==nB==nC)
     {
          cout<< "Alle Zahlen sind gleich" <<endl;
          cout<<"Geben sie eine (0) ein um das Programm zu beanden" <<endl;
          cin>> nAuswahl;
     }else{
     if (nA>nB && nA>nC){
          nMax=nA;
          if (nB>nC){
                nMitte=nB;
                nMin=nC;
          }else{
          nMitte=nC;
          nMin=nB;
     }
   }else{
   if (nB>nC){
       nMax=nB;
       if (nC>nA){
            nMitte=nC;
            nMin=nA;
    }else{
      nMitte=nA;
      nMin=nC;
    }
  }else{
    nMax=nC;
    if (nA>nB){
         nMitte=nA;
         nMin=nB;
      }else{
         nMitte=nB;
         nMin=nA;
     }
    }
  }
  cout<< "Sollen die Zahlen von (+) nach (-) geordnet werden?" <<endl;
  cout<< "wenn ja druecken sie (1) wenn nein druecken sie (2) (Zahlen (-) nach (+))" <<endl;
  cin>> nAuswahl;
  if (nAuswahl==1){
     cout<< "\n";
     cout<< "-------------------------------------------------------------------------" <<endl;
     cout<< nMax;
     cout<<" > ";
     cout<< nMitte;
     cout<< " > ";
     cout<< nMin;
     }else{
     cout<< "\n\n";
     cout<< nMin;
     cout<<" < ";
     cout<< nMitte;
     cout<<" < ";
     cout<< nMax;}

     cout<<"Geben sie eine (0) ein um das Programm zu beanden"<<endl;
     cin>> nAuswahl;

     if (nAuswahl==0) break;
     } // darf ich fragen, wozu diese { } Klammer hier?
     }

}



--edit: Pablo. Code Tags gesetzt und Code lesbar gemacht; void main -> int main geändert--

Dieser Post wurde am 05.10.2003 um 13:16 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
05.10.2003, 13:15 Uhr
Pablo
Supertux
(Operator)


Ich würde sagen, zu viele if, else, { }, usw. der Code ist für mich unübersichtlich. Wie wäre es, wenn du 2 oder 3 Funktionen machst, die die schmutzige Arbeit von den ganzen if-Anweisungen erledigt? So kann man besser die Fehler finden, denn der Code übersichtlicher wird.
Fehlt da nicht ein } ????
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 05.10.2003 um 13:16 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
05.10.2003, 13:39 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:
Pablo Yanez Trujillo postete
Ich würde sagen, zu viele if, else, { }, usw. der Code ist für mich unübersichtlich. Wie wäre es, wenn du 2 oder 3 Funktionen machst, die die schmutzige Arbeit von den ganzen if-Anweisungen erledigt? So kann man besser die Fehler finden, denn der Code übersichtlicher wird.
Fehlt da nicht ein } ????


dat hab ich auch gemeint
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
05.10.2003, 13:59 Uhr
0xdeadbeef
Gott
(Operator)


Naja, bei der kleinen Geschichte sind weitere Funktionen eigentlich nicht unbedingt nötig, wenn man mal von den Standard-Algorithmen absieht. Trotzdem, Pablo hat recht, wenn er sagt, dass der Code viel zu unübersichtlich ist. Zwei generelle Tips:

- Rück den Code ordentlich ein, dann siehst du viel besser, was du eigentlich geschrieben hast
- Es gibt Situationen, in denen es unübersichtlich ist, neue Blöcke aufzumachen. Zum Beispiel:

C++:
if (a) {
  
} else {
  if(b) {

  } else {
    if(c) {

    }
  }
}


Sieht unübersichtlicher aus als

C++:
if(a) {

} else if(b) {

} else if(c) {

}



Was das Programm selbst angeht, ich würde das so machen:

C++:
#include <iostream>
#include <algorithm>
#include <cstdlib>

int main() {
  char weiter;
  do {
    int num[3];
    std::cout << "Geben Sie drei Zahlen ein: " << std::flush;
    std::cin >> num[0] >> num[1] >> num[2];
    std::sort(num, num + 3);
    // Bei mehr als drei Zahlen sollte man das hier langsam in eine Schleife packen
    std::cout << num[0] << (num[0] == num[1] ? " = " : " < ")
              << num[1] << (num[1] == num[2] ? " = " : " < ")
              << num[2] << std::endl;
    std::cout << "Nochmal? (j/n) " << std::flush;
    std::cin >> weiter;
  } while(std::tolower(weiter) == 'j');
}


--edit: whoopsy, das Forum macht aus tabs was anderes als emacs...einrückung korrigiert.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 05.10.2003 um 18:59 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
05.10.2003, 17:45 Uhr
~Tai03
Gast


Ich weiß dass ist ziemlich unübersichtlich, aber

C++:
#include<iostream.h>
int main(){
    char cSymbol1, cSymbol2;
    int iA, iB, iC, iMax, iMitte, iMin, iAuswahl, iAuswahl2;
    cout<< "Dieses Programm ordnet die 3 Zahen die sie eingeben nach der groesse" <<endl;

    while (true){
        cout<< "\n\n";
        cout<< "Bitte geben sie Ganzzahl1 ein ";
        cin>> iA;
        cout<<endl;
        cout<< "Bitte geben sie Ganzzahl2 ein ";
        cin>> iB;
        cout<<endl;
        cout<< "Bitte geben sie Ganzzahl2 ein ";
        cin>> iC;
        cout<< "\n\n";
    
         if (iA>iB && iA>iC){
                 iMax=iA;
                 if (iB>iC){
                        iMitte=iB;
                        iMin=iC;
                  } else {
                      iMitte=iC;
                      iMin=iB;
                 }
        } else {
            if (iB>iC){
               iMax=iB;
                   if (iC>iA){
                        iMitte=iC;
                        iMin=iA;
                    } else{
              iMitte=iA;
              iMin=iC;
        }
      } else{
            iMax=iC;
                if (iA>iB){
                     iMitte=iA;
                     iMin=iB;
                } else{
                     iMitte=iB;
                     iMin=iA;
               }
       }
  }
//funkioniert bis hier hin<---------------------
    cout<< "Sollen die Zahlen von (+) nach (-) geordnet werden?" <<endl;
    cout<< "wenn ja druecken sie (1) wenn nein druecken sie (2) (Zahlen (-) nach (+))" <<endl;
    cin>> iAuswahl;
// Habs noch mal versuch anders aufzubauen, aber ab hier gibt er keinen cout" mehr aus warum??
    if (iAuswahl==1){
          if (iMax!=iMitte) {
                cSymbol1= '<';
           } else {
           cSymbol1 = '=';
               if(iMax!=iMin) {
               cSymbol2= '<';
            } else {
              cSymbol2= '=';
              cout<< "\n";
              cout<< "_______________________________________________________________" <<endl;
            cout<< iMax;
            cout<< cSymbol1;
            cout<< iMitte;
            cout<< cSymbol2;
       }
   }
   if (iAuswahl==1){
       if (iMax!=iMitte) {
           cSymbol1= '>';
       } else {
         cSymbol1= '=';
         if(iMax!=iMin) {
         cSymbol2= '>';
         } else {
         cSymbol2= '=';
        cout<< "\n";
        cout<< "________________________________________________________________" <<endl;
        cout<< iMax;
        cout<< cSymbol1;
        cout<< iMitte;
        cout<< cSymbol2;
        cout<< iMin <<endl;
        cout<<"Geben sie eine (0) ein um das Programm zu beenden"<<endl;
        cin>> iAuswahl2;

        if (iAuswahl2==0) break;
     }
  }
}
}
}
}



--edit: Pablo. [ cpp ] tags gesetzt. Bitte nächstes Mal selber machen. --
-- Und bitte selber Code einrücken --

Dieser Post wurde am 05.10.2003 um 17:57 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
05.10.2003, 17:47 Uhr
~Tai03
Gast


ich hab markiert bis wohin es funktioniert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
05.10.2003, 17:48 Uhr
~Tai03
Gast


Sorry da muss noch ne '}' hinter
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
05.10.2003, 18:02 Uhr
virtual
Sexiest Bit alive
(Operator)


Warum nimmst Du nicht die Anregungen ernst und rückst den Quellcode mal vernünftig ein?
Vielleicht würde es dann auch klappen, daß Du nicht immer mal irgendwelche geschweifte Klammern vergisst.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
05.10.2003, 18:04 Uhr
Pablo
Supertux
(Operator)


Ich mach ja keine Witze. Wieso machst du deinen Code nicht übersichtlicher?
Benutze eine Funktion, die die Sortierung macht, dann verschwindet viel Code von main().

2. Wenn du das machst, wirst du sehen, dass du die Fehler auch selber finden wirst. Viele Fehler kannst du (können wir) nicht finden, weil du (wir) die Übersicht deines Programmes verlierst (verlieren).

3. Wenn du immer einrückst, wirst du wenig Zeit verlieren, die richtige Stellen zu finden.

4. Was ist denn jetzt das Probem? In deinem Code steht, wo es funktioniert und wo es nicht. Aber was funtioniert nicht? Kannst du nicht kompilieren oder dieser Code wird nie ausgeführt oder dieser Code tut nicht, was du von ihm verlangst? Ich glaube es liegt an while(true), weil die { Klammer zu früh auftaucht und der Rest wird nie ausgeführt,weil der while(true)-Block immer aktiv ist.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 05.10.2003 um 18:05 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ] [ 4 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: