Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Potenzrechnung

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 ]
000
16.03.2005, 01:12 Uhr
Angel1984



Hallo erstmal, liebe Leute...
Ich bin neu hier im Forum und bräuchte eure Hilfe...


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

void main(void)
{
  long b, erg;
  int e, i;

  // Eingabe
  cout << "\nGeben Sie Basis und Exponenten ein: \n";
  cout << "Basis:    "; cin >> b;
  cout << "Exponent: "; cin >> e;
  while (e<0)  // Exponent muss >= 0 sein
  {
    cout << "Exponent darf nicht negativ sein!\nExponent: "; cin >> e;
  }

  // Berechnung  
  if (e == 0) erg=1;  // Überprüfung des Exponenten auf 0
  else
  {
    erg=1; i=0;  // Initialisierungen
    do  // do-while-Schleife
    {
      erg=erg*b;
      i=i+1;
    }
    while (i<e);
  }
  
  // Ausgabe
  cout << endl << b << "^" << e << " = " << erg << "\n\n";
  system("PAUSE");
}



In diesem Quellcode verstehe ich nicht... warum "i" initialisiert wird...
Welche Bedeutung hat i???
damit die solange potenziert wird, solange "i<e" ist???

aber warum wird in der Rechnung der Exponent nicht mit ein bezogen???
also, wie oft potenziert werden muss?? woran sieht das Programm das??

auch an dem "i<e"???

Vielen Dank, für eure Bemühung

mfG Angel1984

Dieser Post wurde am 16.03.2005 um 01:16 Uhr von Angel1984 editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.03.2005, 01:36 Uhr
typecast
aka loddab
(Operator)


1.) [pablomode] Es muss int main() heissen [/pablomode]

2.) Der Code duerfte gar nicht kompilieren, da du entweder ein using namespace std; machen muessest, oder std:: vor cout, cin und endl schreiben muesstest.

3.) i muss initialisiert werden, da nach der Initialisierung ein beliebiger Wert in i stehen kann. Und das ist nicht gewuenscht.

4.) e wird in die Berechnung mit einbezogen (die if-Abfrage und das while Statement).

Das Ergebnis wird folgendermassen berechnet:

erg = b * b * b * .... * b

Dabei wird das b e-mal mit sich selbst multipliziert
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.03.2005, 01:41 Uhr
Angel1984



also kompilieren tut es schon...
und das auch richtig...
gibt auch das richtige Ergebnis raus...
das std. habe ich sowieso in Zusammenhang mit C++ nicht verstanden..
wozu ist es denn da??
Wir haben das std:: während der Vorlesungen auch nicht benutzt...

oké, danke, für Ihre Bemühung... das Programm habe ich einigermaßen verstanden...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.03.2005, 01:44 Uhr
Angel1984




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

int main(void)
{
  int anzahl, i, n;
  float max;

  // Eingabe der Anzahl
  cout << "Wieviele Zahlen sind zu erwarten (maximal 30): "; cin >> anzahl;
  float folge[anzahl];

  // Eingabe der Zahlen
  for (i=0;i<anzahl;i=i+1)
  {
    cout << i+1 <<". Zahl? ";
    cin >> folge [i];
  }

  // Ermittlung der größten Zahl
  max=folge[0];
  for (i=1; i<anzahl; i=i+1)  if (folge[i] > max) max=folge[i];

  // Ausgabe
  cout << "\nDie groesste Zahl ist " << max << endl << endl;

  system("PAUSE");
}



An diesem Programm verstehe ich nicht, wie ein Array erstellt wird...
Was heißt:
C++:
folge [anzahl]



und was heißt:
C++:
cin >> folge [i];


Warum heißt das plötzlich folge [i]???

und was bezweckt:
C++:
max=folge[0];
  for (i=1; i<anzahl; i=i+1)  if (folge[i] > max) max=folge[i];

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.03.2005, 01:48 Uhr
0xdeadbeef
Gott
(Operator)


Es dürfte nicht kompilieren. Und bei mir tuts das auch nicht (Die Fehlermeldung ist ein bisschen zu lang, um sie hier zu posten - er findet halt, wie nicht anders zu erwarten, die ganzen Bezeichner nicht und muckiert sich über void main, was natürlich grober Unfug ist).

std:: ist ein namespace-präfix. std::cout zum Beispiel bedeutet "cout im namespace std". Alle Bezeichner der STL (standard template library) sind im namespace std gekapselt, das im wesentlichen, um sie von gleichnamigen Bezeichnern anderer Bibliotheken zu unterscheiden. Im Code sieht das dann so aus:

C++:
#include <iostream>

int main() {
  std::cout << "Hello, World!" << std::endl;
}


bzw.

C++:
#include <iostream>

using namespace std; // jetzt wird auch der namespace std nach Bezeichnern durchsucht, std:: muss also nicht mehr explizit angegeben werden.

int main() {
  cout << "Hello, World!" << endl;
}


Auf die selbe Weise kann man z.B. folgendes machen:

C++:
#include <iostream>

namespace mein_kleiner_namespace {
  int i;

  void print_i() {
    // Merke: Hier muss der namespace nicht mit angegeben werden, da print_i im selben namespace wie i ist.
    std::cout << i << std::endl;
  }
}

int main() {
  mein_kleiner_namespace::i = 23;
  mein_kleiner_namespace::print_i();
}


Das zweite Programm ist ebenfalls völliger Bogus, VLAs (variable length arrays) gibts in C++ nicht. Du musst den Kram schon auf dem Heap anlegen, das sieht dann so aus:

C++:
#include <iostream>

int main() {
  float *array;
  int anzahl;

  std::cin >> anzahl;
  array = new float[anzahl];

  // mit array arbeiten

  delete[] array;
}


Ansonsten ist folge in deinem Beispiel (bzw. wäre es, wenn der Code gültig wäre) ein Array, also ein Feld von mehreren floats hintereinander im Speicher. Zum Beispiel:

C++:
#include <iostream>

int main() {
  int quadrate[30];

  for(int i = 0; i < 30; ++i)
    quadrate[i] = i * i;

  std::cout << quadrate[20] << std::endl; // gibt das zwanzigste Element von quadrate aus, also 20 * 20 = 400.
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 16.03.2005 um 01:54 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.03.2005, 01:51 Uhr
Angel1984



hängt es vllt vom Compiler ab???
Denn ich habe dev-c++
und da geht es :S

also... eigentlich war ja nur das Problem des Verständnis da...

Ich denke schon, dass es am Compiler hängt...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.03.2005, 01:54 Uhr
0xdeadbeef
Gott
(Operator)


Das muss ein ziemlich alter dev-c++ sein. Ich glaube, der g++ 2.95 ließ sowas noch durchgehen...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.03.2005, 01:59 Uhr
Angel1984



hummmm
nein.. ich habe dev-c++ 4.9.8.0

glaub mir... ich habe es kompiliert... es geht wirklich
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
16.03.2005, 02:14 Uhr
0xdeadbeef
Gott
(Operator)


Bei mir sieht das so aus:

Code:
$ g++ t.cc
t.cc: In function `int main()':
t.cc:10: error: `cout' undeclared (first use this function)
t.cc:10: error: (Each undeclared identifier is reported only once for each
   function it appears in.)
t.cc:10: error: `cin' undeclared (first use this function)
t.cc:25: error: `endl' undeclared (first use this function)


Der Dev-Cpp benutzt ja im Hintergrund nen gcc. Welche Version hat der? Das ist das eigentlich interessante.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
16.03.2005, 07:42 Uhr
(un)wissender
Niveauwart


Das kompiliert nicht! Auch nicht mit dem Dev-cpp 4.9.8.0, den habe ich nämlich. Wäre ja auch noch schöner. Ich glaube, der Borland hatte mal die Allüren, in dem er <iostream>, usw. intern durch <iostream.h> ersetzt hat, aber der mingw macht das nicht.
Wie auch immer: selbst wenn du das aus irgendwelche Gründen durch einen Compiler bekommst, solltest du den Code verbessern, da er zu diesem Zeitpunkt kein gültiges c++ ist.

Zu deine Frage: natürlich wird der Exponent mit einbezogen, nämlich als Zähler für die Multiplikationen, Du solltest dir vielleicht mal ansehen, was Potenzbildung eigentlich ist.
--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 16.03.2005 um 07:42 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ 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: