C Programm funktioniert einfach nicht :

Hallo,
lerne zur Zeit ein bisschen c und habe mich jetzt mal hier registriert weil ich hier oft nützliche Tips gefunden hab die mir sehr geholfen haben.

Normal mache ich so etwas ja eigentlich nicht aber mein Programm welches ich progrmieren will funktioniert einfach nicht und ich komme einfach nicht darauf was ich falsch mache. Deswegen wollte ich jetzt einmal fragen ob mir hier vielleicht wer helfen kann.

Mein Programm soll einfach eine zufällige kombination von 0 und 1 generieren und dann immer jeweils zwei stellen untersuchen und diese dann zu ersetzen. Aus zwei gleichen Ziffern soll eine 0 gemacht werden aus zwei unterschiedlichen eine 1. Das ganze sieht dann ungefähr so aus.

10010111
1110
01
1

Hier der Quellcode von meinem Pogramm
#include 
#include 
#include 

int main(void)
{

 int n, i, zahl[1000];

 printf("Länge der 0/1-Folge (max. 1000): ");
 scanf("%d", &n);

 srand(time(NULL));

 for(i = 0; i 1){
 n = ordnen(n, zahl);
 printf("\n");
 }

 return 0;
}


int ordnen(int j, int za[])
{
 int m, i, t;
 t = j;
 for(m = 0, i = 0; i 

Wäre super wenn mir jemand weiterhelfen könnte.

Schon mal im Vorraus vielen Dank

Gruß Benny

Kristallkugel benötigt
Hi,

mein Programm welches ich progrmieren will funktioniert einfach nicht

Geht’s vielleicht etwas genauer? Was passiert, wenn Du das Programm laufen lässt? Absturz? Fehlermeldung? Falsche Ausgaben? Welche? - Mein Hellseh-Kurs an der VHS beginnt nämlich erst nächste Woche.

Trotzdem ein Tipp.
In der Funktion ordnen() kriegst Du Probleme mit den beiden 'if’s.
Im ersten Schleifendurchlauf ist i == m, und wenn das zahl[] Array mit „11…“ beginnt, macht das erste if daraus „01…“ und das zweite wieder „11…“. Außerdem wird j zweimal dekrementiert. Also nicht zwei ifs nehmen, sondern if/else.

int ordnen(int j, int za[])
{
int m, i, t;
t = j;
for(m = 0, i = 0; i

Wäre super wenn mir jemand weiterhelfen könnte.

Schon mal im Vorraus vielen Dank

Gruß Benny

Gruß
KHK

Hallo,

lerne zur Zeit ein bisschen c und habe mich jetzt mal hier
registriert weil ich hier oft nützliche Tips gefunden hab die
mir sehr geholfen haben.

OK

Normal mache ich so etwas ja eigentlich nicht aber mein
Programm welches ich progrmieren will funktioniert einfach
nicht und ich komme einfach nicht darauf was ich falsch mache.
Deswegen wollte ich jetzt einmal fragen ob mir hier vielleicht
wer helfen kann.

Mal schauen.

Mein Programm soll einfach eine zufällige kombination von 0
und 1 generieren und dann immer jeweils zwei stellen
untersuchen und diese dann zu ersetzen. Aus zwei gleichen
Ziffern soll eine 0 gemacht werden aus zwei unterschiedlichen
eine 1.

Das nennt man XOR (exlusives oder), in C mit ‚^‘ gekennzeichnet.

Hier der Quellcode von meinem Pogramm

Wäre super wenn mir jemand weiterhelfen könnte.

Hmm, die Ordnen-Funktion kann so nicht gehen,
da die Indizierung des Feldes ‚zahl‘ nach dem
ersten Durchlauf nicht mehr stimmt.

Ich habs mal minimal verändert:

#include 
#include 
#include 

 int ordnen(int a[], int n);
 void ausgeben(int a[], int n);
 #define MAXZAHL 1000

 int main(void)
{
 char buffer[128];
 int i, n, zahl[MAXZAHL];
 
 srand(time(NULL));
 printf("Laenge der 0/1-Folge (max. %d): ", MAXZAHL);
 fgets(buffer, sizeof(buffer), stdin);
 sscanf(buffer, "%d", &n);
 if(n \> MAXZAHL) n = MAXZAHL; /\* Grenze beachten \*/
 if(n & 1) n &= ~1; /\* Geradzahligkeit beachten \*/
 /\* Reihe erzeugen \*/
 for(i=0; iRAND\_MAX/2-1;\*/
 /\* und anzeigen \*/
 ausgeben(zahl, n);

 /\* Reduktion durchfuehren \*/
 while(n \> 1) {
 n = ordnen(zahl, n);
 ausgeben(zahl, n);
 }
 return 0;
}

 int ordnen(int zahl[], int n)
{
 int i, j;
 for(i=0,j=0; j

Grüße

CMБ

Hallo,
hab jetzt mal meine beiden „if“ anweißungen durch eine „if… else“ Anweißung ersetzt. Jetzt funktioniert es so weit bis auf wenn ich jetzt z.b.
die Zahlen

010 habe möchte ich dass er mir die null einfach mit
runter nimmt weil er ja keine weiter Zahl hat. Sprich dann

10 ausgibt. Das ist aber leider nicht immer der Fall. Ich weiß leider auch nicht wie des gehen soll weil ich leider auch nicht weiß was der Compiler macht wenn der eine Arraywert nicht definiert ist. Tuh mich gerade auch weng schwer mein Problem zu beschreiben :-/

Weiß nicht hoff jemand versteht mich :smile:

Gruß Benny