Vill du ha svar? Citera mig gärna.
Problem med c++
Visa signatur
Visa signatur
[Piikmiin]
Jag sitter här och pillar med ett simpelt hänga gubbe-spel (mitt första spel faktiskt ) men såklart så krånglar det.
Jag försöker få en utskrift med frågetecken med inget händer... Det verkar inte vara ett syntax-fel eftersom programmet körs "normalt", så det lutar enligt mig åt ett logiskt fel någonstans i koden, jag behöver bara hjälp att hitta felet. Här är koden:
//Hänga gubbe
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int antal;
char ordet[20];
void presentation();
void ordlista(char ord[]);
int antalBokstaver();
void fyllFalt(int antal);
int main()
{
presentation();
ordlista(ordet);
antal = antalBokstaver();
fyllFalt (antal);
return 0;
}
void presentation()
{
cout << "H\x84nga gubbe - v 0.1" << endl << endl;
}
void ordlista(char ord[])
{
srand(time(0));
int a = rand()%2 + 1;
if (a == 1) {
ord = "programmera"; }
else if (a == 2) {
ord = "playstation"; }
}
int antalBokstaver()
{
char test[] = "test";
for (int i; ordet[i] != test[4]; i++) {
antal++; }
return antal;
}
void fyllFalt (int antal)
{
for (int i = 0; i < antal; i++) {
cout << " ?"; }
}
(anledningen till att jag gjorde fältet test var för att jag inte lyckades skriva nolltecknet i en vanlig char variabel, finns säkert ett mycket bättre sätt, men detta var det enda jag kunde komma på!)
[Piikmiin]
Eftersom ordet är en global variabel så behöver du inte skicka den som argument till ordlista. Du kan ändå komma åt den inifrån funktionen.
Du kan inte tilldela char-arrayer värden på det sättet du gör i ordlista. Använd strcpy istället. Det blir då
void ordlista(char ord[])
{
srand(time(0));
int a = rand()%2 + 1;
if (a == 1)
strcpy(ord, "programmera");
else if (a == 2)
strcpy(ord, "playstation");
}
I antalBokstaver ger du inte 'i' något värde. Det räknas därför inte från första elementet av ordet, utan var det blir är odefinierat. Ger du 'i' värdet 0 så räknas det rätt. Jag rekommenderar dig dock att använda funktionen strlen istället. Det blir då
int antalBokstaver()
{
return strlen(ordet);
}
Ett annat tips är att använda string-klassen istället för char-arrayer. Det kan göra det ganska mycket enklare.
Vill du ha svar? Citera mig gärna.
tack så hemskt mycket, vad tänkte jag på, klart man använder srtlen.
[Piikmiin]
Copyright © 1999–2024 Geeks AB. Allt innehåll tillhör Geeks AB.
Citering är tillåten om källan anges.