schroedinger87
Cadet 1st Year
- Registriert
- Dez. 2021
- Beiträge
- 8
Hallo liebe C-Spezialisten.
Ich habe folgende Aufgabenstellung zum Collatz-Problem (3n+1):
1. Schreiben Sie ein Programm das zwei zahlen m und p einließt und daraus eine Collatz Zahlenfolge bildet.
2. Es muss auch ausgeben welches die größte Zahl ist, die in ihren Schritten enthalten ist. Parameter max.
3. Das Programm muss folgende Prozedur implementieren und verwenden: void converge (int n, in *steps, int *max); . das
4. Es sollen die Anzahl der Schritte im Parameter steps gespeichert werden, welche benötigt werden um das Problem zu lösen.
Mein Code bisher:
#include <stdio.h>
int main(void) {
int m;
int p;
printf("Erste Zahl eingeben: ");
scanf("%d", &m);
printf("Zweite Zahl eingeben: ");
scanf("%d", &p);
printf("Collatz-Reihe von %d: \n", m);
while(m != 1) {
if(m%2 == 0) {
m = m / 2.0;
printf("%d\n", m);
}
else {
m = 3 * m + 1;
printf("%d\n", m);
}
}
printf("Collatz-Reihe von %d: \n", p);
while(p != 1) {
if(p%2 == 0) {
p = p / 2.0;
printf("%d\n", p);
}
else {
p = 3 * p + 1;
printf("%d\n", p);
}
}
return 0;
}
Punkt 1 funktioniert. Doch wie bekomme ich den Rest mit Maximalwert und Anzahl der Schritte hin?
Ich habe folgende Aufgabenstellung zum Collatz-Problem (3n+1):
1. Schreiben Sie ein Programm das zwei zahlen m und p einließt und daraus eine Collatz Zahlenfolge bildet.
2. Es muss auch ausgeben welches die größte Zahl ist, die in ihren Schritten enthalten ist. Parameter max.
3. Das Programm muss folgende Prozedur implementieren und verwenden: void converge (int n, in *steps, int *max); . das
4. Es sollen die Anzahl der Schritte im Parameter steps gespeichert werden, welche benötigt werden um das Problem zu lösen.
Mein Code bisher:
#include <stdio.h>
int main(void) {
int m;
int p;
printf("Erste Zahl eingeben: ");
scanf("%d", &m);
printf("Zweite Zahl eingeben: ");
scanf("%d", &p);
printf("Collatz-Reihe von %d: \n", m);
while(m != 1) {
if(m%2 == 0) {
m = m / 2.0;
printf("%d\n", m);
}
else {
m = 3 * m + 1;
printf("%d\n", m);
}
}
printf("Collatz-Reihe von %d: \n", p);
while(p != 1) {
if(p%2 == 0) {
p = p / 2.0;
printf("%d\n", p);
}
else {
p = 3 * p + 1;
printf("%d\n", p);
}
}
return 0;
}
Punkt 1 funktioniert. Doch wie bekomme ich den Rest mit Maximalwert und Anzahl der Schritte hin?
Zuletzt bearbeitet: