0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 2
1

Является ли введенная цепочка знаков палиндромом

28.12.2017, 18:29. Показов 941. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача: написать программу распознающюю, является ли введенная цепочка знаков палиндромом. Знаки должны вводиться один за другим и закрепляться в массиве. При этом пробелы должны игнорироваться. При введение слова " END" программа должна остановиться. (то есть прикращеться вощможность введения).(Это все условия задачи) Думал примерно так решить:
Сначала посчитать количество введенных знаков c помощью цикла, чтобы получить конечную величину управляемой переменной , потом проверить массив с помощью двух циклов на идентичные пары (если при этом вводится пробел, переменная не меняет величину) при этом если одна переменная прошла через весь массив, значит все пары идентичны, и, следовательно, введен палиндром.
Главные проблемы:
1)в данный момент я не могу прописать условие остановки программы. При if (scanf("%s","END") не осуществляется заход в следующий блок else, и вообще происходит что/то нечистое.
2) Если я хочу выдать предположим 3ий элемент и пишу arrayname[3], все получаеться.Но как выдавать элемент массива с помощью управляемой переменной (i)? допустим, в конце цикла я хочу выдать последний элемент массива, но при команде printf("%c",arrayname[i]) выдается '?' а не сам знак закрепленный под данным номером.
Вот мой "сомнительный" код первого цикла:

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
#include <stdio.h>
#include <string.h>
int main()
{
    int i;
    char wort[100];
    char aus[5]={"ENDE"};
    for (i=0;;)//счет знаков
    {
        scanf("%c",&word[i]);
        /*if (scanf("%s",end))//это как то совсем не работает
         printf ("end");
         break;
         }
         
         else*/
        {
            if (word[i]=='\n')//чтобы не считать энтер
                continue;
            else
            {
                i++;
                printf("%d signs\n",i );//выдача количества знаков
            }
        }
    }
    return 0;
}
заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2017, 18:29
Ответы с готовыми решениями:

Проверить, является ли введенная последовательность чисел рядом Фибоначчи
Здравствуйте! Закопался тут с одной задачей - требуется написать программу проверяющую является ли...

Определить, что введенная строка является целым числом
Помогите плиз! Дана строка, в которую ввели какое-то число, нужно выяснить является ли это число...

Проверить, является ли введенная скобочная последовательность правильной (рекурсия)
Дано слово из круглых и фигурных скобок. Требуется определить является ли введенное выражение...

Является ли число палиндромом?
Здравствуйте уважаемые форумчане! Помогите пожалуйста решить в С++. Дано натуральное число п ...

6
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,606
Записей в блоге: 13
28.12.2017, 21:14 2
С помощью scanf нельзя прочитать строку с пробелами. Используй функцию fgets
0
0 / 0 / 0
Регистрация: 28.12.2017
Сообщений: 2
28.12.2017, 22:56  [ТС] 3
спасибо за ответ!
пробел посредством scanf можно игнорировать если использовать if (word[i]==' ') continue, и проблемы нет. Во всяком случае я так понял из моих попыток.
но очень бы хотелось узнать ответ на 1) и 2). или сам подход в принципе не верен?

в 7/ой строчке кода должно быть:

char end[5]={"END"}; //название переменной и стринг в вышестоящем коде было не правильно
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12453 / 7478 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
30.12.2017, 00:50 4
Цитата Сообщение от Catstail Посмотреть сообщение
С помощью scanf нельзя прочитать строку с пробелами.
Да ну?!
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,606
Записей в блоге: 13
30.12.2017, 09:25 5
easybudda, я имел в виду, что вот в таком коде:

C
1
2
3
  char X[20];
  scanf("%s",X);
  printf("%s\n",X);
при вводе qwerty uiop yyy напечатается только qwerty
0
3 / 3 / 2
Регистрация: 29.05.2015
Сообщений: 20
31.12.2017, 00:58 6
Цитата Сообщение от Catstail Посмотреть сообщение
я имел в виду, что вот в таком коде:
C
1
2
3
4
5
6
7
8
9
10
int main(int argc, char *argv[]) 
{
    char str[256];
    
    scanf("%255[A-Za-z0-9 ]",str);
    
    printf("%s\n",str);
    
    return 0;
}
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,606
Записей в блоге: 13
31.12.2017, 19:36 7
megavolt85, да, спасибо!
0
31.12.2017, 19:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.12.2017, 19:36
Помогаю со студенческими работами здесь

Является ли строка палиндромом?
Помогите исправить, пожалуйста на СИ* #include &lt;stdio.h&gt; #include &lt;string.h&gt; main(){ char...

Проверить, является ли слово палиндромом
3.Палиндром Дано слово, состоящее только из строчных латинских букв. Проверьте, является ли это...

Определить, является ли строка палиндромом
# include &lt;stdio.h &gt; # include &lt; string.h&gt; int main () { char poly =&quot;string with blanks&quot; ;...

Определить, является ли массив палиндромом
Добрый день Помогите новичку разобраться с программой задача: Палиндром Определить является...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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