Witam, jestem początkującym "programistą" w C++, tzn. kompletnie mi to nie wychodzi. Staram się rozwiązać problemy z ostatniego kolokwium i mam takie o to zadanko:
"W funkcji main zadeklarowano tablicę przechowującą słowa jako łańcuchy znaków (char*). Napisz funkcję która sprawdzi czy w tablicy znajduje się poszukiwane słowo. Funkcja powinna przyjmować wskaźnik do tej tablicy, jej wielkość, oraz poszukiwane słowo, oraz zwracać wartość prawda lub fałsz w zależności od rezultatu."
Kombinowałem już na kilka sposobów, program kompiluje, prawidłowo przyjmuje argumenty wywołania (specjalnie napisałem pętle wypisującą te argumenty) ale niestety nie działa prawidłowo, tj. funkcja zawsze zwraca false, nawet jeśli podam prawidłowe słowo.
Tu kod mojego programu
#include <iostream>
#include <string>
using namespace std;
bool szuka_slowo(char (*argv[]), int argc, char * slowo)
{
for (int i = 0; i < argc; i++)
{
if (strcmp(argv[i], slowo) == 0)
{
cout << "poprawna odpowiedz\n";
return true;
}
else
{
cout << "niepoprawna odpowiedz\n";
return false;
}
}
}
int main(int argc, char* argv[])
{
char slowo;
cout << "podaj szukane slowo:\n";
cin >> slowo;
cout << "program wypisze argumenty wywolania\n";
cout << "//////////////////////\n";
for (int i = 0; i < argc; i++)
{
cout << argv[i] << '\n';
}
cout << "//////////////////////\n";
bool odpowiedz = szuka_slowo(argv, argc, &slowo);
cout << odpowiedz << '\n';
system("PAUSE");
}
Proszę o wyrozumiałość, pewnie błąd jest banalny ale ja już nie daje rady. Przekopałem internet, książki i nie mogę znaleźć rozwiązania na ten problem. Może po prostu brak mi wyobraźni by pojąć te wskaźniki. Jedyne co mi przychodzi do głowy to to, że błąd tkwi w w 5 linii kodu "char (*argv[])" ponieważ w poleceniu napisane jest, że funkcja ma przyjmować wskaźnik do tej tablicy, a argv sam w sobie jest tablicą wskaźników na obiekty typu char. Zależy mi, żeby chociaż trochę załapać tego C++, bo prawdopodobnie będę szykował się na kolokwium poprawkowe. Proszę o wszelkie rady, czy też źródła gdzie mógłbym znaleźć odpowiedź na moje pytanie.
Pozdrawiam,
xartez.