C++ :: Aufgabe #250 :: Lösung #1
1 Lösung
#250
Ägyptische Bruchrechnung
Fortgeschrittener - C++
von hollst
- 22.12.2019 um 22:50 Uhr
Gegeben seien zwei positive Ganzzahlen Z (wie Zaehler) und N (wie Nenner) mit N > Z
und Z sei kein Teiler von N.
Der Bruch Z/N ist immer als Summe der Kehrwerte positiver Ganzzahlen (Stammbrüche) darstellbar,
wobei es meist mehrer Möglichkeiten der Darstellung gibt.
Beispiele:
5/6 = 1/2 + 1/3 = 1/2 + 1/4 + 1/12 = 1/2 + 1/4 + 1/13 + 1/156 = ...
17/39 = 1/3 + 1/10 + 1/390 = ...
Man schreibe ein Programm, das Z und N entgegennimmt und die Zahlen der Stammbrüchesumme mit den wenigsten Summanden ausgibt.
Also obere Beispiele:
Input 5 und 6, Output 2 und 3,
Input 17 und 39, Output 3, 10 und 390.
Viel Spaß.
und Z sei kein Teiler von N.
Der Bruch Z/N ist immer als Summe der Kehrwerte positiver Ganzzahlen (Stammbrüche) darstellbar,
wobei es meist mehrer Möglichkeiten der Darstellung gibt.
Beispiele:
5/6 = 1/2 + 1/3 = 1/2 + 1/4 + 1/12 = 1/2 + 1/4 + 1/13 + 1/156 = ...
17/39 = 1/3 + 1/10 + 1/390 = ...
Man schreibe ein Programm, das Z und N entgegennimmt und die Zahlen der Stammbrüchesumme mit den wenigsten Summanden ausgibt.
Also obere Beispiele:
Input 5 und 6, Output 2 und 3,
Input 17 und 39, Output 3, 10 und 390.
Viel Spaß.
#1
von TestUser (60 Punkte)
- 05.03.2020 um 01:08 Uhr
C-Code
#include <iostream> using namespace std; int func(int Z, int N, int *arr, int init_Z, int init_N) { int counter = 1; int tmp = Z; static int function_count = 0; while (Z <= N) { Z+=tmp; counter++; } arr[function_count]=counter; int new_Z = Z*tmp - N*tmp; int new_N = Z*N; if (new_N%new_Z == 0) { arr[++function_count] = new_N/new_Z; cout << "Your given fraction can be expressed as followed: \n" << init_Z << "/" << init_N <<" = "; for(int i = 0; i <= function_count; i++) { cout << "1/" << arr[i]; if(i != function_count) { cout << " + "; } } cout << endl; } else { function_count++; func(new_Z,new_N, arr, init_Z, init_N); } return 0; } int main() { int Z; int N; int arr[50]; cout << "Welcome to the Egyptian-fraction-Calculator!" << endl; cout << "Enter Counter:" << endl; cin >> Z; cout << "Enter Denominator:" << endl; cin >> N; func(Z,N, arr, Z, N); return 0; }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1