Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Provera stringa da li je palindrom-šta ne štima u kodu?

[es] :: C/C++ programiranje :: Provera stringa da li je palindrom-šta ne štima u kodu?

[ Pregleda: 9914 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sanibo

Član broj: 4717
Poruke: 751
*.yunord.net.



+17 Profil

icon Provera stringa da li je palindrom-šta ne štima u kodu?31.10.2003. u 10:08 - pre 249 meseci
Neka mi neko kaže šta ne štima u kodu ovog zadatka!
1. Napraviti program u kojem se proverava da li je uneta reč PALINDROM(reč koja kada se čita sa početka ili sa kraja je ista---npr. "ana")
Evo mog koda:

Code:


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

int main(void)
{
int duzina,i;
char str1[200],*str2; /*pretpostavljamo da uneseni
string nece biti duzi od 200 znakova*/
printf("\nUnesi string: ");
scanf("%s",str1);
duzina = strlen(str1);
str2 = (char *) malloc(duzina + 1); /*alociranje duzina + 1 znak, dodatni
znak ce posluziti za null znak*/
for(i=0;i<duzina ;i++)
{
str2[i] = str1[duzina - i-1];
}
str2[duzina] = 0;

printf("\nUneseni: %s\nObrnuti: %s",str1,str2);
strcmpi(str1,str2);
if (str1[i]!=str2[i])
printf("\nRec nije palindrom!");
else
printf("\nRec jeste palindrom!");
getch();
return 0;



Hvala
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Provera stringa da li je palindrom-šta ne štima u kodu?31.10.2003. u 10:29 - pre 249 meseci
Evo ispravljeni program. Samo bih te molio da objasniš čemu korišćenje strcmpi na onaj način na koji si naveo, i da objasniš zašto si mislio da se stringovi porede pomoću ==. (ako to nama objasniš biće jasnije šta ti nije jasno)

f

Code:

#include <stdio.h>
/*#include <conio.h> nije prenosivo, nemoj koristiti ako bas ne moras*/
#include <string.h>
#include <stdlib.h>

int main(void)
{
    int duzina,i;
    char str1[200],*str2; /*pretpostavljamo da uneseni
                string nece biti duzi od 200 znakova*/
    printf("\nUnesi string: ");
    scanf("%s",str1);
    duzina = strlen(str1);
    str2 = (char *) malloc(duzina + 1); /*alociranje duzina + 1 znak, dodatni
                          znak ce posluziti za null znak*/
    for(i=0;i<duzina ;i++)
    {
        str2[i] = str1[duzina - i-1];
    }
    str2[duzina] = 0;
    
    printf("\nUneseni: %s\nObrnuti: %s",str1,str2);
/*    strcmpi(str1,str2); ne radi nista jer se vrednost ignorise */
    if (strcasecmp(str1,str2) != 0 ) /* mozda ce tebi trebati ovde strcmpi f-ja*/
/* tvoj uslov ovde je pogresan. */
        printf("\nRec nije palindrom!");
    else
        printf("\nRec jeste palindrom!");
/*    getch();*/
    return 0;

 
Odgovor na temu

sanibo

Član broj: 4717
Poruke: 751
*.yunord.net.



+17 Profil

icon Re: Provera stringa da li je palindrom-šta ne štima u kodu?31.10.2003. u 10:41 - pre 249 meseci
OK, OK, ja sam totalni debitant u "C-u". Tako da vidim da sam napravio glupost, ali dzaba sam pregledao cod nekoliko puta i nisam video.
Hvala na pomoci. U literaturi "strcmpi" piše da se koristi za poredjenje dva stringa, ali očigledno da je nisam pravilno upotrebio.
pozdrav
 
Odgovor na temu

markom
Marko Milivojević
Network Engineer
Google
Mountain View

Član broj: 18427
Poruke: 4227
*.lina.net

Sajt: https://markom.rs


+16 Profil

icon Re: Provera stringa da li je palindrom-šta ne štima u kodu?31.10.2003. u 11:35 - pre 249 meseci
Čisto sporta i razonode radi :-).

Jel' vam palo na pamet da ovaj program zapravo ne radi? :-) Zapravo radi samo za jednu unetu REČ koja je palindrom, ali ne i za celu frazu koja je palindrom.

Kako ispraviti dati program, a da radi za celu frazu? :-) /* rekoh da je poruka sportskog karaktera */


Marko.
 
Odgovor na temu

MilošV
Podgorica

Član broj: 7996
Poruke: 484
195.66.163.*



+1 Profil

icon Re: Provera stringa da li je palindrom-šta ne štima u kodu?31.10.2003. u 12:16 - pre 249 meseci
Pozdrav :)
Da uprostim, recimo da je duzina palindroma (moguceg) paran broj, moze se, sa % operatorom, srediti i za neparan...
Mala boolean f-ja za provjeru "palindromicnosti":
Code:

for(int i=0; i<duzinaMogucegPalindroma/2; i++)
  {
  if(moguciPalindrom[i]!=moguciPalindrom[duzinaMogucegPalindroma-(i+1)])
     return false;
  }
return true; /*ako prodje petlju*/

Nijesam ovo provjerio=kompajlirao, valjda fercera...
Svodi se na provjeravanje da li su n-ti znak sprijeda i n-ti znak otpozadi isti

Mislim da bi se sa istom f-jom dobio tacan rezultat i za neparan broj, ukoliko bi kompajler rezonovao da je 5/2=2 kada su 5 i 2 deklarisani kao int

Sve u svemu, mozda i lupam gluposti, desi mi se to ponekad... :)
 
Odgovor na temu

[es] :: C/C++ programiranje :: Provera stringa da li je palindrom-šta ne štima u kodu?

[ Pregleda: 9914 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.