Как занулить все элементы массива с
Регистрация: 01.05.2012
Сообщений: 1
Масив.Обнулить элемент
Ребята помогите пожалуйста- не знаю как обнулить элемент массива. Нужно обнулить поочередно максимальный и минимальный элементы пока не останется только 1 элемент массива. Вот мой код:
#include
#include
void main()
const int n=10;
int i;
int nArray[n];
//заполнение массива
printf(«Vvedite massiv iz 10 elementov:\n»);
for( i=0;i
scanf(«%d»,&nArray[i]); >
// Вывод массива
printf(«Massiv:»);
for(i=0;i
//инициализация и максимального элемента
int nMax=nArray[0];
//поиск максимального элемента
for( i=0;i
nMax=nArray[i];
>
printf(«\nMaximal’niy element:»);
printf(«%d\n»,nMax);
//инициализация и минимального элемента
int nMin=nArray[0];
//поиск минимального элемента
for( i=0;i
>
printf(«Minimal’niy element:»);
printf(«%d\n»,nMin);
>
| deathriper |
| Посмотреть профиль |
| Найти ещё сообщения от deathriper |
Обнуление массива в Си
Как правильно обнулить массив? Речь о любых типах массива, будь то символьный, целочисленный, динамический и т.п Если способов несколько то желательно написать как можно больше. Способ, который изучен мною выглядит как — то так:
char str[100] = ;
Но я не знаю является ли такой метод обнуления верным, с технической точки зрения и с точки зрения процедурного программирования и объектно-ориентированного программирования.
Отслеживать
задан 7 янв 2019 в 12:29
1,273 3 3 золотых знака 12 12 серебряных знаков 33 33 бронзовых знака
обнулить массив в C
Как наиболее правильно обнулить массив данных в C? Чтобы был обнулен не только первый элемент, но достоверно стерлись и все остальные.
anonymous
08.06.03 00:22:30 MSD
Re: обнулить массив в C
char a[100]; memset (a, 0, sizeof(a));
anonymous
( 08.06.03 01:00:49 MSD )
Re: обнулить массив в C
и не забывай продвинутые виндовуз компиляторы
при оптимизации просто
пропускают оператор memset(a,0,sizeof(a));
что делает gcc Хз )
PS: опять все приходиться делать вручную (((
Aleks_IZA ★
( 08.06.03 08:32:55 MSD )
Re: обнулить массив в C
С какого это перепоя? Если действительно есть такой компилятор, то это его глюк, а не оптимизация. Такое ощущение, что ты спутал 2 вещи:
— Просто выкинуть нафиг вызов memset.
— Вместо вызова memset использовать встроенный код (rep stosd или типа того). Т.е. по сути — тот же memset, но без накладных расходов на push+call+ret+add.
nobody ★★
( 08.06.03 15:07:00 MSD )
Re: обнулить массив в C
А ещё есть bzero. (может оно эфективнее будет)
anonymous
( 09.06.03 07:55:49 MSD )
Re: обнулить массив в C
an$ man bzero [skip] CONFORMING TO 4.3BSD. This function is deprecated -- use memset in new programs. В переводе с англ. это означает, что разработчики glibc рекомендуют использовать в новых программах memset вместо bzero.
nobody ★★
( 09.06.03 14:10:55 MSD )

Re: обнулить массив в C
char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:43 MSD )

Re: обнулить массив в C
char a[100]=; Работает классно! И не надо выдрючиваться.
kkk ★★
( 11.06.03 09:43:50 MSD )
Re: обнулить массив в C
2 kkk.
Такое ощущение, что в этом случае обнулится только a[0].
И потом, это работает только один раз. После того, как ты чего-то записал в `a’, а затем решил его обнулить, `a=;’ вообще не прокатит.
nobody ★★
( 11.06.03 13:14:03 MSD )
Re: обнулить массив в C
2nobody:
kkk прав, при инициализации массива, элементам «не хватившим » значений — инициализируются неявно \0. Для случая
char a[100] = < 0 >
a[0] — явно инициализируется 0-м
a[1]-a[99] — неявно инициализируются 0-м
ps: аналогичным образом можно инициализировать и структуры.
pss: все это есть в стандарте.
anonymous
( 18.06.03 02:28:30 MSD )
Ответ на: Re: обнулить массив в C от anonymous 18.06.03 02:28:30 MSD
Re: Re: обнулить массив в C
>2nobody: >kkk прав, при инициализации массива, элементам «не хватившим » >значений — инициализируются неявно \0. Для случая >char a[100] = < 0 >>a[0] — явно инициализируется 0-м >a[1]-a[99] — неявно инициализируются 0-м
>ps: аналогичным образом можно инициализировать и структуры. >pss: все это есть в стандарте.
——————— все что выше вранье. и зависит от компилятора но не факт покажы где есть в стандарте. используй memset
C++. Может глупый вопрос, но как обнулить массив?
Т. е имеется прога которая запрашивает продолжить вычисление или нет. после первого выполнения в массиве содержаться элементы, которые мешают последующему выполнению (если пользователь нажал продолжить).
Дополнен 11 лет назад
Думаю через цикл обнулить лучше. Спасибо.
Дополнен 11 лет назад
Нет, не то. Элементы обнуляются конечно, но массивы участвуют в выводе. и получается что на вывод идет правильное число и сразу за ним несколько нулей.
Лучший ответ
int main(int argc, char * argv [])
<
int a[100];
memset(a, 0, 100*sizeof(int));
Остальные ответы
Сам не пишу на С++.
Но может попробовать циклом обнулять поочерёдно все элементы массива.
Удачи)
через цыкл каждому элементу присвоить 0
Арсен АрутюнянУченик (30) 11 лет назад
Если не известна длинна массва тоесть сколько там элементов то найди их так:
int — тип массива
через указатели попробуй
Делаешь динамический массив, перед началом устанавливаешь требуемую длину, в конце — нулевую. А что, ZeroMemory не работает?