C :: Aufgabe #1 :: Lösung #4

7 Lösungen Lösungen öffentlich
#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.
#4
vote_ok
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. =)

Quellcode ausblenden 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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben