Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/116: Рейтинг темы: голосов - 116, средняя оценка - 4.54
nill
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 417
1

Присвоение значений всем элементам массива

15.10.2009, 15:03. Просмотров 21682. Ответов 13
Метки нет (Все метки)

Как присвоить значение всем элементам массива наиболее простым способом

думал что

C++
1
2
  
double massiv[11]={1};
присваивает значение всем элементам но как оказалось только первому элементу

Можно как то присвоить значение всем элементам сразу при инициализации массива?
Ну или без использования цикла
К примеру надо чтобы все элементы массива были равны 1.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2009, 15:03
Ответы с готовыми решениями:

Присвоение значений элементам двумерного динамического массива
Я недавно начал программировать на языке С++, поэтому, естественно, многого не...

Присвоение значений элементам вложенной структуры
Необходимо присвоить значение элементам массива структур struct message {...

Присвоение значений элементам двумерного вектора
Недавно добрие люди помогли мне со следующим кодом 1 код ...

Ко всем элементам одномерного массива прибавить первый
Дан одномерный массив. Нужно ко всем его элементам прибавить первый . Например...

Прибавить ко всем элементам одномерного числового массива максимальный элемент
Прибавить ко всем элементам одномерного числового массива максимальный элемент....

13
pigah
12 / 12 / 5
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
15.10.2009, 15:22 2
C++
1
2
3
for(int i=0;i<11;i++){
massiv[i]=1;
}
0
nill
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 417
15.10.2009, 15:25  [ТС] 3
pigah,
ну это я и сам знаю
я ж написал можно ли без цикла
0
pigah
12 / 12 / 5
Регистрация: 05.07.2009
Сообщений: 147
Записей в блоге: 1
15.10.2009, 15:28 4
Нет но можно так:
C++
1
double massiv[5]={1,1,1,1,1};
0
CheshireCat
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
15.10.2009, 15:37 5
А если массив тысяч этак на 20 элементов
C++
1
2
3
4
5
6
#include <algorithm>
 
const int size = 50000;
double array[size];
 
std::fill(array, array + size, 1.0);



1
rangerx
1942 / 1551 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
15.10.2009, 16:17 6
...присваивает значение всем элементам но как оказалось только первому элементу
Не совсем так. Если используется список инициализации, то все эелементы которые не инициализированы в ручную автоматически инициализируются нулями. Т.е. к примеру int mas[5] = {0}; инициализирует нулями весь массив, а не только первый элемент.
0
M128K145
Эксперт JavaЭксперт С++
8326 / 3547 / 420
Регистрация: 03.07.2009
Сообщений: 10,708
15.10.2009, 16:18 7
Шутка, но как вариант
C++
1
2
3
4
int buf[20000];
for(int i = 0; i < 20000; ++i)
    buf[i] = 1;
int* mas = buf;
0
nill
10 / 10 / 2
Регистрация: 16.08.2009
Сообщений: 417
15.10.2009, 16:23  [ТС] 8
CheshireCat,
большое спасибо то что нужно
почему то заработало без #include <algorithm> и std:: это нормально ?

pigah,
C++
1
double massiv[5]={1,1,1,1,1};
тож полезно знать что так можно
0
AnonymC
1179 / 464 / 86
Регистрация: 23.06.2009
Сообщений: 6,375
Завершенные тесты: 1
15.10.2009, 16:40 9
nill, а чем тебе цикл мешает?
0
CyBOSSeR
Эксперт С++
2310 / 1683 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
15.10.2009, 16:41 10
Цитата Сообщение от CheshireCat Посмотреть сообщение
А если массив тысяч этак на 20 элементов
C++
1
std::fill(array, array + size, 1.0);
Пояснения к функции fill.
C++
1
2
3
4
5
6
template<class ForwardIterator, class Type>
   void fill(
      ForwardIterator _First,  // указатель на первый элемент массива (имя массива является одновременно указателем на первый элемент)
      ForwardIterator _Last,   // указатель на элемент следующий за последним (указатель на первый элемент плюс количество)
      const Type& _Val         // заполнитель 
   );
Ссылка в MSDN: fill(C++ Std Lib)

А std нужно потому, что fill входит в простанство имен (namespace) под названием std, и просто так его использовать не получиться. Операция :: (разрешение контекста) используется для доступа к членам пространства имен (но не только).
0
Sich_Taras
14 / 14 / 4
Регистрация: 08.10.2009
Сообщений: 114
15.10.2009, 16:57 11
Можно использовать такой вариант, который значительно быстрее способа "через цикл":
C++
1
2
3
4
5
6
7
8
9
//In Visual Studio 9.0
#include<iostream>
....
int main()
{
int Array[100];
memset(Array, 0, sizeof(int)*100)
....
}
Это подходит для целочисельных типов и типа bool.
0
CheshireCat
Эксперт С++
2912 / 1261 / 114
Регистрация: 27.05.2008
Сообщений: 3,464
15.10.2009, 17:06 12
Это допустимо только при заполнении нулями. Иначе, для ненулевых значений, это допустимо только для типов char и bool.
0
Владимир54645
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 3
29.12.2016, 19:29 13
как присваивать значение символьным массивам?
0
MansMI
1448 / 1157 / 549
Регистрация: 08.01.2012
Сообщений: 4,509
30.12.2016, 03:43 14
C
1
2
3
4
char a[]="qwerty";//6+7-й ноль
char b[10]="";//все 10 ноль
char c[10];
memset(c,'z',sizeof(c));//все 10 'z'
0
30.12.2016, 03:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2016, 03:43

Помогите найти ошибку в коде(цикл for проходит не по всем элементам массива)
#include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include &lt;clocale&gt; #include...

Исправить программу, чтобы она прибавляла ко всем элементам одномерного массива первый
Подскажите как сделать чтобы эта программа ко всем элементам прибавляла не 1 ,...

Ко всем положительным элементам массива прибавить первый элемент, а из нулевых вычесть заданное число
Всем привет. Ребят помогите срочно. Не могу написать простенькую программу. Дан...


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

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

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