Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для Savelia
1 / 1 / 1
Регистрация: 22.11.2010
Сообщений: 42

Удалить из слов последовательности все предыдущие вхождения последней буквы

14.12.2010, 12:10. Показов 1172. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решать задачу не надо!!!, я сама решу, она простая. Просто скажите правильно ли я поняла условие.

Дана последовательность из 30 слов. Удалить из слов последовательности все предыдущие вхождения последней буквы. Результат вывести на экран.

Я так понимаю, мне нужно задать символьную строку

char posledovat[];

или эти слова нужно делать друг под другом в столбик?

Дальше я через strlen нахожу последнюю букву char x, и далее по циклу проверяю символьную строку на вхождение данной буквы, если она есть, то выполняю что-то вроде posledovat[i] - x??? Или как удалить букву из слов? Спасибо заранее
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2010, 12:10
Ответы с готовыми решениями:

Удалить из списка слов все предыдущие вхождения последнего слова
Здравствуйте, помогите доделать программу, у меня получилось считать строку, разбить на слова, даже написано удаление, но не могу никак...

Удалить из записи числа все вхождения последней цифры
Дано натуральное число n. Удалить из записи числа все вхождения последней цифры. Подсчитать количество оставившихся цифр в изображении...

Удалить из строки все буквы, равные последней букве предложения
надо что бы он прочитав последнею букву в предложение удалял все такие же буквы в самом предложение кроме нее самой! #include...

6
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
14.12.2010, 12:35
как-то так да.
считать строку в массив, найти последнюю букву, и далее проходя по строке, копировать все элементы которые не равны найденной последней букве в другой массив. Будет два индекса, по одному на массив.
0
 Аватар для Savelia
1 / 1 / 1
Регистрация: 22.11.2010
Сообщений: 42
14.12.2010, 12:39  [ТС]
Цитата Сообщение от Aye Aye Посмотреть сообщение
как-то так да.
считать строку в массив, найти последнюю букву, и далее проходя по строке, копировать все элементы которые не равны найденной последней букве в другой массив. Будет два индекса, по одному на массив.
Я извиняюсь, мне нужно задать условие posledovat[i] != x
и потом
new_mass[i] = posledovat[i]

а потом вывести на экран new_mass. Я правильно поняла?
0
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
14.12.2010, 12:51
легче код написать, сразу понятно будет
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char *old_str = malloc(128);
gets(old_str);
int i = 0, j = 0;
char c = old_str[strlen(old_str) - 1)];
char *new_str = malloc(strlen(old_str) + 1);
while (old_str[i] != '\0') {
     if (old_str[i] != c) {
         new_str[j] = old_str[i];
         ++j;
     }
     ++i;
}
new_str[j] = '\0';
// какие-то еще действия
free(old_str);
free(new_str);
1
 Аватар для Savelia
1 / 1 / 1
Регистрация: 22.11.2010
Сообщений: 42
14.12.2010, 12:58  [ТС]
Цитата Сообщение от Aye Aye Посмотреть сообщение
malloc(strlen(old_str) + 1)
Спасибо большое все поняла, только вот вопрос есть, я с динамическими массивами только разбираюсь, скажите, а чачем мы здесь прибавляем 1?
0
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
14.12.2010, 13:05
прибавление 1 связано не с тем, что массивы динамические, а тем что strlen возвращает количество символов, а не фактическую длину строки.
например если пишем:
char s[] = "some string";
то памяти отводится под этот массив под знаки: 's' 'o' 'm' 'e' ' ' 's' 't' 'r' 'i' 'n' 'g' '\0' - конец завершающий нуль-символ. И получается что фактически символов больше на один.
теперь если хотим выделить память для n символов, то необходимо выделить еще один байт под нуль-символ '\0', то есть будто символов n+1, поэтому strlen() + 1.

все строки в Си и С++ заканчиваются нуль-символом. Если бы его не было, было бы невозможно определить - где же строка кончается. Этим пользуются все стандартные функции и пользователи.
1
 Аватар для Savelia
1 / 1 / 1
Регистрация: 22.11.2010
Сообщений: 42
14.12.2010, 13:09  [ТС]
Большое-прибольшое спасибо, надо еще строки подробнее почитать))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2010, 13:09
Помогаю со студенческими работами здесь

Дана последовательность слов. Необходимо удалить из каждого слова все предыдущие вхождения последней буквы
Не совсем понимаю, с чего начинать надо реализацию. Как в КАЖДОМ слове найти последнюю букву, и удалить такие же, за исключением её самой?...

Удалить все предыдущие вхождения последней буквы
Как удалить из слова все предыдущие вхождения последней буквы?

Удалить из слова все предыдущие вхождения последней буквы
program lab6; Var s,sl,st:string; i:byte; Begin write('Posledovatelnost slov: ');readln(s); if s='.' then Delete(s,Length(s),1); ...

удалить из слова все предыдущие вхождения последней буквы
1. Вводится строка текста из N символов, слова разделены одним пробелом. Составьте программу, печатающую первое слово в строке в оьратном...

Удалить из слова все предыдущие вхождения последней буквы
Здравствуйте друзья, прошу помощи в работе на паскале, желательно если не трудно то напиши с небольшими комментариями. и пишите пожалуйста...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru