ADIM Aufgaben 3.6
Seite 1 von 1 • Austausch •
ADIM Aufgaben 3.6
Ich habe einmal alle Beispiele aus dem ADIM Buch (3.6) für euch in ein einziges Programm zusammengefasst.
Vielleicht hilft's dem einen oder anderen, wenn er selber dabei ist.
Bei Fragen, bitte einfach hier posten, ich beantworte gerne.
UPDATE: So nun sollte das Programm voll und ganz stimmen. Bis auf eine letzte Kleinigkeit, die ich morgen selber nachfragen muss.
Vielleicht hilft's dem einen oder anderen, wenn er selber dabei ist.
- Code:
/*main.cpp ***********************************
*********************************************
************* ADIM Aufgabe 3.6 **************
*********************************************
*********************************Haider Ralf*/
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
void main()
{
//Deklaration aller Variablen, die im Programm Verwendung finden.
//Zaehlervariablen
int i=0, j=0;
//Eingabevariablen
int zahl=0, wahl=0, q=0;
//Rechenvariablen
int neueZahl=0, sumVor=1, sumDann=0, sum=0, hoch=0, hochDavor=0, multiplikand=0, mKand=0, multiplikator=0, mKator=0, berechnungen=0, fakSum = 0;
float mittelwert = 00.0f;
//Exit-Bedingungsvariablen
bool quit=false, exitUmwandler=false;
//Lists and Arrays
int zahlList[15];
stringstream sumString;
char ziffern[13][3] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
int zahlen[13] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
while(!quit)
{
//Auswahltext
cout << "Bitte waehlen sie:\n" << "1: 3A Zahlenkette, mit doppelten Werten.\n" << "2: 3B Summe und Mittelwert einer Zahlenkette.\n"
<< "3: 3C Zahlenkette mit ungeraden Zahlen.\n" << "4: 3D FIBONACCI-Zahlen.\n" << "5: 3E Staffelrechnung.\n"
<< "6: 3F Tabelle von Fakultaeten.\n" << "7: 3G/H Positive Zahlen. Die Groesste und Zweitgroesste werden ausgegeben.\n"
<< "8: 3I Umwandler von arabischen in roemische Zahlen.\n";
cin >> wahl;
switch (wahl)
{
case 1:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3A ...das eine Folge von n Zahlen erzeugt, in der jede Zahl den doppelten Wert der vorhergehenden hat.
cout << "Aufgabe 3A!\n"
<< "Bitte geben Sie eine Zahl fuer die folgende Zahlenkette ein: ";
cin >> zahl;
cout << "Die Zahlenkette, mit den doppelten Werten, der Vorigen: \n";
neueZahl = 1;
for (i=1;i<=zahl;i++)
{
neueZahl *= 2;
cout << neueZahl << "\n";
}
//Ruecksetzen aller hier verwendeten Variablen!
i = 0;
zahl = 0;
neueZahl = 0;
break;
case 2:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3B ...das die Summe und den Mittelwert einer eingegebenen Zahlenfolge berechnet.
cout << "Aufgabe 3B!\n"
<< "Bitte geben Sie soviele Zahlen ein wie Sie wollen, 0 bricht die Eingabe ab: ";
do
{
cin >> zahl;
sum += zahl;
} while (zahl > 0);
//cast int to float
mittelwert = (float)sum/2;
cout << "Die Summe der Zahlenfolge: " << sum << "\nDer Mittelwert der Zahlenfolge: " << mittelwert << "\n";
//Ruecksetzen aller hier verwendeten Variablen!
i = 0;
zahl = 0;
sum = 0;
mittelwert = 0;
break;
case 3:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3C ...das die Folge der ersten n ungeraden Zahlen und die Summe dieser Folge ausgibt.
cout << "Aufgabe 3C!\n"
<< "Bitte geben Sie eine Zahl fuer die folgende Zahlenkette, die alle ungeraden Zahlen ausgibt, ein: ";
cin >> zahl;
sum = 0;
for (i=1;i<=zahl;i=i+2)
{
cout << i << "\n";
sum += i;
}
cout << "Die Summe der ungeraden Zahlen: " << sum << "\n";
//Ruecksetzen aller hier verwendeten Variablen!
i = 0;
zahl = 0;
sum = 0;
break;
case 4:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3D ...das das die FIBONACCI-Zahlen bis zu einer eingegebenen Höchstgrenze erzeugt und ausgibt.
cout << "Aufgabe 3D!\n"
<< "Bitte legen Sie eine Hoechstgrenze fuer die folgenden FIBONICCI-Zahlen fest: ";
cin >> zahl;
sum = 0;
cout << "1 ";
for (i=1;i<=zahl;i++)
{
sum = sumVor + sumDann;
cout << sum << " ";
sumDann = sumVor;
sumVor = sum;
}
//Ruecksetzen aller hier verwendeten Variablen!
i = 0;
zahl = 0;
sumVor = 0;
sumDann = 0;
sum = 0;
break;
case 5:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3E ...das eine Staffelrechnung durchführt.
cout << "Aufgabe 3E!\n"
<< "Bitte folgen Sie den Anweisungen und beachten Sie, dass eine Ueberschreitung von ~32000 nicht moeglich ist!\n";
cout << "Multiplikand eingeben: ";
cin >> multiplikand;
cout << "Multiplikator eingeben: ";
cin >> multiplikator;
cout << "Anzahl der Berechungen eingeben: ";
cin >> berechnungen;
cout << "\n" << "\n";
mKator = multiplikator;
mKand = multiplikand;
//Raufrechnen
for (i=0;i<berechnungen;i++)
{
sum = mKator * mKand;
if (sum < 32767)
cout << mKator << " * " << mKand << " = " << sum << "\n";
else
{
cout << "Fehler int ueberschritten!\n";
i = berechnungen;
berechnungen = 0;
}
mKator = sum;
mKand++;
}
mKand = multiplikand;
//Runterrechnen
if (berechnungen > 0)
{
for (i=0;i<berechnungen;i++)
{
sum = mKator / mKand;
if (sum > -32767)
cout << mKator << " / " << mKand << " = " << sum << "\n";
else
{
cout << "Fehler int ueberschritten!\n";
i = berechnungen;
}
mKator = sum;
mKand++;
}
}
//Ruecksetzen aller hier verwendeten Variablen!
i = 0;
multiplikand = 0;
multiplikator = 0;
berechnungen = 0;
sum = 0;
break;
case 6:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3F ...das eine Tabelle von Fakultäten erstellt. 0! - !6
cout << "Aufgabe 3F!\n"
<< "Tabelle an Fkultaeten: Von 0! - 6!\n";
fakSum = 1;
//TEST mit 6!
for (i=0;i<=6;i++)
{
if (i == 0)
{
cout << i << "! = 0\n";
}
else
{
sumString << " * " << i;
//TODO: Lehrer wegen dieser enorm großen Zahl fragen!
//Psoido Code: if (fakSum < 4294967294)
fakSum *= i;
//else
//cout << "Fehler!";
string allStr = sumString.str();
cout << i << "! = 1" << allStr << " = " << fakSum << "\n";
}
}
//Ruecksetzen aller hier verwendeten Variablen!
i = 0, j=0, zahl = 0;
fakSum = 0;
//sumString = ("1");
break;
case 7:
//Aufgabentext. Schreiben Sie ein Programm,...
// 3G ...das eine Folge von positiven Zahlen einliest. Mit der Zahl 0 wird abgebrochen und die höchste Zahl ausgegeben.
// 3H ...das eine Folge von positiven Zahlen einliest. Mit der Zahl 0 wird abgebrochen und die zweithöchste Zahl ausgegeben.
cout << "Aufgabe 3G/H!\n"
<< "Bitte geben Sie soviele Zahlen ein wie Sie wollen, 0 bricht die Eingabe ab:\n";
//Zahlen einlesen
do
{
cout << "Zahl " << j+1 << ": ";
cin >> zahl;
zahlList[j] = zahl;
j++;
} while (zahl > 0);
//Die groesste und zweitgroesste Zahl herausfinden
for (i=0;i<=j;i++)
{
if (zahlList[i] > hoch)
{
hochDavor = hoch;
hoch = zahlList[i];
}
else if (zahlList[i] > hochDavor)
{
hochDavor = zahlList[i];
}
}
cout << "Die groesste Zahl der Zahlenfolge ist: " << hoch << "\n";
cout << "Die zweitgroesste Zahl der Zahlenfolge ist: " << hochDavor << "\n";
//Ruecksetzen aller hier verwendeten Variablen!
for (i=0;i<=j;i++)
{
zahlList[i] = 0;
}
hoch = 0;
hochDavor = 0;
i=0; j = 0;
break;
case 8:
/*Aufgabentext. Schreiben Sie ein Programm,...
3I ...das eine arabische Zahl in eine römische umwandelt.
Algorythmusregeln:
-) Regel der kuerzesten Schreibweise.
-) Die strenge Subtraktionsregel.*/
cout << "Aufgabe 3I!\n"
<< "Umwandler von arabischen Zahlen in roemische Zahlen:\n";
while (!exitUmwandler)
{
cout << "Bitte eine ganze Zahl eingeben: ";
cin >> zahl;
// Suche nach der Roem.-Zahl. Wird solange ausgefuehrt, bis von der eingegebenen Zahl nichts mehr abgezogen werden kann.
while (zahl > 0)
{
if (zahl/zahlen[i] >= 1)
{
cout << (ziffern[i]);
zahl -= zahlen[i];
}
else
i++;
}
//Exit-Bedingung: Umwandler
cout << "\nGib 1 ein wenn du den Umwandler wiederholen willst." << "\nAlles andere beendet den Umwandler. ";
cin >> q;
if (! cin)
exitUmwandler = true;
if (q == 1)
exitUmwandler = false;
else
exitUmwandler = true;
//Ruecksetzen aller hier verwendeten Variablen!
i = 0, zahl = 0;
}
exitUmwandler = false;
break;
//Fehlermeldung
default:
cout << "Falsche Eingabe!\n";
break;
}
//Exit-Bedingung: Programm
cout << "\nGib 1 ein wenn du das Programm wiederholen willst." << "\nAlles andere beendet das Programm. ";
cin >> q;
if (! cin)
quit = true;
if (q == 1)
quit = false;
else
quit = true;
}
}
Bei Fragen, bitte einfach hier posten, ich beantworte gerne.
UPDATE: So nun sollte das Programm voll und ganz stimmen. Bis auf eine letzte Kleinigkeit, die ich morgen selber nachfragen muss.

