Cześć,
Jestem studentem I roku dopiero co zaczynam naukę C i C++. Program który zamierzam napisać ma wyszukiwać najdłuższy wyraz w podanym zdaniu, wyświetlać jego długość i sam ten wyraz. Postanowiłem wykonać go za pomocą pętli i tablic. Nie wiem dlaczego nie działa pętla for którą podpisałem w kodzie, ani nawet nie wyświetla prostszych informacji (takich jak np: miejsca w tabeli gdzie znajduje się wyraz). Chciał bym aby ostatnie zdanie w tym programie podawało długość wyrazu i ten wyraz. Dziękuję również za wszelkie podpowiedzi dotyczące skrócenia zapisu tej funkcji, bo dopiero co zacząłem uczyć się programowania. Bardzo proszę o pomoc i z góry dziękuję.
Oto kod:
#include<iostream>
using namespace std;
int main()
{
int wybor;
char napis[100], wyraz[40];
int najdluzszy_wyraz = 0, tymczasowo_najdluzszy_wyraz = 0,
punkt_konca_najdluzszego_wyrazu = 0, punkt_poczatku_najdluzszego_wyrazu = 0;
cout << "Podaj zdanie : ";
cin.getline(napis, 100);
strcat_s(napis, " ");
cout << "Dlugosci poszczegolnych wyrazow : " << endl;
for (int i = 0; napis[i] != 0; i++)
{
if (napis[i] == ' ')
{
if (tymczasowo_najdluzszy_wyraz > najdluzszy_wyraz)
{
punkt_konca_najdluzszego_wyrazu = i;
najdluzszy_wyraz = tymczasowo_najdluzszy_wyraz;
punkt_poczatku_najdluzszego_wyrazu = punkt_konca_najdluzszego_wyrazu - najdluzszy_wyraz + 1;//dodaje 1 bo przed wyrazem jest spacja.
}
cout << tymczasowo_najdluzszy_wyraz << ", ";
tymczasowo_najdluzszy_wyraz = 0;
}
else
{
tymczasowo_najdluzszy_wyraz++;
}
}
cout << endl;
//gdy najdluzszy wyraz jest pierwszy, to nie ma przed nim spacji, wiec nie trzeba dodawac 1. Dlatego tu odejmuje 1.
if (punkt_poczatku_najdluzszego_wyrazu = 1)
{
punkt_poczatku_najdluzszego_wyrazu = 0;
}
cout << "Miejsce w tablei \"napis\" gdzie zaczyna sie najdluzszy wyraz : " << punkt_poczatku_najdluzszego_wyrazu << endl;
// Nie dziala mi ten for. CHODZI O TA PETLE
for (int k = punkt_poczatku_najdluzszego_wyrazu; napis[k] == ' '; k++)
{
wyraz[k - punkt_poczatku_najdluzszego_wyrazu] = napis[k];
cout << wyraz[k - punkt_poczatku_najdluzszego_wyrazu];
}
cout << endl;
//Ani ten.
for (int k = punkt_poczatku_najdluzszego_wyrazu; napis[k] == ' '; k++)
{
cout << napis[k];
}
cout << endl;
//Ani nawet ten.
for (int k = punkt_poczatku_najdluzszego_wyrazu; napis[k] == ' '; k++)
{
cout << k;
}
cout << endl;
// wyraz nie wyswietla sie prawidlowo.
cout << "Najdlozszy wyraz " << wyraz << " ma " << najdluzszy_wyraz << " liter" << endl;
system("pause");
system("cls");
return 0;
}