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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 163, средняя оценка - 4.61
Telchar
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
#1

Как очистить элементы массива? - C++

17.04.2009, 13:02. Просмотров 23257. Ответов 12
Метки нет (Все метки)

Скажите, а можно как-то очистить массив? Допустим задан массив типа int mas[100]. После некоторых вычислений, он заполнился следующими значениями, к примеру:
mas[0] = 20
mas[1] = 23
mas[2] = 35
...
mas[70] = 55

Но мне нужно его очистить, чтобы записать новые значения. Подскажите, как это сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2009, 13:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как очистить элементы массива? (C++):

Как из массива получить другой, где элементы первого массива перемножены на самих себя - C++
Как из массива получить другой, где элементы первого массива перемножены на самих себя?(Если можно то скиньте код)

Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы - C++
Написать программу , которая вводит с клавиатуры массив из N вещественных чисел , создает два новых массива , в один из которых помещает...

Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы - C++
В одномерном массиве, состоящем из n вещественных элементов, – вывести на печать элементы массива, значения которых не принадлежат...

Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива - C++
Даны массивы A, B. Нужно получить третьи массив C состоящий: вначале элементы первого массива, затем элементы второго массива.

Разделить элементы одного массива на элементы другого массива, записать результат в третий массив - C++
Как разделить элементы одного массива на элементы другого массива? есть массив a и есть массив b. размеры a=b. ввожу новый массив,...

одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++ - C++
одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
17.04.2009, 13:06 #2
что в вашем понимании очистить?
обнулить?
в любом случае, можно лишь записывать данные поверх существующих... и обнулить. очистить - такого понятия при работе с массивами нет. да и оно не нужно. всегда есть выход альтернативный.
0
Telchar
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
17.04.2009, 13:10  [ТС] #3
да, верно, просто сейчас у меня старые данные плюсуются с новыми, а это не есть гуд )) мне бы хотелось просто перезаписывать старые новыми...
0
12zzz
14 / 14 / 1
Регистрация: 14.04.2009
Сообщений: 66
17.04.2009, 13:35 #4
http://www.delphibasics.ru/FillChar.php
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
17.04.2009, 13:44 #5
C
1
2
3
#include <string.h>
 
memset(mas, 0, sizeof(int)*N);
Обнулит первые N элементов целочисленного массива.
1
Telchar
0 / 0 / 0
Регистрация: 09.04.2009
Сообщений: 6
17.04.2009, 17:33  [ТС] #6
спасибо! =)
0
Monte-Cristo
2789 / 1375 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
17.04.2009, 17:54 #7
ну обнулить можно так:

C++
1
for (int i=0; i<n; i++) mas[i] = 0; // обнуляем массив состоящий из n элементов
ну а вообще, данные перезаписываются. то есть:
C++
1
2
3
4
int mas[3];
mas[1] = 25; 
mas[1] = 55;
cout << mas[1];
выведет на экран 55. так как в ячейку с индексом 1 присвоено значение 55 (и оно атирает все что было в этой ячейки до этого)
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.04.2009, 19:12 #8
C
1
    memset(mas, 0, sizeof(int)*N);
C
1
    memset(mas, 0, sizeof mas);
1
Attos
9 / 9 / 0
Регистрация: 20.08.2010
Сообщений: 27
28.09.2010, 22:20 #9
Цитата Сообщение от accept Посмотреть сообщение
C
1
    memset(mas, 0, sizeof(int)*N);
C
1
    memset(mas, 0, sizeof mas);
C
1
  memset(mas, 0, sizeof( mas)/sizeof(mas[0]);
?
0
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
28.09.2010, 22:22 #10

Не по теме:

Attos, да, Вы, батенька, некрофил


И кстати
C++
1
memset(mas, 0, sizeof( mas)/sizeof(mas[0]);
ошибочное решение. memset'у нужно знать количество байт, а не элементов.
Правильный вариант:
C++
1
memset(arr, 0, sizeof(arr));
1
Attos
9 / 9 / 0
Регистрация: 20.08.2010
Сообщений: 27
01.10.2010, 21:48 #11
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
ошибочное решение. memset'у нужно знать количество байт, а не элементов.
Правильный вариант:
C++
1
memset(arr, 0, sizeof(arr));
Посмотрел, точно хотя по "count" сразу и скажешь)
Цитата Сообщение от CyBOSSeR Посмотреть сообщение

Не по теме:

Attos, да, Вы, батенька, некрофил

Почему это? разве это не используется нигде?
0
CyBOSSeR
Эксперт C++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.10.2010, 21:56 #12
Цитата Сообщение от Attos Посмотреть сообщение
Почему это? разве это не используется нигде?
Посмотрите на дату сообщений в теме.
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
02.10.2010, 00:59 #13
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Посмотрите на дату сообщений в теме
Да ладно, прошлогодний всего покойник. Тут, бывает, и двух и трёх летних откапывают...
Для полноты картины BSD-стиль
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <strings.h>
 
#define SIZE 5
 
int main(void){
    int i, arr[SIZE] = { 1, 2, 3, 4, 5 };
    for ( i = 0; i < SIZE; ++i )
        printf("%d%c", arr[i], ( i < SIZE - 1 ) ? ' ' : '\n');
    bzero(arr, sizeof(int) * SIZE);
    for ( i = 0; i < SIZE; ++i )
        printf("%d%c", arr[i], ( i < SIZE - 1 ) ? ' ' : '\n');
    
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2010, 00:59
Привет! Вот еще темы с ответами:

Получить массив, расположив в его начале элементы массива A, а затем — элементы массива B - C++
Помогите решить такую вот задачку (Даны массивы A и B. Получить массив C, расположив в его начале элементы массива A, а затем — элементы...

Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции - C++
Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции

Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции - C++
Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции, при этом 3 элемента массива Х перемещаются в начало

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) - C++
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и B(4). Сформировать и вывести на экран новый массив,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.10.2010, 00:59
Ответ Создать тему
Опции темы

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