c) Znajdź napis najdłuższy. Wypisz pierwszy z nich. Podaj w jednym wierszu po kolejnych spacjach jego pozycję (numer wiersza), jego długość i jego postać
int funkcja_c(vector <string> array)
{
string temp;
int a;
bool palindrom=true;
for(int i=0; i<array.size();i++)
{
temp=array[i];
for(int j=0; j=temp.length();j++)
{
if(temp[j] != temp[temp.length()-1-j])
{
palindrom = false;
break;
}
else
{
palindrom = true;
cout<<temp;
a++;
}
}
}
return a;
wie ktoś dlaczego to nie działa?
- Rejestracja:ponad 3 lata
- Ostatnio:około 3 lata
- Postów:7

- Rejestracja:ponad 8 lat
- Ostatnio:około 4 godziny
- Postów:156
andonka napisał(a):
wie ktoś dlaczego to nie działa?
dlatego, że autor nie rozumie tego co robi
- sformatuj kod w czytelny sposób
- zastanów się co robi
for(int j=0; j=temp.length();j++)
- weź jakieś przykładowe słowo i przeanalizuj działanie programu, w szczególności pętli if

- Rejestracja:ponad 17 lat
- Ostatnio:około godziny
A ja poproszę definicję palindromu jak masz użyć i czy ma zajmować całą linię, czy może rozciąć się na wiele linii:
kajak
a to kajak
Jez leje lwa paw leje lzej
Jez leje lwa, paw leje lzej.
Ile Roman ładny dyndał na moreli?
Jeż leje lwa,
paw leje lżej.
zależnie od definicji powyższy przykład ma od 1 do 6 palindromów.
A to twój kod sformatowany i pokolorowany:
int funkcja_c(vector<string> array)
{
string temp;
int a;
bool palindrom = true;
for (int i = 0; i < array.size(); i++) {
temp = array[i];
for (int j = 0; j = temp.length(); j++) {
if (temp[j] != temp[temp.length() - 1 - j]) {
palindrom = false;
break;
}
else {
palindrom = true;
cout << temp;
a++;
}
}
}
return a;
}
Czemu ten twój kod wypisuje cokolwiek?
- Rejestracja:ponad 3 lata
- Ostatnio:około 3 lata
- Postów:7
Przeanalizowałem swoj program i postanowiłem go całkowicie zmienić teraz wygląda tak.
int funkcja_c(vector <string> array)
{
string temp;
int j,a;
bool palindrom=true;
for(int i=0; i<array.size(); i++)
{
temp=array[i];
j=temp.size()-1;
while(palindrom && i<j)
{
if(temp[i]=temp[j])
{
i++;
j--;
a++;
}
else
{
palindrom=false;
}
if(palindrom)
{
cout<<temp<<endl;
}
}
}
return a/2;
tylko nadal cos nie działa i moj mózg nie moze tego pojąć :D

- Rejestracja:prawie 4 lata
- Ostatnio:około 24 godziny
- Postów:252
Nie wczytywałem się bardzo dokładnie w twój kod, bo od razu widzę 2 poważne problemy:
if(temp[i]=temp[j])
while(palindrom && i<j)
- Do czego używasz zmienneji
, do iterowania po tablicy stringów czy do iterowania znaków w jednym stringu?

- Rejestracja:prawie 20 lat
- Ostatnio:14 dni
Zacznij od wydzielenia funkcji:
bool ispalindrom(const string &s)
{
for(int i=0,k=s.size()-1;i<k;++i,--k) if(s[i]!=s[k]) return false;
return true;
}
Wtedy:
int countpalindroms(const vector<string> &data)
{
int count=0;
for(int i=0;i<data.size();++i) if(ispalindrom(data[i])) cout<<(++count)<<": "<<data[i]<<endl;
return count;
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.