0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13
|
|
1 | |
Найти в заданном тексте, состоящем из n строк, все слова палиндромы и числа палиндромы13.12.2008, 21:54. Показов 11029. Ответов 13
Метки нет (Все метки)
Сроки жутко горят поэтому надеюсь на вашу помощь:
Задача: Найти в заданном тексте, состоящем из n строк, все слова палиндромы и числа палиндромы.(в словах допускается перенос на другую строку) Палиндром-слово которое можно читать как слева направо так и наоборот : ШАЛАШ,ПОП или например фраза А РОЗА УПАЛА НА ЛАПУ АЗОРА. Или числа 1441, 121 и т.д. Очень прошу помощи!!!
0
|
13.12.2008, 21:54 | |
Ответы с готовыми решениями:
13
Найти в тексте, состоящем из 1 строки, все слова и числа-палиндромы Найти все числа-палиндромы, которые не больше 100, и их квадраты тоже палиндромы Найти во введенном тексте все слова-палиндромы В данном тексте найти все слова-палиндромы и вывести их на экран |
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13
|
|
15.12.2008, 00:23 [ТС] | 2 |
Что никто незнает?
Думаю что нужно брать слово до пробела, переворачивать его, сравнивать с оригиналом, потом брать второе слово и ту же операцию и т.д. Потом первые два слова->переворот->сравнение, потом 2е и 3е с теми же операциями. Потом первые 3 слова и т.д. хотябы до 10и слов. Может кто нить знает как это реализовать или подкинет свою идею?А то вообще потерялся с этой задачей. Очень надо...помогите чем можете.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
15.12.2008, 03:12 | 3 |
функция обращения строки
Код
#include <stdio.h> #define MAXLINE 1000 /* максимальная длина строки */ /* обращает строку */ main() { char *reverse(char []); char line[MAXLINE] = "разные слова палиндромы"; printf("%s\n", reverse(line)); return 0; } /* reverse: обращает строку s */ char *reverse(char s[]) { char *p, *q; int c; p = q = s; while (*q) q++; q--; for ( ; p < q; p++, q--) c = *p, *p = *q, *q = c; return s; } фразы полиндромы не делай, не потянешь (просто время потеряешь), по сложности смахивает на калькулятор вроде всё просто а подводных камней куча АРОЗАУПАЛАНАЛАПУАЗОРА проверяешь всё нормально вроде УПАЛАНАЛАПУПАЛАНАЛАПУПАЛАНАЛАПУ проскань попробуй
1
|
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13
|
|
15.12.2008, 19:19 [ТС] | 4 |
Спасибо за разъяснение.
Только текст проги написан на С++(если не ошибаюсь) а нельзя ли написать на Си?Буду весьма признателен.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
16.12.2008, 05:48 | 5 |
Код
#include <stdio.h> #include <string.h> #define MAXLINE 1000 /* максимальная длина строки */ #define MAXWORD 100 /* максимальная длина слова */ /* ищет в тексте слова палиндромы и числа палиндромы; без переносов; на винде оба языка на лине только инглиш */ main() { char *reverse(char []); char line[MAXLINE], word[MAXWORD], tmp[MAXWORD], *p; int nc; while ((p = fgets(line, MAXLINE, stdin)) != NULL) { while (sscanf(p, "%s%n", word, &nc) == 1) { p += nc; strcpy(tmp, word); if (strcmp(word, reverse(tmp)) == 0 && strlen(word) > 1) printf("%s\n", word); } } return 0; } /* reverse: обращает строку s */ char *reverse(char s[]) { char *p, *q; int c; p = q = s; while (*q) q++; for (q-- ; p < q; p++, q--) c = *p, *p = *q, *q = c; return s; }
2
|
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13
|
|
17.12.2008, 21:25 [ТС] | 6 |
нифига не пашет.
зодолбалсо уже дописывать, приписывать, переписывать - не хочет и все
0
|
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13
|
|
17.12.2008, 23:39 [ТС] | 8 |
Заработала Спасибо.
Только почемуто работает она бесконечно.Ограничить бы её надо как нить. Типа "введите количество строк".Как тока последнюю строку написал-выводит полиндромы и вырубается.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
18.12.2008, 00:20 | 9 |
Код
main() { char *reverse(char []); char line[MAXLINE], word[MAXWORD], tmp[MAXWORD], *p; int nc; while ((p = fgets(line, MAXLINE, stdin)) != NULL) { if (p[0] == '\n' || (p[0] == '\r' && p[1] == '\n')) break; while (sscanf(p, "%s%n", word, &nc) == 1) { p += nc; strcpy(tmp, word); if (strcmp(word, reverse(tmp)) == 0 && strlen(word) > 1) printf("%s\n", word); } } return 0; }
1
|
0 / 0 / 0
Регистрация: 30.11.2008
Сообщений: 13
|
|
24.12.2008, 17:00 [ТС] | 10 |
Спасибо все работает.
Кстати а можно как нибыдь удалять знаки препинания из введеной строки(чтоб уж препод к этому не придрался )? Например: Шалаш в лесу! Слово шалаш разпознается как полиндром. В лесу шалаш! Слово шалаш не распознается. тк ! лишний символ
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
25.12.2008, 02:43 | 11 |
Код
#include <stdio.h> #include <ctype.h> #include <string.h> #define MAXLINE 1000 /* максимальная длина строки */ #define MAXWORD 100 /* максимальная длина слова */ /* ищет в тексте слова палиндромы и числа палиндромы; без переносов; на винде оба языка на лине только инглиш */ main() { char *reverse(char []); char line[MAXLINE], word[MAXWORD], tmp[MAXWORD], *p, *q; int nc; while ((p = fgets(line, MAXLINE, stdin)) != NULL) { if (p[0] == '\n' || (p[0] == '\r' && p[1] == '\n')) break; for (q = p; *q != '\0'; q++) if(ispunct(*q)) *q = ' '; while (sscanf(p, "%s%n", word, &nc) == 1) { p += nc; strcpy(tmp, word); if (strcmp(word, reverse(tmp)) == 0 && strlen(word) > 1) printf("%s\n", word); } } return 0; } /* reverse: обращает строку s */ char *reverse(char s[]) { char *p, *q; int c; p = q = s; while (*q) q++; for (q-- ; p < q; p++, q--) c = *p, *p = *q, *q = c; return s; }
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 38
|
|
15.08.2011, 11:30 | 12 |
извинити за идиотский вопрос, просто я только недавно начал Си изучать и не все еще разобрал. как нужно изминить ваш код, что бы слова полиндромы не выводило на экран, а удаляло из строки и выводило измененную строку. подскажите пожалуйста.
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
17.08.2011, 01:40 | 13 | |||||
Сообщение от _д_м_и_т_р_и_й_
Код
[guest@localhost tests]$ ./t aasdflkj 111 lkasjdflkj 333 word: 111 repl word: 333 repl aasdflkj 111 lkasjdflkj 333 [guest@localhost tests]$
1
|
17.08.2011, 10:02 | 14 | |||||
Blade , ещё вариант по вашей задачи
_д_м_и_т_р_и_й_ , и ваш вариант по вашей задачи.
Результат: Super repuS ATTA PPP 5555 55 adam mada src: The Super ATTA PPP, 5555, 55, 4 [repuS], adam-mada, optionals. dst: The , , , 4 [], -, optionals.
1
|
17.08.2011, 10:02 | |
17.08.2011, 10:02 | |
Помогаю со студенческими работами здесь
14
Дан текст.Найти все палиндромы(слова-перевёртыши)в етом тексте Найти все палиндромы, не превышающие 100, которые при возведении в квадрат также дают палиндромы Найти числа от 1 до 99 - палиндромы, которые при возведении в квадрат также дают палиндромы (используя циклы) Найти целые числа палиндромы, которые при возведении в квадрат также дают палиндромы (22^2=484) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
|
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента!
4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве).
Первое вводное занятие. . .
|
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
|
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений
Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
|