Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2009, 23:38   #1
Katya Melody
 
Регистрация: 12.03.2009
Сообщений: 7
По умолчанию Помогите, пожалуйста решить задачку со строками(С++)

Задача такая. Дана строка, состоящая из слов, разделенных пробелами. Распечатать исходную строку. Подсчитать количество слов. Преобразовать ее, заменяя всякое вхождение "всегда на "часто"
Исходная строка: Запомни навсегда: кто всегда опаздывает, тот всегда ждет
Интересует вообщем-то именно выделенное жирным шрифтом. Очень прошу, кого-нибудь помочь написать функцию, которая бы выполняла эту операцию(только не очень мудренно, а то не поверят,что сама делала=)),преподша что-то говорила, что можно использовать функции strcmp и strcat. Заранее спасибо
Katya Melody вне форума Ответить с цитированием
Старый 13.03.2009, 00:36   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Я так понял, раз strcmp и strcat, то стринги использовать нельзя?
В общем, написал с stdio и string.h.
Результат пишется во вторую строку.
Слова "часто" и "всегда" на транслите (в начале) если надо исправьте на русские.
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

int main()
{
const char vsegda[]="vsegda";
const char chasto[]="chasto";
char str[1000],str2[1000],buf[100];
int i,len,k,j;

printf("Vvedite stroku\n");
gets(str);
j=0;
str2[0]=0;
len = strlen(str);
i=0;
while(i<len)
 {
   while(str[i]==' '&& i<len)
    str2[j++] = str[i++];
  buf[0]=0;
  k = 0;

  while(str[i]!=' '&& i<len)
    buf[k++] = str[i++];
  buf[k]=0;
  str2[j]=0;
  if(strcmp(buf,vsegda)==0)
   { strcat(str2,chasto); j+=strlen(chasto); }
  else
   { strcat(str2,buf); j+=k; }

 }

str2[j] = 0;
printf("%s\n",str2);

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.03.2009, 00:45   #3
Katya Melody
 
Регистрация: 12.03.2009
Сообщений: 7
По умолчанию

ААА спасибо большое=)!только вот несколько вопросов
1. int main()
я могу написать void?понимаю тупой вопрос.но я просто не очень это понимаю.и на семинарах мы так пишем обычно
2. printf("%s\n")
%-это символ для того чтобы оставить на этой строке символ?
Katya Melody вне форума Ответить с цитированием
Старый 13.03.2009, 00:51   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
я могу написать void?понимаю тупой вопрос.но я просто не очень это понимаю.и на семинарах мы так пишем обычно
В C++ принято, что main возвращает целочисленное значение. Некоторые компиляторы (например, мой) просто не позволят вам сделать ее другого типа.
Если ваш компилятор не жалуется - можете сделать и void.

Цитата:
2. printf("%s\n")
%-это символ для того чтобы оставить на этой строке символ?
%s - спецификатор, который говорит функции printf, что аргументом является строка.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 13.03.2009, 01:02   #5
Katya Melody
 
Регистрация: 12.03.2009
Сообщений: 7
По умолчанию

Sazary, с void уже разобралась, просто убираю возвращаемый ноль и все работает.А за спецификатор спасибо,буду иметь ввиду. Огромное спасибо за задачу!
Katya Melody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку пожалуйста Никитка89 Паскаль, Turbo Pascal, PascalABC.NET 5 25.05.2008 22:33
помогите, пожалуйста, решить задачку vol1 Паскаль, Turbo Pascal, PascalABC.NET 3 08.01.2008 21:09
Пожалуйста, помогите решить задачку. Cizen Помощь студентам 9 03.07.2007 08:27