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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Militer
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 44
#1

Удаление элементов из строки - C++

16.03.2013, 18:57. Просмотров 943. Ответов 6
Метки нет (Все метки)

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
#include <stdio.h>
int vvod ( char *m, int n, int *k);
void udal ( char *m,int n, int k);
void vivod ( char *m,int n);
 
void main (void)
{char m[100];
int k,n;
n=vvod (m,100,&k);
udal (m,n,k);
vivod (m,n);
}
int vvod ( char *m, int n, int *k)
{int i;
scanf("%d",&*k);
for (i=0;i<n;i++) {scanf("%c",&*(m+i)); if (*(m+i)==' ') return i;};
}
void udal ( char *m, int n, int k)
{int i;
for (i=0;i<n;i++) *(m+i)=*(m+k+i);}
void vivod ( char *m,int n)
{int i;
for (i=k;i<n;i++) printf("%c",m[i]);
}
В чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 18:57     Удаление элементов из строки
Посмотрите здесь:

Удаление элементов строки - C++
Извините, если задача покажется вам банальной, но я что-то никак не могу разобраться. В строку вводится телефонный номер (тип данных...

Удаление элементов со строки - C++
Нужно ввести с клавиатуры строку и число, число элементов которые нужно удалить с левой стороны строки. И вывести строку уже без удаленных...

Удаление из строки повторяющихся элементов (через функцию) - C++
Добрый день! #include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; //Удаление повторяющихся элементов в алфавите ...

Сохранение строки в массив и удаление повторяющихся элементов массива - C++
Нужно сделать так, что бы строка занасилась в массив без повтора элементов.(к примеру строка: &quot;Травка зеленеет, солнышко блестит.&quot; , а в...

Замена первых элементов каждой строки квадратной матрицы на сумму элементов этой строки - C++
Замена первых элементов каждой строки квадратной матрицы на сумму элементов этой строки

удаление элементов массива, которые равны сумме предыдущего и следующего элементов - C++
Нужно написать подпрограмму которая удаляет элементы массива, которые равны сумме предыдущего и следующего элементов

Строки (Удаление слова из строки) - C++
с нахождением слова проблем не возникает, а вот с удалением всех вхождений этого слова проблема! задание:Найти самое длинное слово...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kostya-vrn
10 / 10 / 4
Регистрация: 16.03.2013
Сообщений: 30
16.03.2013, 18:59     Удаление элементов из строки #2
а какая у тебя проблема с программой?
Militer
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 44
16.03.2013, 19:24  [ТС]     Удаление элементов из строки #3
Как положено не работает, программа должна удалять k элементов из строки.

Добавлено через 4 минуты
опечатка
C++
1
2
3
4
void vivod ( char *m,int n)
{int i;
for (i=0;i<n;i++) printf("%c",m[i]);
}
Добавлено через 16 минут
help
Dragsaw
0 / 0 / 0
Регистрация: 16.03.2013
Сообщений: 6
16.03.2013, 19:57     Удаление элементов из строки #4
по-моему, ошибка в том, что при удалении элементов нужно уменьшать и размер самой строки, т.е. присваивать значение NULL новому последнему элементу. если удаляется k элементов, последний элемент строки станет *(n-k).
так что в функции udal нужно добавить строку
C++
1
&*(n-k)=NULL;
(я со ссылками пока не очень знаком, поэтому может быть не такая строка, но, надеюсь, смысл понятен)
kostya-vrn
10 / 10 / 4
Регистрация: 16.03.2013
Сообщений: 30
16.03.2013, 21:26     Удаление элементов из строки #5
Можно ничего не удалять, а сделать счетчик S(количество удаленных элементов) и выводить не весь массив символов, а на S элементов меньше.
Militer
1 / 1 / 0
Регистрация: 12.03.2013
Сообщений: 44
16.03.2013, 21:33  [ТС]     Удаление элементов из строки #6
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
#include <stdio.h>
int vvod ( char *m, int n, int *k);
void udal ( char *m,int n, int k);
void vivod ( char *m,int n,int k);
 
void main (void)
{char m[100];
int k,n;
n=vvod (m,100,&k);
udal (m,n,k);
vivod (m,n,k);
getchar ();
getchar ();
 
}
int vvod ( char *m, int n, int *k)
{int i;
printf("\nvvedite kol-vo udal simvolov ");
scanf("%d",&*k);
printf("\nvvedute stroku vvod ogranichen 0\n");
for (i=0;i<n;i++) {scanf("%c",&*(m+i)); if (*(m+i)=='0') return (i-1);};
 
}
void udal ( char *m, int n, int k)
{int j;
 
for (j=0;j<n;j++) *(m+j)=*(m+k+j+1);}
void vivod ( char *m,int n,int k)
{int i;
for (i=0;i<n-k;i++) printf("%c",m[i]);
}
исправил,заработала,но мне кажется,что все как-то криво )
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 22:18     Удаление элементов из строки
Еще ссылки по теме:

умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй матрицы - C++
получить новую матрицу умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй...

Удаление строки - C++
Помогите удалить строку из текстового файла с последующим сдвигом всех строк, находящихся ниже, на 1 вверх. Заранее спасибо.

Удаление из строки - C++
Из введённой с клавиатуры строки нужно удалить все символы не являющиеся латинскими буквами. Удалить что-либо не проблема а вот как...

Удаление из строки - C++
Здравствуйте,сразу к делу, есть строка, в ней записан исходный код программы, нужно заменить все переменные на букву(допустим i)и имена...

Удаление строки - C++
Есть одна задача на удаление строки. Переделывал с другой задачи, там было на удаление и с ограничением по кол-ву символов в строке. Если...


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

Или воспользуйтесь поиском по форуму:
kostya-vrn
10 / 10 / 4
Регистрация: 16.03.2013
Сообщений: 30
16.03.2013, 22:18     Удаление элементов из строки #7
ты же это все не за сумму с 10 нулями делаешь и поэтому все должно быть по высшему классу.
Yandex
Объявления
16.03.2013, 22:18     Удаление элементов из строки
Ответ Создать тему
Опции темы

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