rALF- Noob

- Anzahl der Beiträge: 5
Anmeldedatum: 12.09.08
Alter: 25
Ort: Vienna
Re: ADIM Aufgaben 3.6
UPDATE2: Sodale nun passt das Programm vollständig.
-) Bei Beispiel nr. 6, passt das so mit der Fakultät 0! - 6!, da 32! zu groß ist und der Lehrer meinte, dass es unnötig sei.
Also ruhig auf was Niederes ausbessern.
-) Auch in Beispiel 1 habe ich etwas verändert, da ich die Angabe zum Beispiel etwas missverstanden hatte. Der Fehler ist aber behoben.
-) Bei Beispiel nr. 6, passt das so mit der Fakultät 0! - 6!, da 32! zu groß ist und der Lehrer meinte, dass es unnötig sei.
Also ruhig auf was Niederes ausbessern.
-) Auch in Beispiel 1 habe ich etwas verändert, da ich die Angabe zum Beispiel etwas missverstanden hatte. Der Fehler ist aber behoben.
_________________
Quote from "Three Kingdoms", by Luo Guanzhong:
"The empire, long divided, must unite; long united, must divide. Thus it has ever been."

rALF- Noob

- Anzahl der Beiträge: 5
Anmeldedatum: 12.09.08
Alter: 25
Ort: Vienna
Forenbefugnisse:
Sie können in diesem Forum nicht antworten





