Форум программистов, компьютерный форум CyberForum.ru

Строки - C++

Восстановить пароль Регистрация
 
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
09.11.2010, 15:10     Строки #1
Надо программа, которая . заменяет на ... у меня получилось только это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include <iostream>
#include <cctype> 
#include <string>
using namespace std;
 
int main()
{ setlocale (LC_ALL, "Russian");
char s[100];
cout<<"Введите ваш текст не более 100 знаков:"<<endl;
for(int i=0;i<100;i++){ cin>>s[i];
for(i=0;i<100;i++)
    if(s[i]='.' && s[i+1]!='.')// если точка одна
а как теперь мне на место одного знака вставить 3, не затерев при этом следующие элементы?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2010, 15:10     Строки
Посмотрите здесь:

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки. C++
Добавить в конец первой строки, последние n2-n1 слов второй строки C++
C++ Скопировать второе слово каждой строки в начало следующей строки
C++ Найти номер строки матрицы, наиболее отдаленный от первой строки
C++ Определить длину строки,удалить из строки все символы, которые равны заданному
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
09.11.2010, 16:26     Строки #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <conio.h>
int main(void)
{
  char str[32] = "Hello, World", result[64], *pc;
  /* Заменяем букву W на три точки */
  pc = strchr(str, 'W');
  *pc++ = '\0';
  strcat(strcat(strcpy(result, str), "..."), pc);
  
  printf(result);
  getch();
  return 0;
}
Функция strchr
#include <string.h>
char *strchr(const char *str, int ch);

Функция strchr() возвращает указатель на первое вхождение младшего байта параметра ch в строку str. Если указанный символ не найден, возвращается нулевой указатель.


Функция strcat.
#include <string.h>
char *strcat(char *str1, const char *str2);

Функция strcat() присоединяет к строке str1 копию строки str2 и завершает строку str1 нулевым символом. Конечный нуль-символ, первоначально завершающий строку str1, перезаписывается первым символом строки str2. Строка str2 при этом не изменяется. Если заданные массивы перекрываются, поведение функции strcat() не определено.

В версии С99 к параметрам str1 и str2 применен квалификатор restrict.

Функция strcat() возвращает значение указателя str1.

Помните, что при выполнении операций с массивами символов контроль нарушения их границ не выполняется, поэтому программист должен сам позаботиться о достаточном размере массива str1, позволяющем вместить как его исходное содержимое, так и содержимое массива str2.



Функция strcpy
#include <string.h>
char *strcpy(char *str1, const char *str2);

Функция strcpy() копирует содержимое строки str2 в строку str1. Параметр str2 должен указывать на строку с завершающим нулевым символом. Функция strcpy() возвращает значение указателя str1.

В версии С99 к параметрам str1 и str2 применен квалификатор restrict.

Если символьные массивы str1 и str2 перекрываются, поведение функции strcpy() не определено.
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
09.11.2010, 21:20  [ТС]     Строки #3
гм. А если стоит ... мне его не надо заменять а только одну точку! И вторым заданием, которое я хотел сделать на основе этого: ... заменить на ;

Добавлено через 5 минут
а еще работает до первой точки, тоесть все остальные не проверяет... и работает до пробела... идей у меня вообще нет, спасайте

Добавлено через 4 часа 12 минут
Ну помогитеееее!!!!
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
09.11.2010, 22:59     Строки #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <conio.h>
int main(void)
{
  char s[128], cpy[128], *pc;
  int i, len;
  printf("Vvedite stroku: ");
  gets(s);
  for(i = 0; s[i] != '\0'; i++)
    if( s[i] == '.' )
    {
      pc = &s[i];
      *pc++ = '\0';
      strcat(strcat(strcpy(cpy, s), "..."), pc);
      strcpy(s, cpy);
      i += 2;
    }
  printf("Result: %s", s);
  getch();
  return 0;
}
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
10.11.2010, 15:00  [ТС]     Строки #5
неловко просить, но приведеная выше программа заменяет ... на ........ изменив условие ифа:
C++
1
if( s[i] == '.' && s[i+1]!='.')
выдает 5 точек, а если
C++
1
if( s[i] == '.' && s[i+1]!='.'&& s[i+2]!='.')
выдает 5 точек. Как избавиться от этой проблемы?
короче, любое колличество точек программа должна заменить на ... но не делать при этом ..... или ........
Буду очень благодарен!
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
10.11.2010, 16:28     Строки #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <conio.h>
int main(void)
{
  char s[128], cpy[128], *pc;
  int i, len;
  printf("Vvedite stroku: ");
  gets(s);
  for(i = 0; s[i] != '\0'; i++)
    if( s[i] == '.' )
    {
      pc = &s[i];
      while(*pc == '.') *pc++ = '\0';
      strcat(strcat(strcpy(cpy, s), "..."), pc);
      strcpy(s, cpy);
      i += 2;
    }
  printf("Result: %s", s);
  getch();
  return 0;
}
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
10.11.2010, 16:37  [ТС]     Строки #7
Спасибо огромнейшее!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2010, 17:37     Строки
Еще ссылки по теме:

C++ .Упорядочить строки матрицы по убыванию значений произведений наименьшего и наибольшего элементов каждой строки
C++ Переместить вниз строки массива, в которых сумма элементов строки меньше ноля
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки

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

Или воспользуйтесь поиском по форуму:
Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
10.11.2010, 17:37     Строки #8
Пожалуйста!
Yandex
Объявления
10.11.2010, 17:37     Строки
Ответ Создать тему
Опции темы

Текущее время: 13:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru