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

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.
#5
vote_ok
von mraimbot (590 Punkte) - 04.01.2019 um 22:40 Uhr
Quellcode ausblenden C-Code
/*
 * Datei: Aufgabe-0001.c
 * Datum: 04.01.2019
 *
 * Aufgabe: Multiplikation ohne zu multiplizieren
 * 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.
 */


#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>


int getNumber(char *numberAsString);
int multiplication(int operant1, int operant2);


int main (int argc, char **argv) {
	int numbers[3] = { 0 };

	numbers[0] = getNumber((2 <= argc) ? argv[1] : NULL);
	numbers[1] = getNumber((3 <= argc) ? argv[2] : NULL);
	numbers[2] = multiplication(numbers[0], numbers[1]);
	
	printf("%i * %i = %i", numbers[0], numbers[1], numbers[2]);

	return EXIT_SUCCESS;
}


int getNumber(char *numberAsString) {
	int result = 0;
	int number = 0;
	char ch;

	if (numberAsString != NULL) {
		result = sscanf_s(numberAsString, "%i", &number);

		if (result != 1) {
			printf("%s ist keine gueltige Ganzzahl.\n", numberAsString);
		}
	}

	while (result != 1) {
		printf("Ganzzahl eingeben: ");
		result = scanf_s("%i", &number);

		while ((ch = getchar()) != '\n' && ch != EOF);

		if (result != 1) {
			printf("Ihre Eingabe ist keine gueltige Ganzzahl.\n");
		}
	}

	return number;
}


int multiplication(int operant1, int operant2) {
	int solution = 0;

	if (operant1 < 0) {
		operant2 *= -1;
		operant1 *= -1;
	}

	for (int i = 0; i < operant1; ++i) {
		solution += operant2;
	}

	return solution;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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