fehler unter visual studio 2005

marcperso2005

Grünschnabel
Hallo zusammen,
ich fange mit der Benutzung von Microsoft Visual Studio 2005, und verstehe nicht folgendes Fehler beim kompilieren unterstehenden code:
Fehler
Code:
Error	1	error C2143: syntax error : missing ')' before ';'	c:\dokumente und einstellungen\armand chrystel\eigene dateien\visual studio 2005\projects\sol_fh_aufgaben1\fh_aufgaben3\abstieg.c	21	
Error	2	error C2059: syntax error : ')'	c:\dokumente und einstellungen\armand chrystel\eigene dateien\visual studio 2005\projects\sol_fh_aufgaben1\fh_aufgaben3\abstieg.c	21	
Error	3	error C2143: syntax error : missing ';' before '{'	c:\dokumente und einstellungen\armand chrystel\eigene dateien\visual studio 2005\projects\sol_fh_aufgaben1\fh_aufgaben3\abstieg.c	22

code(bis jetzt)
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NTAB 4;
int myrand (void)
{
	static int first=0;
	if ( first ==0 )
	{
		srand((unsigned)time(NULL));
		first=1;
	};
	return (rand());
};

int main (void)
{
	int tab[5],temp[5];
	int test=0,i,j,k,l,n=0;
	for ( i=0;i<NTAB;i++)
	{
		printf("give the number %d : ",i);
		scanf("%d",&tab[i]);
		temp[i]=tab[i];
	};
	do 
	{				
		
		
	} while (!test);
};
gibt's da ein paar sachen ,dass man bei dem software einstellen muß
ich danke Ihnen im voraus für Ihre Hilfe.
 
Hey marcperso2005,
ich glaube der Fehler liegt am Semikolon! Versuch doch mal ein Komma da reinzusetzen.

Gruss Fat-Z
 
Der Befehl
Code:
#define NTAB 4
Darf kein Semikolon am Ende haben. Präprozessor-Befehle haben nie ein Semikolon am Ende der Zeile. Aber du sollst sowieso keine Variablen mit dem #define Befehl verwenden.

Ausserdem hast du viele sonstige unnötige Semikolons. Es braucht am Ende von if-, for-... Schlaufen keine Strichpunkte. Auch am Ende von Funktionen nicht.

Gruss LukeS
 
erstmal möchte ich mich bedanken für eure Hilfe, hier ist das aktuelle code
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <string.h>

#define NTAB 4
#define NMAX 3   // how big may the start-numbers be

typedef enum {false,true} boolean;
typedef int  tabn_t[5];
int myrand (void)
{
	static int first=0;
	if ( first ==0 )
	{
		srand((unsigned)time(NULL));
		first=1;
	};
	return (rand());
}
struct tabelle 
{
	tabn_t tab;
	struct tabelle *next;
};
struct ncase 
{
	int n;
	tabn_t tab;
	struct ncase *next;
};

int main (void)
{
	int a,b,c,d;
	tabn_t tab,temp;
	int test=0,i,j,k,n=0,test2,test3,count=0;
	struct tabelle *first,*p,*p1;	 
	struct ncase *f,*t,*t1,*p2,*bestcase;					  // f and t are first and temporal pointer for "struct ncase" variables 
	double maxcase;
	boolean happened=false;
	/*for ( i=0 ; i<4; ++i )
	{
	temp[i]=(myrand()%NMAX);
	printf("choosen number %d : %d\n",i+1,temp[i]);

	}	 */
	maxcase=pow(4,NMAX);

	for (a=0;a<4;a++)
		for (b=0;b<4;b++)
			for (c=0;c<4;c++)
				for (d=0;d<4;d++)
					{

						printf("choosen number : ");
						for ( i=0 ; i<4; ++i )
						{
							if ( i==0)
								temp[i]=a;
							if ( i==1)
								temp[i]=b;
							if ( i==2) 
								temp[i]=c;
							if ( i==3)
								temp[i]=d;
							printf("    %d",temp[i]);

						}
						scanf("%d",i);
						if (count!=0)
							p2=t;
						t=malloc(sizeof(struct ncase));
						if (count==0)
							f=t;
						else
							p2->next=t;
						memcpy(t->tab,temp,sizeof(t->tab));


						test2=0;

						n=0;
						while ( !test2)
						{		  
							printf("  \t");
							if (n==0)
								for ( i=0 ; i<4; ++i )
								{
									printf("%d    ",temp[i]);	
								};
							printf("\n\n");
							n++;

							printf("%d:\t",n);

							if ( n!=1)
							{
								p1=p;
								p=malloc(sizeof(struct tabelle));
								p1->next=p;		
							}
							else
							{
								p=malloc(sizeof(struct tabelle));
								p1=p;
								p->tab[0]=temp[0];
								first=p;
							}
							for ( i=0 ; i<4; ++i )
							{
								if ( i==3 )
								{

									temp[i]=(int) abs(temp[i]-p1->tab[0]);

								}
								else
								{
									temp[i]=(int) abs(temp[i+1]-temp[i]);
								}


							}
							for ( i=0 ; i<4; ++i )
							{
								p->tab[i]=temp[i];
								printf("%d    ",p->tab[i]);	
							}

							printf("\n");	

							if ((temp[0]==0)&&(temp[1]==0)&&(temp[2]==0)&& (temp[3]==0)   )
								test2=1;
							else test2=0;

						}
						t->n=n;
						count++;

					};

	t=f;
	j=0;

	bestcase=f;
	while(t)
	{
		j++;
			if ((bestcase->n)<(t->n) )
				bestcase=t;
		if ( t->next)
			t=t->next;
		else 
			break;
		if (j==count) break;

	}
	printf (" case with the biggest number of iterations from %d cases: ",count);
				for (i=0;i<4;i++)
			{
				printf("%d    ",bestcase->tab[i]);

			}
				printf("with %d iterations\n",bestcase->n);
	t=f;
	j=1;
	k=0;
	/*while (t)
	{
		if (t->n==bestcase->n)
		{
			printf(" %d-",j++);
			if (j<10)
				printf(" ");
			else if (j<100)
				printf(" ");
			else if (j<1000)
				printf(" ");
			for (i=0;i<4;i++)
			{
				printf("%d    ",t->tab[i]);

			}
			printf("with %d iterations %d\n",t->n,t->next->n);
		};
		if (t->next)
			t=t->next;
		else break;
		 k++;
		 if (k>=count)
			 break;
	};
				*/


	p=first;
	j=0;
	while(p)
	{	
		/*for ( i=0 ; i<4; ++i )
		{
		printf("%d    ",p->tab[i]);	
		}
		scanf("%d",&k);	  */
		if ( p->next)
			p1=p->next;
		else
		{
			free(p);
			break;
		}
		free(p);
		p=p1;
		j++;
		if ( j==n)
			break;
	}	
	t=f;
	j=0;
	while(t)
	{	
		if ( t->next)
			t1=t->next;
		else
		{
			free(t);
			break;
		}
		free(t);
		t=t1;
		j++;
		if ( j==count)
			break;
	}
	return (0);
}

