tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
2020
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    marcperso2005 marcperso2005 ist offline Rookie
    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)
    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);
    };
    gibt's da ein paar sachen ,dass man bei dem software einstellen muß
    ich danke Ihnen im voraus für Ihre Hilfe.
     

  2. #2
    Avatar von Fat-Z
    Fat-Z Fat-Z ist offline Mitglied Bronze
    Registriert seit
    Dec 2006
    Ort
    Bayern
    Beiträge
    37
    Hey marcperso2005,
    ich glaube der Fehler liegt am Semikolon! Versuch doch mal ein Komma da reinzusetzen.

    Gruss Fat-Z
     
    Intelligenz ist kein Privileg, sondern eine Gabe!

  3. #3
    LukeS LukeS ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Beiträge
    128
    Der Befehl
    Code :
    1
    
    #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
     

  4. #4
    marcperso2005 marcperso2005 ist offline Rookie
    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
    Code :
    1
    2
    3
    
            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 :
    1
    
                                        *(long UNALIGNED *)pointer = (unsigned long)number;

    was kann ich mit diesem fehlermeldung vom debugger anfangen?
     

  5. #5
    marcperso2005 marcperso2005 ist offline Rookie
    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)
     

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von marcperso2005 Beitrag anzeigen
    es ist schon so gut wie fertig, aber ich bekomme beim debugging das folgende
    Code :
    1
    2
    3
    
            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 :
    1
    
                                        *(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 :
    1
    2
    
                            scanf("%d",i);
    }
    Du mußt bei scanf einen Zeiger übergeben.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Ressourceneditor von Visual Studio 2005 verursacht Fehler
    Von HCWD im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 06.01.08, 01:37
  2. Problem mit ShellExecute unter Visual Studio 2005
    Von Kona im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 19.03.07, 08:03
  3. Visual Studio 2005 .NET 1.1
    Von Deemax im Forum .NET Café
    Antworten: 5
    Letzter Beitrag: 29.06.06, 14:21
  4. Antworten: 1
    Letzter Beitrag: 24.04.06, 16:07
  5. .Net 2.0 + Visual Studio 2005 + SQL Server 2005 released
    Von Nico Graichen im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 28.10.05, 16:00