Palindrom dla n wyrazów

Odpowiedz Nowy wątek
2013-10-12 17:32
skuska
0

Witam. Chciałbym napisać program, który na początku pyta się o liczbę wyrazów, użytkownik z klawiatury wpisuje te wyrazy( wszystkie od razu). Potem na ekranie wypisuje się listę słów które są palindromami oraz listę słów które nie są palindromami. Dla jednego słowa potrafię to zrobić w pętli, ale dla wielu już nie. Proszę o pomoc.

 #include <stdio.h>
#include <string.h>

int pal(char *wyraz)
{
    int i, litera = strlen(wyraz);
    for(i = 0; i < litera/2; ++i)
        {
            if(wyraz[i] != wyraz[litera-i-1])
            return 0;
        }
    return 1;
}

int main()
{
    int n, i;
    char slowo[10];

    printf("Podaj liczbe slow ");
    scanf("%d", &n);
    for (i=1; n>=i; ++i)
    {
        printf("Wprowadz slowo  ");
        scanf("%s", slowo);
        if(pal(slowo) == 1)
        printf("palindrom\n", slowo);
        else
        printf("nie palindrom\n", slowo);
        }
    return 0;
}

Pozostało 580 znaków

2013-10-12 17:39
0

Nie bardzo rozumiem. Przecież ten kod to właśnie robi...
http://ideone.com/tufGwy


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2013-10-12 17:56
skuska
0

Tylko że po wpisaniu słowa wypisuje od razu czy to jest palindrom czy nie. A ja bym chciał żeby wypisywało po wpisaniu wszystkich wyrazów dopiero listę czy poszczególne słowa są palindromami czy nie. Za bardzo nie wiem jak to zrobić.

Pozostało 580 znaków

2013-10-12 18:26
0

A po co? Jeśli to zadanie na jakiegoś SPOJa/ sprawdzarkę to to jest bez znaczenia bo STDIN nie miesza się ze STDOUT. No ale jeśli musisz to po prostu zrób tablicę na te słowa i wczytuj do niej dane, a potem zrób drugą pętlę w której wywołujesz swoją funkcje do palindromów dla kolejnych słów z tablicy.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2013-10-12 20:10
skuska
0

A mógłbyś napisać ten kod programu z tymi tablicami i pętlą? Bo mi się nie udaję.

Pozostało 580 znaków

2013-10-12 21:07
0

Pokaż jak próbujesz to zrobić.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2013-10-12 21:49
skuska
0
 #include <stdio.h>
#include <string.h>

int pal(char *wyraz)
{
    int i, litera = strlen(wyraz);
    for(i = 0; i < litera/2; ++i)
        {
            if(wyraz[i] != wyraz[litera-i-1])
                return 0;
        }
    return 1;
}

int main()
{

    int n, i;
    char slowo[10];

    printf("Podaj liczbe slow ");
    scanf("%d", &n);
        char tab[n];
    for (i=1; n>=i; ++i)
    {
        printf("Wprowadz slowo  ");
        scanf("%s",tab[i]);
    }
     for (i=1; n>=i; ++i)
      if(pal(tab[i]==1)
        printf("palindrom\n", tab[i]);
        else
        printf("nie palindrom\n", tab[i]);

    return 0;
}

Pozostało 580 znaków

2013-10-12 22:03
0

Brawo, stworzyłeś n-elementową tablicę znaków. Taka tablica pomiędzy maksymalnie "n" znaków. A ty chcesz mieć w niej n napisów o pewnej liczbie znaków. Widzisz tu pewien problem? Czemu więc nie zrobisz

char tab[n][100];

?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2013-10-12 22:40
#include <stdio.h>
#include <string.h>

int pal(const char *wyraz)
  {
   int p=0,k=strlen(wyraz)-1;
   while(p<k) if(wyraz[p++]!=wyraz[k--]) return 0;
   return 1;
  }

int main()
  {
   int n, i;
   printf("Podaj liczbe slow: ");
   scanf("%d",&n);
   char tab[n][100]; // lepiej to robić dynamicznie
   for(i=0;i<n;++i) // indeksacja od 0
     {
      printf("Wprowadz slowo: ");
      scanf("%99s",tab[i]); // aby nie było mazania po pamięci
     }
   printf("palindromy:\n");
   for(i=0;i<n;++i) if(pal(tab[i])) printf("%s\n",tab[i]);
   printf("\nnie palindromy:\n");
   for(i=0;i<n;++i) if(!pal(tab[i])) printf("%s\n",tab[i]);
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2013-10-12 22:42

Pozostało 580 znaków

2013-10-12 22:51
skuska
0

Poprawiłem. Wyskoczyły mi jeszcze 2 błędy które są związane z porównywaniem zmiennych. Ustawiłem wszędzie gdzie mogłem Char, ale błędy dalej są. cannot convert 'bool' to 'char' for argument '1' to 'char pal(char)' oraz ISO C++ forbids comparison between pointer and integer [-fpermissive]

Pozostało 580 znaków

2013-10-12 22:54
skuska
0

_13th_Dragon Dzięki za pomoc.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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