es ist schon so gut wie fertig, aber ich bekomme beim debugging das folgende
Code:
		longone	1 '?'	char
		number	1	unsigned long
		pointer	0x00000004	void *
und eine Codeseite namens "input.c" öffnet sich im Studiofenster auch,mit einem marker bei der linie
Code:
                                    *(long UNALIGNED *)pointer = (unsigned long)number;

was kann ich mit diesem fehlermeldung vom debugger anfangen?
 
vielleicht sollte ich erwähnen , dass ich bin dabei die aufgabe hierunter so zu ergänzen, dass mein Programm mir alle möglichen Fälle sucht! ( einfach so zur Übung)
Der längste Abstieg...

Das Spiel "der längste Abstieg" geht so: Man schreibt vier (ganze, nicht-negative) Zahlen nebeneinander auf die Tafel. Dann ermittelt man die Differenz zwischen je zwei nebeneinanderstehenden Zahlen und schreibt sie darunter. Hinzu kommt die Differenz aus erster und letzter Zahl. Nun hat man also vier neue Zahlen erhalten. Hiermit macht man das gleiche, usw. solange, bis am Ende vier mal die Null erscheint. Ziel des Spieles ist es, die Anfangswerte so zu wählen, dass der Abstieg möglichst lange dauert.
Beispiele für drei mögliche Spiele

Anfangswerte?
>> 1 2 3 5

1 2 3 5
1: 1 1 2 4
2: 0 1 2 3
3: 1 1 1 3
4: 0 0 2 2
5: 0 2 0 2
6: 2 2 2 2
7: 0 0 0 0

Rundenzahl: 7



Anfangswerte?
>> 1 2 3 4

1 2 3 4
1: 1 1 1 3
2: 0 0 2 2
3: 0 2 0 2
4: 2 2 2 2
5: 0 0 0 0

Rundenzahl: 5



Anfangswerte?
>> 1 3 6 12

1 3 6 12
1: 2 3 6 11
2: 1 3 5 9
3: 2 2 4 8
4: 0 2 4 6
5: 2 2 2 6
6: 0 0 4 4
7: 0 4 0 4
8: 4 4 4 4
9: 0 0 0 0

Rundenzahl: 9

Hinweis: die Umrandung dient hier nur der besseren Darstellung. Sie ist nicht extra auszugeben!
Ihre Aufgabe

1. Schreiben Sie ein Programm, welches die vier Zahlen erfragt, das Spiel ausführt (indem es die jeweiligen Zeilen ausgibt) und am Ende die Zahl der Schritte anzeigt.
2. Gewinnen Sie das Spiel gegenüber Ihren Kommilitonen, indem Sie die besten Anfangszahlen finden.
3. Noch besser: finden Sie Startwerte, bei denen das Programm gar nicht endet. Bei drei Anfangswerten wäre dies z.B. (1,1,0) --> (0,1,1) --> (1,0,1) --> (1,1,0)
 
Hi.
es ist schon so gut wie fertig, aber ich bekomme beim debugging das folgende
Code:
		longone	1 '?'	char
		number	1	unsigned long
		pointer	0x00000004	void *
und eine Codeseite namens "input.c" öffnet sich im Studiofenster auch,mit einem marker bei der linie
Code:
                                    *(long UNALIGNED *)pointer = (unsigned long)number;

was kann ich mit diesem fehlermeldung vom debugger anfangen?
Der Fehler führt zwar an dieser Stelle dann zum Programmabsturz - die Ursache liegt natürlich aber nicht in dem Code der Standardbibliothek sondern in deinem. Du solltest dann im Debugger einfach einige Schritte im Stackframe nach oben gehen bis du an der Stelle im Code angegekommen bist wo der Aufruf der Standardfunktion stattgefunden hat.

Ich vermute mal ganz stark das es diese Zeile ist:
Code:
						scanf("%d",i);
}
Du mußt bei scanf einen Zeiger übergeben.

Gruß
 
Zurück