Liczenie słów i sprawdzanie czy wyraz jest palindromem

2014-11-13 14:45
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;
}

Pozostało 580 znaków

2014-11-13 14:48
Krzywy Kot
0

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

Pozostało 580 znaków

2014-11-13 14:50
0

Możesz wskazać błąd ?

Pozostało 580 znaków

2014-11-13 14:51
1
for (int i=0 ; i>n; i++)

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

Pozostało 580 znaków

2014-11-13 14:52
0

dziękuje :) , problem rozwiązany

Pozostało 580 znaków

2014-11-13 14:57
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ź.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2014-11-13 14:59

Pozostało 580 znaków

2014-11-13 16:10
0

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

Pozostało 580 znaków

2014-11-13 16:35
Krzywy Kot
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";
}
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 2014-11-13 16:44
W drugim przypadku się mylisz, bo każde przejście pętli zmniejszało n o 1, więc przejść pętli też było n/2 - Sarrus 2014-11-13 19:57
@Sarrus, gdzie widzisz zmniejszanie n ? - _13th_Dragon 2014-11-14 04:59
W sprawdz_wyraz w pętli for, nie do końca to jest dobrze, ale jest. EDIT: chodzi tu o kod z pierwszego posta - Sarrus 2014-11-14 08:25

Pozostało 580 znaków

2014-11-13 16:49
Krzywy Kot
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.

edytowany 1x, ostatnio: Shalom, 2016-12-13 18:26
Jak jedno poprawiłeś a na drugie nawet nie wskazałeś że jest źle, to oznacza tylko jedno że nie odróżniasz, wiochmanie. Ba czytać ze zrozumieniem też nie potrafisz - owszem jedyny słuszny Kompilator da rady zoptymalizować - ale tobie to nie jest dane - za mało mózgu. - _13th_Dragon 2014-11-13 18:09
Moderatorzy powinni was obu doprowadzić do porządku, ponieważ to co widzę to zwykłe chamstwo. Sprowokowane zresztą przez Dragona, któremu chyba potrzeba odpoczynku od forum. - kamienikupa 2014-11-14 02:05
@kamienikupa, czym żeś spowodowałem? Krytyką podanego kodu? - _13th_Dragon 2014-11-14 05:01
Krytykowałeś osobę, a nie kod: "Owszem jedyny słuszny kompilator da rady - ale nie ty." - kamienikupa 2014-11-14 20:41
@kamienikupa, masz jakieś zwidy. Nie widzę tu żadnej krytyki osoby, tylko podejścia do kodowania. Wie że jeden z kompilatorów potrafi to zoptymalizować, więc uważa że to zwalnia jego od pilnowania tych rzeczy. Rozwijając takie rozumowanie da się dojść do: - Postawienie kloca po środku korytarza w urzędzie miasta nie jest niczym złym ponieważ komenda główna policji zatrudnia sprzątaczkę. - _13th_Dragon 2014-11-14 21:09

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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