Помогите пожалуйста решить такую задачку, что-то никак не соображу!
В подфоруме "Задачи" есть прикрепленная тема, называется типа "Все способы разбиения на слова". Зайди в Задачи - сразу ее увидишь.
После того, как текст разбит на слова, останется только пройтись по ним в цикле оператором типа такого:
if w[Length(w)]='r' then WriteLn(w)
Спасибо большое!!! Не подскажешь как можно заменить паскалевскую функцию "copy" на что-то похоже в с++?
Я имею в виду, как заменить вот этот кусок программы
А я имею в виду, как у тебя описаны W и S...
(не надо никогда дословно переводить программы с Паскаля на С/С++. Проще будет написать заново, чем заставить это перевод работать правильно. Если у тебя чистый С - то strtok в помощь, в две строчки кода делается разбиение на слова. Если С++ - то есть другие средства).
Вот я и мучуюсь, как описать w. S описана у меня как char s[100]; А как вот массив строк описать я не понимаю. А как уж присовоение написать подавно. Я новичок, си учу 3 недели только. Подскажи пожалуйста елси можешь.
(СПС. Учту на будущее. У меня С++.)
Помогите пожалуйста решить задачу написанную в первом посте, но уже на языке С++!
#include <conio.h> // для getch()Должно работать и для С++, и для чистого С...
#include <stdio.h>
#include <string.h>
int main() {
char s[] = "this is the test for acid_burn: star, force";
// это - разделители: слова в строке могут разделяться пробелами, двоеточиями,
// точками и запятыми... Можешь добавить еще чего-нибудь, если нужно...
char *delimiters = " :,.";
char *result = NULL; // это - простой указатель на строку, инициализированный NULL-ом
// получаем первое слово строки с помощью библиотечной функции strtok:
// первый параметр = строке, которую разбиваем на слова
result = strtok(s, delimiters);
// следующий цикл будет выполняться до тех, пор, пока в строке еще остались слова,
// то есть, пока result не равен NULL (как только он будет NULL - выходим из цикла)
while(result) {
// здесь в result хранится указатель на очередное слово,
// проверяем последний символ этого слова (не забываем ,что в С символы в строке
// индексируются с 0), и если он == 'r' выводим слово на печать
if(result[strlen(result) - 1] == 'r') printf("%s ", result);
// попытка получить следующее слово в заданной строке.
// Особенность функции strtok - в том, что ей после того, как первое слово уже найдено
// не надо указывать саму строку, нужно первым параметром передавать NULL, тогда
// эта функция будет работать с той же строкой, что и при первом вызове...
result = strtok(NULL, delimiters);
}
// Добавляем ожидание нажатия на кнопку...
getch();
return 0; // и выходим из программы
}
Спасибо огромное . Но как сделать чтобы программа задерживалась.(т.е что бы я смог увидеть рез-т)
И ещё, не мог бы ты дать описание программы по каждой строчки, начиная с
Комментарии добавлены, ожидание нажатия с клавиатуры - тоже...
Спасибо за подробное описание. Теперь разобрался! Ещё раз спасибо!
Добавлено через 17 мин.
...
char *delimiters = " :,.";
char *result = strtok(s, delimiters); // сразу искать первое слово в S
...
Ну всё, вроде отсальное понятно. СПС.