Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 34
1

Исправить код по нахождению слов-палиндромов

17.03.2009, 00:22. Показов 974. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите исправить ошибки в задаче про проверку является ли слово оборотнем. Например maam - слово оборотень, mama - нет.

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
#include <stdio.h>
int main (void)
{
int flag, i, n;
char a[];
flag==1;
n==length(a);
printf ("Vvedite slovo: ");
scanf ("%s", &a[]);
while (flag == 1)
  {
  if (a[i]==a[n+1-i])
    flag=1;
  else
    {
    flag==0;
    printf ("ne oboroten'");
    }
  ++i;
  }
  if (flag == 1)
    printf ("slovo oboroten'");
  return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2009, 00:22
Ответы с готовыми решениями:

Исправить код по нахождению суммы
не выдает sum. где моя ошибка ? uses crt; procedure www(a,b:integer); begin ...

Дана строка, состоящая из слов, разделённых пробелами. Определить количество слов-палиндромов
Пожалуйста хелп

Инвертирование слов: исправить код
Var YN:Char; Game:Byte; Procedure String_Game; Var S:String; W,Wrd:Array of String; ...

Посчитать количество слов в строке: исправить код
Помогите пож. поправить программу. Она должна считать кол-во слов в строке. (но считает не верно)...

5
0 / 0 / 0
Регистрация: 22.03.2008
Сообщений: 33
17.03.2009, 00:43 2
В 5 строчке ошибка. Ты должен сказать длину массива в тот момент когда определяешь его .
Есть два решения :
1) Либо предположи его максимальную длину.
2)Либо используй динамичиские массивы.

Добавлено через 2 минуты 51 секунду
А и еще ты везде вместо присваиванья используешь сравнение.
Строчки 6,7 ,16
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 34
17.03.2009, 01:20  [ТС] 3
Поменял на a[n] в 5-й и 9-й строчке и исправил на присваивания в 6,7,16 строчках. Осталась одна ошибка: Constant expression required в 5-й строчке.
0
Maniac
Эксперт С++
1464 / 965 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
17.03.2009, 05:00 4
Цитата Сообщение от Deinli Посмотреть сообщение
Поменял на a[n] в 5-й и 9-й строчке и исправил на присваивания в 6,7,16 строчках. Осталась одна ошибка: Constant expression required в 5-й строчке.
код показывайте ( ошибки исправим ).
0
CEO
Эксперт С++
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
17.03.2009, 07:12 5
Цитата Сообщение от Deinli Посмотреть сообщение
Поменял на a[n] в 5-й и 9-й строчке и исправил на присваивания в 6,7,16 строчках. Осталась одна ошибка: Constant expression required в 5-й строчке.
Constant expression required - требуется константное определение длины строчки, иначе система не знаэт сколько резервировать памяти. Предположите сколько приблизительно она может быть и задайте константой.

Цитата Сообщение от Deinli Посмотреть сообщение
Поменял на a[n]
А тут вообще еще 1 ошибка - использование переменной до ее инициализации, но она накрыта выше описанной.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.03.2009, 08:59 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

если у тебя стал такой
Код
    char a[n];    

    scanf("%s", &a[n]);
то нужно сделать вот такой

Код
    #define MAXWORD  100   /* максимальная длина слова */
    ...
    char a[MAXWORD];

    scanf("%s", a);
можно юзать конечно и char a[n]; и это может даже сработать, если на момент запуска программы в n оказывается положительный мусор

вообще, лучше копию строки подать в функцию обращения, и сравнить результат

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <string.h>
 
/* ReverseLine:  обращает строку l */
void ReverseLine(char *l)
{
    char *leftp, *rightp;
    int c;
    
    if (l == NULL)
        return;
    for (leftp = l, rightp = l+strlen(l)-1;
         leftp < rightp;
         leftp++, rightp--)
        c = *leftp, *leftp = *rightp, *rightp = c;
}
 
/* CompareLine:  сравнивает строки l и patt */ 
int CompareLine(const char *l, const char *patt)
{
    if (strcmp(s, patt) != 0)
        return 0;
    return 1;    
}
1
17.03.2009, 08:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2009, 08:59
Помогаю со студенческими работами здесь

Словарь слов палиндромов
В текстовом файле записан текст одного из произведений, создать в новом файле словарь слов...

Количество слов-палиндромов
Дана строка. Нужно написать программу, которая определяет количество слов-палиндромов в строке....

Распознавание слов палиндромов
Задача звучит так: Создать приложение, в котором происходит проверка, является ли введенное слово...

Программа по нахождению слов-перевёртышей
Составить программу, которая в данном предложении(вводится вручную, разделители между словами в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru