Zum Inhalt springen

C++ - Funktionen - Aufgabe


Empfohlene Beiträge

Geschrieben

Hallo, ich bin noch ganz am Anfang mit C++;

ich soll folgende Aufgabe lösen, mir fehlen allerdings

jegliche Kenntnisse diesbezüglich das gekonnt umzusetzen.

Es wäre nett wenn Ihr mir behilflich sein könntet

Aufgabe:

Es sollen zwei eingelesene Zahlen dividiert werden (in einer eigenen Funktion). Der erhaltene Rest soll an das Hauptprogramm übergeben werden.

Dieser Vorgang soll mit neu eingelesen Zahlen wiederholt werden.

Beide Rückgabewerte sollen nun durcheinander dividiert werden (a/b und b/a) und das jeweilige Ergebnis ausgegeben werden.

Worauf ist bei dieser Aufgabe zu achten?

Wie kann man das programmtechnisch geschickt lösen?

tschüssi ;)

BüDi

Geschrieben

Hallo BüDi, und Willkommen auf dem Board. :)

Originally posted by BüDi

ich soll folgende Aufgabe lösen, mir fehlen allerdings

jegliche Kenntnisse diesbezüglich das gekonnt umzusetzen.

Wenn dir wirklich "jegliche Kenntnisse" fehlen, solltest du dir zuerst einmal die Grundlagen von C bzw. C++ aneignen. Ich frage mich allerdings, warum dir jemand so eine Aufgabe stellt, wenn dir jegliche Kenntnisse zur Bewältigung fehlen.

Dieses Forum ist kein Hausaufgabenservice. Es ist dir auch nicht damit geholfen, wenn jemand deine Fragen beantwortet, und du die Antwort nicht verstehst. Wenn du selbst versuchst, die Aufgabe zu lösen, und dabei nicht weiterkommst, wird dir hier gern weitergeholfen, aber dann musst du auch konkrete Fragen stellen.

Geschrieben

Ich weiß ned ob ich dich richtig verstanden hab aber ich glaub das du mit Rest MODULO meinst. Hier mal ein kleines Testprogramm ist zwar nur grob aber vielleicht hilft es dir ja

//autor: Huber Werner

#include <stdio.h>

#include <conio.h>

int eingabe();

void main()

{

int erg1,erg2; //die 2 ergebnisse

double erg; //das endergebniss

erg1 = eingabe(); //aufruf der funktion eingabe (der RÂckgabewert wird in erg1 geschoben)

erg2 = eingabe();

erg=(double)erg1/erg2; //erg ist vom typ double darum muss mindestens 1 ganzzahl variable als double gecastet werden

printf("%lf",erg); //ausgabe des ergebnisses

getch();

return;

}

int eingabe()

{

clrscr(); //Bildschirm lâ€schen

int zahl1,zahl2; //die zwei einzugebenen Zahlen (hier integer)

printf("Geben Sie bitte die 1. Zahl ein: ");

fflush(stdin); //leeren des Tastaturpuffers

scanf("%d",&zahl1); //einlesen der 1 Zahl

printf("Geben Sie bitte die 2.Zahl ein: ");

fflush(stdin);

scanf("%d",&zahl2);

return(zahl1%zahl2); //das ergebniss wir hier zurÂckgegeben

}

Geschrieben

hallo, mmhh mit rest ist sicherlich modulo gemeint, der code hier gibt lediglich das ergebnis der division aus :-/ naja muss ich noch ein bissel modifizieren ;-) aber ich danke dir für deine Hilfe! @ Klotzkopp: es ist mir klar das es kein hausaufgabenservice ist, es sollte auch garnicht so rüberkommen als hätte ich sie gerne von jemanden anderem gelöst bekommen, sondern ich bin nur über jeden tip dankbar!!

//Author: BüDi

# include <iostream>

using namespace std;

int division1 (int a, int B)

{

int ergdivision1=(a/b);

return ergdivision1;

}

int division2 (int c, int d)

{

int ergdivision2=(c/d);

return ergdivision2;

}

void main ()

{

int zahl1, zahl2, zahl3, zahl4;

int ergebnis1, ergebnis2, ergebnis3, ergebnis4;

cout << "Bitte geben Sie die erste Zahl ein, welche" << endl;

cout << "zum dividieren verwendet werden soll:" << endl;

cin >> zahl1;

cout << "Bitte geben Sie die zweite Zahl ein, welche" << endl;

cout << "zum dividieren verwendet werden soll:" << endl;

cin >> zahl2;

ergebnis1=division1(zahl1,zahl2);

cout << "Bitte geben Sie die dritte Zahl ein, welche" << endl;

cout << "zum dividieren verwendet werden soll:" << endl;

cin >> zahl3;

cout << "Bitte geben Sie die vierte Zahl ein, welche" << endl;

cout << "zum dividieren verwendet werden soll:" << endl;

cin >> zahl4;

ergebnis2=division2(zahl3,zahl4);

ergebnis3=ergebnis1 / ergebnis2;

ergebnis4=ergebnis2 / ergebnis1;

cout << "Das Ergebnis lautet:" << hex << ergebnis3 << "und:" << hex << ergebnis4 << endl;

}

Geschrieben

Bzw.

............

int ergdivision1=(a/b);

............

............

int ergdivision2=(c/d);

............

in

............

int ergdivision1=(a%B);

............

............

int ergdivision2=(c%d);

............

abändern!

Das Problem das allerdings noch besteht, ist, wenn wenn bspw. eine größere zahl durch eine kleinere dividiert wird, schmiert die anwendung ab!wie kann ich dies umgehen?

Geschrieben
Originally posted by BüDi

Das Problem das allerdings noch besteht, ist, wenn wenn bspw. eine größere zahl durch eine kleinere dividiert wird, schmiert die anwendung ab!wie kann ich dies umgehen?

Was meinst du mit abschmieren? Bekommst du eine Fehlermeldung? Kannst du den minimalen Code posten, mit dem man den Fehler reproduzieren kann?

@root_of_hell:

Die Anwendung von fflush auf Eingabeströme kann zu undefiniertem Verhalten führen.

Geschrieben
Originally posted by BüDi

int division1 (int a, int B)

{

}

int division2 (int c, int d)

{

}

void main ()

{

int zahl1, zahl2, zahl3, zahl4;

int ergebnis1, ergebnis2, ergebnis3, ergebnis4;

ergebnis1=division1(zahl1,zahl2);

ergebnis2=division2(zahl3,zahl4);

ergebnis3=ergebnis1 / ergebnis2;

ergebnis4=ergebnis2 / ergebnis1;

cout << "Das Ergebnis lautet:" << hex << ergebnis3 << "und:" << hex << ergebnis4 << endl;

}

Das Problem das allerdings noch besteht, ist, wenn wenn bspw. eine größere zahl durch eine kleinere dividiert wird, schmiert die anwendung ab!wie kann ich dies umgehen?

Du meinst also wenn du z.B. folgende werte hast:

ergebnis1 = division1(2,5)

-> in diesen fall wäre ergebnis1 = 0, da int kein gleitkommawert ist...

->dies führt dazu, das du dann bei der Zeile

ergebnis4 = ergebnis2/ ergebnis1

durch 0 teilst, was nicht zulässig ist ->absturz(oder?)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...