Wie kann man gerade Zahlen und ungerade Zahlen sowie Quadratzahlen in einer for Schleife darstellen in C

Neue Frage »

Auf diesen Beitrag antworten »
hey Wie kann man gerade Zahlen und ungerade Zahlen sowie Quadratzahlen in einer for Schleife darstellen

Meine Frage:
Ich will in einer FOr Schleife die geraden ( 12 bis 0) Zahlen getrennt mit einem Komma, sowie die ungeraden Zahlen (-1 bis -13) getrennt mit einem Komma und die Quadratzahlen darstellen (0 bis 81).
Jedoch kommt da immer ein Fehler

Meine Ideen:
#include <stdio.h>
#include <stdlib.h>

int main() {
int i;
int komma = 0;
for (i = 12; i >= 0; i-=2)
{
if (komma ==1) ;
{
printf (", ");
}
printf ("%d", i);
}
{
int j;
for (j = -1; j<=-13; j-=2)
{if (komma==1);
{printf (", ");
}
printf ("%d",j);

return 0;
}
}
}
 
Auf diesen Beitrag antworten »
as_string

Hier Dein Code formatiert:
#include <stdio.h>
#include <stdlib.h>

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
int main()
{
    int i;
    int komma = 0;
    for (i = 12; i >= 0; i -= 2)
    {
        if (komma == 1)
            ;
        {
            printf(", ");
        }
        printf("%d", i);
    }
    {
        int j;
        for (j = -1; j <= -13; j -= 2)
        {
            if (komma == 1)
                ;
            {
                printf(", ");
            }
            printf("%d", j);

            return 0;
        }
    }
}

Was mir gleich auffällt: Hinter einem if(...) darfst Du kein ";" schreiben! Da muss direkt der Code-Block kommen, der im Falle, dass der Ausdruck wahr wird, ausgeführt werden soll. Der Codeblock gehört noch zum if() mit dazu und deshalb ist die Anweisung noch gar nicht fertig und darf dann auch nicht mit einem Semikolon vom Block getrennt werden.
Die Variable "komma" wird mit 0 initialisiert, aber ihr Wert wird nie verändert. Wie soll da jemals die Bedingung in Deinen if-Anweisungen wahr werden können, wenn der Wert immer 0 ist, aber auf 1 überprüft wird?
In der zweiten for-Schleife steht ein "return 0;". Das bedeutet, wenn die for-Schleife zum ersten Mal durchlaufen wird, wird das ganze Programm gerade an dieser Stelle beendet. Das kannst Du ja nicht so gewollt haben. Kann es sein, dass das return 0 vor die letzte geschweifte Klammer muss und nicht in den for-Block mit rein?
Bei allen printf-Anweisungen gibst Du nie einen Zeilenumbruch aus. So wird alles in einer Zeile stehen.

Ansonsten ist mir noch nicht so ganz klar, wie die Ausgabe überhaupt aussehen soll. Kannst Du mal von Hand schreiben, wie Du Dir das genau vorstellst?

Gruß
Marco
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »