Struktogramm als Code

DerTrojaner

Mitglied
Hallo Community,

ich habe eine Aufgabe zu erledigen die ich nicht so ganz kann, da ich mir nicht sicher bin ob ich das Struktogramm richtig abgeschrieben habe (Code). Ich erhoffe mir das mir jemand sagen kann ob es richtig ist, und wenn nicht wo mein Fehler liegt.

Danke im voraus.

IMG_7402.JPG
C++:
#include <iostream>
#include <iomanip>
using namespace std;

main()
{
int i, k, a[]={9,5,3,7,2,1,4,6,8},b;
cout<<"\n" << "\t\tNun wird gezöhlt...\n\n";

for (i=0;i<9;i++)
{
  cout<<setw(3)<<a[i];
}
cout<<"\n"<<"Jetzt aber richtig:\n";

for (i=1;i<8;i++);
{
  for (k=i+1;k<9;k++);
  {
   if (a[i]<a[k])
    b=a[i];
    a[i]=a[k];
    a[k]=b;
  }
}

for (i=0;i<9;i++)
{
  cout<<setw(3)<<a[i];
}
cout<<"\n\nWeiter -> "; cin.get();
}
 

abdellaui

Erfahrenes Mitglied
Sieht super aus, bis auf ein Fehler. Du hast einen Anweisungsblock nach der if-Abfrage in der for-Schleife.

Bei einer Anweisung, welche nach einer if-Abfrage folgt, benötigst du keine Geschleifteklammer, jedoch bei einem Anweisungsblock sieht es da anders aus.

Siehe Code und entdecke :D
C++:
#include <iostream>
#include <iomanip>
using namespace std;
main()
{
int i, k, a[]={9,5,3,7,2,1,4,6,8},b;
cout<<"\n" << "\t\tNun wird gezöhlt...\n\n";
for (i=0;i<9;i++)
{
  cout<<setw(3)<<a[i];
}
cout<<"\n"<<"Jetzt aber richtig:\n";
for (i=1;i<8;i++);
{
  for (k=i+1;k<9;k++);
  {
       if (a[i]<a[k]){
           b=a[i];
           a[i]=a[k];
           a[k]=b;
         }
  }
}
for (i=0;i<9;i++)
{
  cout<<setw(3)<<a[i];
}
cout<<"\n\nWeiter -> "; cin.get();
}
 

abdellaui

Erfahrenes Mitglied
Ouw, da seh ich noch winzige kleine Fehler, undzwar die bösen Semikolons bei den For-Schleifen :D

Code:
#include <iostream>
#include <iomanip>
using namespace std;
main()
{
int i, k, a[]={9,5,3,7,2,1,4,6,8},b;
cout<<"\n" << "\t\tNun wird gezöhlt...\n\n";
for (i=0;i<9;i++)
{
  cout<<setw(3)<<a[i];
}
cout<<"\n"<<"Jetzt aber richtig:\n";
for (i=1;i<8;i++)
{
  for (k=i+1;k<9;k++)
  {
       if (a[i]<a[k]){
           b=a[i];
           a[i]=a[k];
           a[k]=b;
         }
  }
}
for (i=0;i<9;i++)
{
  cout<<setw(3)<<a[i];
}
cout<<"\n\nWeiter -> "; cin.get();
}
 

DerTrojaner

Mitglied
eine frage habe ich noch und zwar wie ändere ich jede FOR schleife in eine While schleife um aber die geschachtelten FOR-Schleife in eine Do While um ? Habe es versucht aber irgendwie funktioniert es nicht :(
C++:
#include <iostream>
#include <iomanip>

using namespace std;

main()
{
int i, k, a[]={9,5,3,7,2,1,4,6,8},b;
cout<<"\n" << "\t\tNun wird gezöhlt...\n\n";
i=0;
while (i<9)
{
  cout<<setw(3)<<a[i];
  i++;
}
cout<<"\n"<<"Jetzt aber richtig:\n";
i=1;
while (i<8)
{
     i++;
}
{
   k=i;
   do
   {
       k++;
   }
   while (k<9);
 
  {
       if (a[i]<a[k]){
           b=a[i];
           a[i]=a[k];
           a[k]=b;
         }
  }
}
i=0;
while (i<9)
{
  i++;
}

{
  cout<<setw(3)<<a[i];
}
cout<<"\n\nWeiter -> "; cin.get();
}
 

vfl_freak

Premium-User
Moin,

Java:
while (i<8)
{
     i++;
}  // die WHILE-Schleife endet hier !!!

und diese hier
Java:
while (k<9);
endet mit dem Semikolon !!

Die jeweiligen Blöcke dahinter werden allenfalls einmal ausgeführt!

Du solltest Dich IMHO nochmal mit dem Aufbau von grundlegenden Dingen beschäftigen und Dich über die Bedeutung von Klammerungen, Semikolon etc. auseinander setzen!

Gruß Klaus