Я работаю в школьном проекте, и я программирую игру Hangman. Нельзя использовать объектно-ориентированное программирование. Итак, я просто подумал о функциях (умный мальчик: D).слишком мало аргументов функции (char *)
Теперь у меня есть эти функции:
void LoadHangman();
int PlayHangman(char searchedWord[20], char platzhalter[8]);
int FindLengthFromString(char searchedWord[]);
int CheckIfLostOrWon();
В функции LoadHangman я инициирую Слово, которое должно получить найти от позже пользователя. Также я инициировал обугленного Arry под названием заполнителем, который только что получил «_»
char searchedWord[20] = {'H','a','n','g','m','a','n',0};
char placeholder[8] = {'_','_','_','_','_','_','_'};
Теперь я хочу передать (извините за это плохой английский) его функции PlayHangman (...)
PlayHangman(searchedWord,placeholder);
Теперь я начинаю функцию PlayHangman (...)
int PlayHangman(char searchedWord[20],char placeholder[8])
И компилятор просто говорит: в начале {из функции:
error: too few arguments to function 'int PlayHangman(char*, char*)'
В конце} от этой функции:
error: at this point in file
Я сердит о себе, что я к глупы, чтобы решить эту проблему (это, кажется, простой вопрос .... ..)
пс: Я читал книгу C++ ... но ... я ... просто .... Dont ... прибудете ... это .....
Hole Код, для всех этих богов программирования:
#include <iostream>
using namespace std;
///Funktionsdeklarationen
void LoadHangman();
int PlayHangman(char searchedWord[20], char placeholder[8]);
int FindLengthFromString(char searchedWord[]);
int CheckIfLostOrWon();
int main()
{
///Deklarationen
int won_lost = CheckIfLostOrWon();
///Programm
LoadHangman();
switch(won_lost)
{
case 1: cout << "\n\nGlückwunsch! Sie haben gewonnen!\n"; return 0;break;
case -1: cout << "\n\nSchade. Sie haben leider nicht gewonnen.\n";return 0; break;
default : break;
}
}
void LoadHangman()
{
///Deklarationen
char searchedWord[20] = {'H','a','n','g','m','a','n',0};
char placeholder[8] = {'_','_','_','_','_','_','_'};
int lengthFromString;
///Programm
lengthFromString = FindLengthFromString(searchedWord);
cout << "Gesuchtes Wort: ";
for(int i = 0; i < lengthFromString; i++) {cout << " " << placeholder[i] << endl;}
cout << "Bitte geben Sie einen Buchstaben ein: ";
PlayHangman(searchedWord,placeholder);
}
int PlayHangman(char searchedWord[20],char placeholder[8])
{
///Deklarationen /Initialisation
int uebereinstimmung;
int fehlerAnzahl = 0;
char character;
int lengthFromString = FindLengthFromString(searchedWord);
uebereinstimmung = 0;
///Programm
cin >> character;
for(int i = 0; i < lengthFromString; i++) //Für die Länge des Strings
{
if(character != searchedWord[i]) {uebereinstimmung -= 1;} //Übereinstimmung verringern
else if(character == searchedWord[i]) {placeholder[i] = character; uebereinstimmung = 100;}; //Platzhalter mit Buchstaben füllen und übereinstimmung auf 100 setzen
}
if(uebereinstimmung < 0) {fehlerAnzahl++;};
return fehlerAnzahl;
}
int CheckIfLostOrWon(char searchedWord[],char placeholder[])
{
///Deklarationen
int lengthFromString = FindLengthFromString(searchedWord);
int fehlerAnzahl = PlayHangman();
///Programm
int won = 0;
for(int i = 0; i < lengthFromString; i++)
{
if(placeholder[i] == searchedWord[i]) {won++;};
}
if(won == lengthFromString) {return 1;};
switch(fehlerAnzahl)
{
case 8: return -1;
}
}
int FindLengthFromString(char searchedWord[])
{
///Deklarationen
int lengthFromString = 0;
int i = 0;
///Programm
while(searchedWord[i] != 0) {lengthFromString++; i++;}
return lengthFromString;
}
Извините, комментарии находятся на немецком языке.
Уже пытались использовать (указатель)
int PlayHangman(char* searchedWord,char* placeholder)
не работает, а также.
[Результат для других]
я исправил свою stupidness:
INT fehlerAnzahl = PlayHangman (searchedWord, заполнитель);
Спасибо всем.
'CheckIfLostOrWon' должно« возвращать »значение во всех возможных путях (в настоящее время, если' fehlerAnzahl' не '8', тогда он упадет с конца, что приведет к неопределенному поведению) –
ваша строка' int fehlerAnzahl = PlayHangman (), 'неверно. Вы вызываете свою функцию без параметров. Нет параметра меньше, чем 2 :-) – Klaus
Почему у вас есть пустое имя ';' в нескольких местах после блоков управления? Кроме того, 'CheckIfLostOrWon' не всегда возвращает значение. 'warning: control достигает конца не-void функции [-Wreturn-type]' – Mahesh