Форум программистов, компьютерный форум CyberForum.ru

Переделать программу (Палиндром. Указатели) - C++

Восстановить пароль Регистрация
 
xFORCEx
0 / 0 / 0
Регистрация: 25.04.2011
Сообщений: 47
11.01.2013, 11:08     Переделать программу (Палиндром. Указатели) #1
Всем доброго времени суток. Написал программу на палиндром, но от меня тебуют её сделать не с помощью массива, а с помощью указателей. Т.е. char slovo[20]; должен быть такого вида char *slovo; и.т.д. Помогите переделать,пожалуйста, там вроде как недолго.
Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
 
main()
{
 char slovo[20];
 int i,j,flag,maxdlin;
 
 clrscr();
 FILE *f=fopen("in.txt","r"); 
 
 if (f==NULL) printf ("fail pystoi"); 
 
 maxdlin=0; 
 i=1; 
 
 while ((slovo[i]=getc(f))!=EOF) 
 {
  if (fmod(i,2)==0)
  {
   flag=0; 
      for (j=1;j<=(i/2);j++)
     if (slovo[j]!=slovo[i-j+1]) flag=1; 
   if (flag==0) maxdlin=i; 
  }
  i++;
 }
 
 fclose (f); 
 
 printf ("Dlina max palindroma v slove ravna = %d\n\n",maxdlin);
 printf ("Dl9 prodoljeni9 najmite lIObyIO klavishy\n");
 getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ласковая Киса
 Аватар для Ласковая Киса
82 / 8 / 1
Регистрация: 11.01.2013
Сообщений: 55
11.01.2013, 12:35     Переделать программу (Палиндром. Указатели) #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
 
main()
{
 char* slovo;
 slovo=new char[20];
 int i,j,flag,maxdlin; 
 clrscr();
 FILE *f=fopen("in.txt","r"); 
 
 if (f==NULL) printf ("fail pystoi"); 
 
 maxdlin=0; 
 i=1; 
 
 while ((slovo[i]=getc(f))!=EOF) 
 {
  if (fmod(i,2)==0)
  {
   flag=0; 
      for (j=1;j<=(i/2);j++)
     if (slovo[j]!=slovo[i-j+1]) flag=1; 
   if (flag==0) maxdlin=i; 
  }
  i++;
 }
 
 fclose (f); 
 
 printf ("Dlina max palindroma v slove ravna = %d\n\n",maxdlin);
 printf ("Dl9 prodoljeni9 najmite lIObyIO klavishy\n");
 getch();
 delete slovo;
}
Как-то так
xFORCEx
0 / 0 / 0
Регистрация: 25.04.2011
Сообщений: 47
11.01.2013, 12:48  [ТС]     Переделать программу (Палиндром. Указатели) #3
Разве так?) По моему по всему тексту программы нужно это слово со звёздочкой расставлять, заменяя массив,если я не ошибаюсь) И цикл тоже немного по другому переделывается) Или по другому никак не сделаешь?
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
11.01.2013, 12:52     Переделать программу (Палиндром. Указатели) #4
xFORCEx, Ошибаетесь, Ох_евший_Тигр всё правельно написал

можно конечно сделать
C++
1
2
3
     for (j=1;j<=(i/2);j++)
     if (*(slova+j)!=*(slovo(i-j+1)) flag=1; 
   if (flag==0) maxdlin=i;
xFORCEx
0 / 0 / 0
Регистрация: 25.04.2011
Сообщений: 47
12.01.2013, 04:28  [ТС]     Переделать программу (Палиндром. Указатели) #5
Всем огромное спасибо)

Добавлено через 15 часов 28 минут
xADMIRALx, Не работает, как Вы показали.
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
12.01.2013, 04:34     Переделать программу (Палиндром. Указатели) #6
xFORCEx,
C++
1
2
3
    for (j=1;j<=(i/2);j++)
     if (*(slova+j) != *(slovo+(i-j+1))) flag=1; 
   if (flag==0) maxdlin=i;
Yandex
Объявления
12.01.2013, 04:34     Переделать программу (Палиндром. Указатели)
Ответ Создать тему
Опции темы

Текущее время: 01:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru