Versuch ein Programm in C zu schreiben

jack_1

Mitglied
Hallo, als Anfänger versuche ich ein Programm in C zu schreiben. Daher bitte ich um Hilfe...

Das Programm soll mir die Anzahl der Zahlen innerhalb eines Bereiches ausgeben, die eine bestimmte Quersumme haben. ( mit Hilfe einer function)

Habe das bis jetzt geschrieben:

[CODE lang="c" title="C"]#include <stdio.h>
// Funktion Quersumme
int digsum(int z)
{
int q=0;
while(z>0)
{
q+= z%10;
z /=10;
}
return q;
}

int main(){
int quersumme = 20; // Zu suchende Quersumme
int i;
for (int i = 0; i <= 1000; i++) { // Mein Zahlenbereich; soll in einer Schleife um 1 erhöht werden und überprüft werden ob die Quersumme erreich wurde
int qs = digsum(i);
if (qs == quersumme) {

.......? // Wie kann ich hier die gefundenen Quezahlen aufzählen?

printf("%d", i); // Anzahl der Quersummen
}
return 0;
}
}


[/CODE]
 

Thallius

Top Contributor
definiere eine variable int found = 0 ausserhalb der Schleife und zähle diese bei jeder gefundenen richtigen Quersumme um eins hoch. Nach der Schleife gibst du die dann aus
 

jack_1

Mitglied
Erstmal danke für deinen Input. Mal schauen ob ich das richtig verstanden habe:

[CODE lang="c" title="C"]#include <stdio.h>
// Funktion Quersumme
int digsum(int z)
{
int q=0;
while(z>0)
{
q+= z%10;
z /=10;
}
return q;
}

int main(){
int quersumme = 20; // Zu suchende Quersumme
int i;
int found = 0;
for (int i = 0; i <= 10000; i++) { // Mein Zahlenbereich; soll in einer Schleife um 1 erhöht werden und überprüft werden ob die Quersumme erreicht wurde
int qs = digsum(i); // Berechnung Quersumme
if (qs == quersumme){ // Wenn Berechnete quersumme gleich eingegebener Quersumme
found = qs + 1; // Dann Wert in Variable found schreiben


printf("%d", found); // Anzahl der Quersummen



}
}
return 0;
}

[/CODE]Nun bekomme ich beim Compilieren keinen Fehler aber dennoch funktioniert mein kleines Programm nicht. Mache ich da einen Fehler beim Aufzählen der Variable in found?
 
Zuletzt bearbeitet:

temi

Top Contributor
Deine Änderung macht es nicht besser. Schreibe bitte einen neuen Beitrag, anstatt zu editieren. Sonst passen die Antworten nicht mehr zum Beitrag und keiner kann mehr dem Thema folgen.

Du möchtest nicht die Quersumme um eins erhöhen, sondern die Anzahl der gefundenen Quersummen um eins erhöhen.
 

jack_1

Mitglied
Sorry mein fehler.

Ok die Anzahl der gefundenen Quersummen steht ja in der Variable found somit:

[CODE lang="c" title="C"]#include <stdio.h>
// Funktion Quersumme
int digsum(int z)
{
int q=0;
while(z>0)
{
q+= z%10;
z /=10;
}
return q;
}

int main(){
int quersumme = 20; // Zu suchende Quersumme
int i;
int found = 0;
for (int i = 0; i <= 10000; i++) { // Mein Zahlenbereich; soll in einer Schleife um 1 erhöht werden und überprüft werden ob die Quersumme erreicht wurde
int qs = digsum(i); // Berechnung Quersumme
if (qs == quersumme){ // Wenn Berechnete quersumme gleich eingegebener Quersumme
found = found +1; // Dann Wert in Variable found schreiben


}


}
printf("%d", found); // Anzahl der Quersummen
return 0;
}
[/CODE]

Ich nehme an dass ich printf ausserhalb dem Gültigkeitsbereich der Schleife schreiben muss?
 
Zuletzt bearbeitet:
B

BestGoalkeeper

Gast
@jack_1 es lassen sich noch ein paar Zeichen einsparen
C:
#include <stdio.h>

int iter_dig_sum(unsigned long int ul)
{
    int sum = 0;
    while (ul != 0)
    {
        sum += ul % 10;
        ul /= 10;
    }
    if (sum < 10)
        return sum;
    return iter_dig_sum(sum);
}

int main()
{
    int i = 0;
    for (i = 100; i < 200; i++)
    {
        printf("%d -> %d\n", i, iter_dig_sum(i));
    }
    return 0;
}
 

Ähnliche Java Themen

Neue Themen


Oben