Seite 1 von 1

steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 1:30 pm
von schlafmütze
Hallo,

Ich bin gerade mitten in eine Aufgabe vertieft die ich sozusagen nicht verstehe .

Folgende Aufgabe:

Erweitern Sie das folgende Programm, das die Potenzen von 2 ausgibt,
sodass nun beliebige Basen (Wahl durch Konstante im Programmcode) verwendet werden können.
Außerdem soll nicht bei n10 abgebrochen werden, sondern die 10 soll ein Parameter sein.

Code: Alles auswählen

#include <stdio.h>

int main(void)
   
   {
     int basis = 2;
     long ergebnis = 1;
     int i;
     
     scanf
     
     for (i=0; i < 10; ++i)
     
      { 
        printf("%d hoch %d = %d\n", basis, i, (int)ergebnis);
        ergebnis = ergebnis * basis;
      }
   
    return 0;
   
    }
Kann mir jemand die Aufgabe mit anderen Worten beschreiben? :)
Und bitte noch keine Lösung sagen will nur die Aufgabe verstehen. ;) ;) ;) ;) ;) ;) ;)
Danke im voraus.

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 1:37 pm
von Dirty Oerti
Im Endeffekt sollst du das Programm dynamischer machen.
Die Basis sollst du durch eine Konstante definieren (was meiner Ansicht nach Blödsinn ist, mach sie gleich als Parameter), den Exponent als Parameter.

Du musst dich jetzt entscheiden: Willst du den Code in eine einzelne Funktion auslagern und an diese dann die (durch das Programm eingelesenen) Parameter (Basis, Exponent) übergeben oder willst du die Parameter direkt an das Programm übergeben (Aufruf des Programms z.B. "prog 5 10" für 5 hoch 10)...

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 1:39 pm
von Xin
schlafmütze hat geschrieben:Hallo,

Ich bin gerade mitten in eine Aufgabe vertieft die ich sozusagen nicht verstehe .

Folgende Aufgabe:

Erweitern Sie das folgende Programm, das die Potenzen von 2 ausgibt,

Das Programm ist nicht fehlerfrei, kann also auch nicht erweitert werden.
Die Potenz von zwei wäre 2^x, lese x ein und rechne entsprechend 2^x aus. Bei 2^x ist die Basis entsprechend 2.

schlafmütze hat geschrieben:sodass nun beliebige Basen (Wahl durch Konstante im Programmcode) verwendet werden können.
Außerdem soll nicht bei n10 abgebrochen werden, sondern die 10 soll ein Parameter sein.
Erweitere das Programm (wenn es dann funktioniert), dass Du den Exponent und die Anzahl der Ausgaben abfragst.

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 1:55 pm
von schlafmütze
Wenn ich jetzt die Aufgabe richtig verstanden habe sollte es so aussehen oder ?

Code: Alles auswählen

#include <stdio.h>

int main(void)
   
   {
     const int basis = 5;
     const int letzter_exponent= 12;
     long ergebnis = 1; 
     int i;
     
     printf("Ausgabe der Potenzen von %d \n", basis);
     
     for (i=0; i < letzter_exponent + 1; ++i)
     
      { 
        printf("%d hoch %d = %d\n", basis, i, (int)ergebnis);
        ergebnis = ergebnis * basis;
      }
   
    return 0;
   
    }

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 3:01 pm
von Dirty Oerti
Nein.
Bis zu welchem Exponenten du gehst sollst du ja über einen Parameter erfragen.

Code: Alles auswählen

     const int letzter_exponent= 12;
Das soll ja eben NICHT konstant sein, sondern durch den Parameter verändert werden können.

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 3:04 pm
von schlafmütze
Was ist überhaupt Parameter das Wort das taucht hundert mal im Buch auf :lol: ?

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 3:12 pm
von Dirty Oerti
Also Parameter sind WICHTIG!
Ohne geht C/C++/Java/ etc kaum, bzw ist es nicht gerade prickelnd.

Hier findest du eine kleine Einführung in Parameter.
Nochmal, um dem Ganzen nachdruck zu verleihen: Parameter SOLLTEST du wirklich beherrschen :)

Simples Beispiel:

Code: Alles auswählen

int add (int summand1, int summand2)
{
   return (summand1 + summand2);
}

int main (void) //BTW: Anstatt von void können hier auch Parameter stehen, die du dann beim Programmstart bekommst...
{
    int a = 5;
    int b = 3;
    int ergebnis = add(a,b);
    return 0;
}

Re: steueranweisung (übung)

Verfasst: Fr Apr 03, 2009 3:29 pm
von schlafmütze
Man bist du gut du hast es genau auf den Punkt gebracht danke. :D