Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.09.2019
Сообщений: 74
1

Удалить из строки все запятые предшествующие первой точке

04.04.2020, 01:26. Просмотров 566. Ответов 4

Дан символьный массив, необходимо без использования функции string удалить из массива все запятые предшествующие первой точке, и заменить знаком '+' все цифры 3, стоящие после этой точки. Только начали учить обработку символьных массивов, препод просто скинул задания, ничего не понятно, надеюсь разобраться во всем по готовому коду. Также буду рад понятной по этой теме литературе и любым разъяснениям . Заранее спасибо за помощь!

Добавлено через 3 часа 13 минут
Написала программу, но теперь не знаю, как грамотно разместить в программе цикл, где я определяю первая точка в строке или нет если элемент равен 1, (++1), а затем выхожу из программы при помощи break если эта переменная равна 1. Куда?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<bible.h>
 
int main()
{
    char a[30]; // массив под входную строку. один лишний символ предусмотрим под символ конца строки
    int i = 0; // кол-во символов в символьном массиве без пробелов
    char c, d;
    printf("Vvedite stroku:\n");
    do // читаем строку посимвольно из консоли, пока не встретится символ переноса строки
    {
        c = getchar(); // читаем символ
        if (c != ',')// если символ не равен пробелу, то добавляем его в массив
        {
            a[i] = c;
            i++;
        }
    } while (c != '\n'); // читаем пока не встретим символ переноса строки
    a[i] = '\0';   // добавим в конец массива символ конца строки
    printf("%s\n", a); // выведем строку в консоль
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2020, 01:26
Ответы с готовыми решениями:

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

Строка: Удалить все запятые до первой точке и заменить символом ‘+’ все цифры ‘3’, встречающиеся после первой точки...
Дана строка символов, которая содержит хотя бы одну точку. Удалить все запятые, предшествующие...

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

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

4
2 / 2 / 0
Регистрация: 30.01.2020
Сообщений: 106
04.04.2020, 06:17 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void L(char u[])//решает задачу
{
 
          for(int i(0);u[i]!='.';i++)
  {
     
      if(u[i] == ',')
        {
           u[i]=' ';
        }
  }
 
  for(int j(num);u[j]!='.';j--)
  {
        if(u[j] == '3')
        {
            u[j] = '+';
        }
  }
}
Добавлено через 2 часа 7 минут
Если что, вот более подробный код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include <conio.h>
#include <locale>
int num;
 
void U(char u2[])//ввод с консоли и подсчёт для вывода 
{
 
    gets(u2);
    for(int i(0);u2[i]!='\0';i++)
    {
        num++;
    }
}
 
 
void L(char u[])//решает задачу
{
 
          for(int i(0);u[i]!='.';i++)
  {
     
      if(u[i] == ',')
        {
           u[i]=' ';
        }
  }
 
  for(int j(num);u[j]!='.';j--)
  {
        if(u[j] == '3')
        {
            u[j] = '+';
        }
  }
}
 
 
void U_2(char u_2[])//вывод в консоль
{
  fwrite(u_2,1,num,stdin);
}
 
 
 
 
 
 
void main()
{
    setlocale(LC_ALL , "russian");
    
    int A;
    printf("Введите размер массива для строки \n");
    scanf("%d", &A);
    char *p=new char[A];
    
  U(p);
 
  L(p);
 
  U_2(p);
 
  delete [] p;
 
  _getch();
}
0
0 / 0 / 0
Регистрация: 09.09.2019
Сообщений: 74
04.04.2020, 22:05  [ТС] 3
Вот так сделала задачу, почему из-за присвоения элементу значения +, программа не работает?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
 
int main()
{
char str[30];
int i=0;
printf("Vvedite slovo: "); gets(str);
int flag=0;
 
while(str[i])
{
        if (str[i]=='.')
        {
        flag=1;
        }
        if ((!(flag==0&&str[i]==','))&&(!(flag==1)&&str[i]=='3'))
 
        {
            str[i]='+';
            printf("%c",str[i]);
              }
        i++;
}
return 0;
}
0
Продавец времени
4736 / 2576 / 585
Регистрация: 12.03.2015
Сообщений: 12,547
04.04.2020, 23:15 4
Ахтунг! Не отлаживал, писал на заборе!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
char* foo(char* src, char* dest)
{
  char* ptr = dest;
  
  // удаление запятых до точки
  while (*src && *src != '.')
  {
    if (*src != ',') *ptr++ = *src;
    src++;
  }
  
  // замена '3' ---> '+' после точки
  while (*src)
  {
    *ptr++ = (*src != '3') ? *src : '+';
    src++;
  }
  
  *ptr = 0;
  return dest;
}
0
Продавец времени
4736 / 2576 / 585
Регистрация: 12.03.2015
Сообщений: 12,547
04.04.2020, 23:23 5
Удалить из строки все запятые предшествующие первой точке
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2020, 23:23

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Преобразовать строку, удалив из нее все запятые, предшествующие первой точке, и заменив знаком "+" все цифры "5"
Дана строка символов, среди которых есть хотябы одна точка. Преобразовать строку, удалив из нее все...

Строки: уничтожить в строке запятые перед первой точкой, заменить знаком + все цифры 3я после первой точки
Дано строка длиной n символов, среди которых есть хотя бы одна точка. превратить...

Удалить все запятые до первой точки и после первой точки все числа «5» заменить на «+»
Дана строка содержащая по крайней мере одну точку между символами. Удалить все запятые до первой...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.