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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 20:48   #1
euhenia
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 18
По умолчанию замена символов в строке

дано натуральное число n и символы s1,s2..sn.заменить каждую точку многоточием и каждые из груп стоящих точек одной точкой...
помогите разобраться ...написать программу на си..
я новичек и не очень разбираюсь...
это мои маленькие наброски...
помогите исправить ошибки...

Код:
#include <stdio.h>
#include <conio.h >
#include <string.h>
void main()

char s[256];
char s1[256];
scanf("%s", s);
int cpos = 0;
for (int i = 0; i < 256; i++)
{
   if (s[i] == '.')
   {
      if ((i < 254) && (s[i+1] == '.') & (s[i+2] == '.')) // если стоят три точки подряд, то заменяем на одну и сдвигаем позицию чтения i на 2 вперёд
      {
         s1[cpos] = '.';
         i+=2;
      }
      else // иначе замняем одну точку на три и сдвигаем позицию записи на два вперед
      {
         s1[cpos] = '.';
         s1[cpos + 1] = '.';
         s1[cpos + 2] = '.';
         cpos+=2;
      }
   }
   else // иначе это обычный символ и просто записываем его во вторую строку
   { s1[cpos] = s[i]; }
   cpos++;
}

Последний раз редактировалось Stilet; 30.11.2009 в 11:42. Причина: ошибка
euhenia вне форума Ответить с цитированием
Старый 30.11.2009, 02:38   #2
Valentine
Пользователь
 
Регистрация: 29.11.2009
Сообщений: 14
По умолчанию

Вот немного подправил:

Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char s[256];
char s1[256];
int cpos = 0,i;
clrscr();
scanf("%s", s);

for ( i = 0; i < strlen(s); i++)
{
if (s[i] == '.')
{
if ((s[i+1] == '.') && (s[i+2] == '.')) // если стоят три точки подряд, то заменяем на одну и сдвигаем позицию чтения i на 2 вперёд
{
s1[cpos] = '.';
i+=2;
}
else // иначе замняем одну точку на три и сдвигаем позицию записи на два вперед
{
s1[cpos] = '.';
s1[cpos + 1] = '.';
s1[cpos + 2] = '.';
cpos+=2;
}
}
else // иначе это обычный символ и просто записываем его во вторую строку
{ s1[cpos] = s[i]; }
cpos++;
}
s1[cpos]='\0';
puts("");
puts(s1);
getch();
}

Последний раз редактировалось Stilet; 30.11.2009 в 11:42.
Valentine вне форума Ответить с цитированием
Старый 30.11.2009, 17:30   #3
euhenia
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 18
По умолчанию

спасибо однако...что то не то не выходит из цикла...
помогите найти ошибку ..
что не так..??
euhenia вне форума Ответить с цитированием
Старый 30.11.2009, 20:59   #4
euhenia
Пользователь
 
Регистрация: 11.11.2009
Сообщений: 18
По умолчанию

все я поняла...
нашла ошибку..всем спасибо...
euhenia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ассемблер, замена символа в строке tiger Помощь студентам 3 05.11.2009 15:25
замена элементов в строке _llllllllll_ Помощь студентам 4 18.10.2009 10:01
Шифрование, замена символов. foE Общие вопросы Delphi 4 26.05.2009 12:03
Замена подстрок в строке по шаблону _SERGEYX_ Общие вопросы Delphi 0 08.09.2008 08:45
Замена символов PAVEL315 Общие вопросы Delphi 1 03.02.2007 21:56