• Wir präsentieren Dir heute ein Stellenangebot für einen Frontend-Entwickler Angular / Java in Braunschweig. Hier geht es zur Jobanzeige

Versuch ein Programm in C zu schreiben

J

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:

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;
    }
   }
 
Thallius

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
 
J

jack_1

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

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;
}
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

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.
 
J

jack_1

Mitglied
Sorry mein fehler.

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

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;
}

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

Anzeige

Neue Themen


Oben