C :: Aufgabe #1 :: Lösung #4
7 Lösungen
#1
Multiplikation ohne zu multiplizieren
Anfänger - C
von Gustl
- 11.11.2012 um 17:24 Uhr
Erstellen Sie ein Konsolenprogramm welches dem Benutzer auffordert 2 Zahlen einzugeben, diese sollen dann multipliziert werden, jedoch ist nur die Grundrechenart Addition erlaubt.
Wenn einer der 2 Zahlen keine Zahl ist, soll eine Fehlermeldung ausgegeben werden und der Benutzer noch einmal aufgefordert werden eine Zahl einzugeben.
Wenn einer der 2 Zahlen keine Zahl ist, soll eine Fehlermeldung ausgegeben werden und der Benutzer noch einmal aufgefordert werden eine Zahl einzugeben.
#4
von ah3n0bar6us (660 Punkte)
- 16.07.2016 um 14:45 Uhr
Ein Problem gibt es jedoch, die Multiplikation mit 0 wird nicht akzeptiert. Was natürlich unsauber ist. Aber wenn jmd. einen Verbesserungsvorschlag hat, bin ich ganz Ohr. =)
C-Code
/* Ah3
* OS: Macintosh; Intel Mac OS X 10_11_5
* compile: gcc -std=c11 -Wall -Wextra -pedantic -o mult 1.c
* date: 16-07-2016
* Example:
* ./mult
* ./mult 12 13
*/
#include <stdio.h> // to use printf()
#include <stdlib.h> // to use atoi()
void mult(int dig1, int dig2);
int main(int argc, char const *argv[]){
// check input
if (argc == 1) {
// if no argument given
char zahl1[32];
char zahl2[32];
printf("%s\n", "Bitte Zahl 1 eingeben: " );
scanf("%s", zahl1);
printf("%s\n", "Bitte Zahl 2 eingeben: " );
scanf("%s", zahl2);
mult(atoi(zahl1), atoi(zahl2));
} else if (argc == 3) {
// if we got two digits
mult(atoi(argv[1]), atoi(argv[2]));
} else {
printf("%s\n", "Something went wrong with your arguments. We start again." );
main(1,0);
}
}
void mult(int dig1, int dig2) {
int result = dig1;
for (int i = 1;i < dig2; i++) {
result += dig1;
}
if (dig1 == 0 || dig2 == 0) {
printf("%s\n", "Something went wrong with your arguments. We start again." );
main(1,0);
} else {
printf("Das Produkt aus %i * %i = %i\n", dig1, dig2, result );
}
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
