Liczenie słów i sprawdzanie czy wyraz jest palindromem

0

Witam mam taki kod, licznik działa, lecz funckja sprawdz_wyraz nie działa. Co może być błędem ?

// zad21.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<iostream>
#include<string.h>



using namespace std;

void czyt_wyraz(char A[], int &n);
void sprawdz_wyraz(char A[], int n);

void czyt_wyraz(char A[], int &n)
{
	
	cout << "Podaj wyraz: ";
	cin >> A;
	n = strlen(A);
	cout << "Wyraz ma " << n  << " dlugosci \n \n";

}

void sprawdz_wyraz(char A[], int n)
{
	
	for (int i=0 ; i>n; i++)
{

		if (A[n] == A[i])
			{cout << "Prawda"; }
		else { cout << "Falsz"; }
		n--;
	}



}
int _tmain(int argc, _TCHAR* argv[])
{
	char A[30];
	int n = 0;
	czyt_wyraz(A, n);
    sprawdz_wyraz(A, n);
	

	system("pause");
	return 0;
}

 
0

Może nie działa dlatego, że jest źle napisana.

0

Możesz wskazać błąd ?

1
for (int i=0 ; i>n; i++)

0 raczej nie jest większe od n, więc pętla nigdy się nie wykona.

0

dziękuje :) , problem rozwiązany

0

naprawdę działa? przecież A[n] przy pierwszej iteracji odnosi się poza długość napisu!
Na dodatek każda cześć napisu generuje ci osobną odpowiedź.

0

Dziwny trochę program który dla 10 literowego palindromu wypisze
PrawdaPrawdaPrawdaPrawdaPrawda :P

0

Ten kod przecież nadal nie działa. Można zrobić coś bardzo podobnego:

void sprawdz_wyraz(char A[], int n)
{
    bool palindrom = true;
    for (int i=0; i<n; i++)
    {
        if (A[n-i] != A[i])
            palindrom = false
    }
    if (palindrom)
        cout << "Prawda";
    else
        cout << "Falsz";
}

I jeszcze można sprawdzać połowę napisu, ponieważ sprawdzanie całego jest zbędne:

void sprawdz_wyraz(char A[], int n)
{
    bool palindrom = true;
    for (int i=0; i<n/2; i++)
    {
        if (A[n-i] != A[i])
            palindrom = false
    }
    if (palindrom)
        cout << "Prawda";
    else
        cout << "Falsz";
}
0

Czy odróżniasz "sprawdź" od "wypisz na wyjściu standardowym"? Czy koniecznie obliczenia wyniku dzielenia na każdym kroku pętli? Owszem jedyny słuszny kompilator da rady - ale nie ty. - _13th_Dragon

Po pierwsze to nie mój kod. Pierwotnie wypisywał, więc przerobiłem na taki który nadal wypisuje. Po drugie dzielenie kompilator sobie zoptymalizuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1