Uczę się C++ i piszę program dealera kart. Kiedy kompiluję kod i otrzymuję te błędy:
dealer3.cpp:12: error: expected initializer before ‘int’
dealer3.cpp:33: error: expected constructor, destructor, or type conversion before ‘=’ token
dealer3.cpp:34: error: expected constructor, destructor, or type conversion before ‘=’ token
dealer3.cpp:35: error: expected constructor, destructor, or type conversion before ‘=’ token
dealer3.cpp:36: error: expected constructor, destructor, or type conversion before ‘=’ token
dealer3.cpp:37: error: expected constructor, destructor, or type conversion before ‘<<’ token
dealer3.cpp:38: error: expected declaration before ‘}’ token
A oto mój kod
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<cmath>
using namespace std;
int randn(int n);
void draw();
int uni(int n);
char *suits[4]={"Hearts","Diamonds","spades","clubs"};
char *ranks[13]={"ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king"};
int drawn[52];
int remaining=52;
int main() {
int n;
int i;
srand(time(NULL));
while(1) {
cout<<"enter number of cards to draw"<<endl;
cin>>n;
if (n==0) break;
for (i=1; i<=n; i++)
draw();
}
return 0;
}
int r;
int s;
int n;
int card;
n=randn(remaining--);
card=uni(n);
r=card%13;
s=card/13;
cout<<ranks[r]<<" of "<<suit[s]<<endl;
}
int uni(int n)
{
int i=0;
while (drawn[i])
i++;
while (n-->0){
i++;
while (drawn[i])
i++;
}
card_drawn([i])=true;
return i;
}
int randn (int n){
return rand()%n;
}
Dlaczego to?
2 odpowiedzi
Właściwie jest to fajny przypadek, w którym wcięcie kodu rozwiązałoby problem (lub uczyniłoby rozwiązanie bardzo oczywistym), ponieważ spowodowałoby to wyświetlenie kilku błędów w nawiasach klamrowych. Masz kilka wierszy kodu, które znajdują się poza jakąkolwiek funkcją, która tam nie należy.
Kilka wskazówek dotyczących formatowania dla Ciebie:
- Wcięcie każdego zagnieżdżonego bloku kodu o stałą liczbę spacji (zwykle 4).
- Pozostaw pustą linię po każdej funkcji.
- Otwierając nowy blok dla funkcji lub instrukcji
for
-,while
- lubif
-(lista jest długa), pamiętaj, aby konsekwentnie umieszczać nawiasy otwierające (tak samo styl w całym kodzie). - upewnij się, że nawias zamykający blok jest na tym samym poziomie wcięcia, co instrukcja/nawias, który go otworzył.
Zauważ, że większość IDE ma opcję automatycznego naprawiania formatowania (zwłaszcza wcięcia).
if
, while
itd. i nie mam pojęcia, jak to się ma do błędu. Do każdego własnego, więc nie ma „dobra” lub „niedobra”.
Masz brakującą klamrę. A następujące stwierdzenie (s) trafia do globalnej przestrzeni:
n=randn(remaining--);
// ...
Podobne pytania
Nowe pytania
c++
C ++ to język programowania ogólnego przeznaczenia. Pierwotnie został zaprojektowany jako rozszerzenie C i ma podobną składnię, ale teraz jest to zupełnie inny język. Użyj tego tagu w przypadku pytań dotyczących kodu (który ma zostać) skompilowany za pomocą kompilatora C ++. Użyj znacznika specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardu [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] lub [C ++ 23] itp. .