ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
2020
2020
EMPFEHLEN
-
11.08.07 01:16 #1
- Registriert seit
- Aug 2007
- Beiträge
- 6
Hallo zusammen,
ich fange mit der Benutzung von Microsoft Visual Studio 2005, und verstehe nicht folgendes Fehler beim kompilieren unterstehenden code:
Fehler
Code :1 2 3
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)
gibt's da ein paar sachen ,dass man bei dem software einstellen muß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 29 30 31 32
#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); };
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-ZIntelligenz ist kein Privileg, sondern eine Gabe!
-
Der Befehl
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.Code :1
#define NTAB 4
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
-
12.08.07 18:43 #4
- Registriert seit
- Aug 2007
- Beiträge
- 6
erstmal möchte ich mich bedanken für eure Hilfe, hier ist das aktuelle code
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238
#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
und eine Codeseite namens "input.c" öffnet sich im Studiofenster auch,mit einem marker bei der linieCode :1 2 3
longone 1 '␁' char number 1 unsigned long pointer 0x00000004 void *
Code :1
*(long UNALIGNED *)pointer = (unsigned long)number;
was kann ich mit diesem fehlermeldung vom debugger anfangen?
-
12.08.07 18:45 #5
- Registriert seit
- Aug 2007
- Beiträge
- 6
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)
-
13.08.07 09:40 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.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:Du mußt bei scanf einen Zeiger übergeben.Code :1 2
scanf("%d",i); }
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
Ähnliche Themen
-
Ressourceneditor von Visual Studio 2005 verursacht Fehler
Von HCWD im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 06.01.08, 01:37 -
Problem mit ShellExecute unter Visual Studio 2005
Von Kona im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 19.03.07, 08:03 -
Visual Studio 2005 .NET 1.1
Von Deemax im Forum .NET CaféAntworten: 5Letzter Beitrag: 29.06.06, 14:21 -
C ohne MFC Visual Studio 2005: Fehler bei ShellExecute
Von HansJ im Forum C/C++Antworten: 1Letzter Beitrag: 24.04.06, 16:07 -
.Net 2.0 + Visual Studio 2005 + SQL Server 2005 released
Von Nico Graichen im Forum Coders TalkAntworten: 0Letzter Beitrag: 28.10.05, 16:00





Zitieren

Login






