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

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

Войти
Регистрация
Восстановить пароль
 
Johnlion
62 / 2 / 0
Регистрация: 11.05.2011
Сообщений: 666
#1

Правильно ли объявлен массив? - C++

16.11.2011, 18:04. Просмотров 513. Ответов 5
Метки нет (Все метки)

задание: Объявить массив переменных p вещественного типа, состоящий из 5 элементов. Инициализировать его значениями -0.002, 3.476, 10*23, 11*10-9,5. Тип данных элементов массива подобрать в соответствии с инициализацией.

результат:

C++
1
2
3
4
5
6
7
8
 float p[5]
         {
         float p[0]=-0,002
         float p[1]=3,476
         double p[2]=10*23, 
        double p[3]=11*10-9,
        int p[4]=5
         }
Верно?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2011, 18:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильно ли объявлен массив? (C++):

Объявлен массив строк. Как вывести на экран третью строку? - C++
char lines; char *pl = lines; a. cout << pl+3; b. cout << *(pl+3); c. cout << pl + 3*10; d. cout << pl +...

Не объявлен идентификатор IDC - C++
#include <Windows.h> #include <direct.h> #include <stdlib.h> #include <stdio.h> #include <ShlObj.h> #include "resource.h" ...

Ошибка: AInt не объявлен - C++
Пишу такую лабуду #define DEFINE_A (Name, Type) \ struct Name { ...

Ошибки undeclared, хотя include объявлен - C++
Здравствуйте! Такой код: #include "stdafx.h" #include <string> #include <fstream> #include <iostream> #include...

Вызов constexpr метода, внутри класса в котором метод и объявлен - C++
Есть статический constexpr метод. Есть статическая constexpr же константа, которая инициализируется этим самым методом. Ну или должна...

Почему изменение элемента массива, который был объявлен с размером [] - это UB? - C++
char str = "zzarb"; str = 'm'; // Undefined Behavior char str = "zzarb"; str = 'm'; // OK Что-то я не пойму, почему тогда все...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9627 / 5575 / 947
Регистрация: 25.07.2009
Сообщений: 10,710
16.11.2011, 18:07 #2
C
1
double p[5] = { -0.002, 3.476, 10.0 * 23.0, 11.0 * 10.0 - 9.0, 5.0 };
0
amor1k
Студент
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
16.11.2011, 18:08 #3
C
1
2
3
4
float p[5];
p[0] = ...;
p[1] = ...;
......
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
16.11.2011, 18:11 #4
  1. отдельные инструкции должны заканчиваться ';'
  2. фигурные скобки тут не нужны
  3. идентификаторы переменных объявляются только один раз
  4. в С/С++ нет гетерогенных массивов, т.е. если массив p объявлен как массив float, то его отдельные элементы не могут иметь другой тип
налицо ужасающее незнание синтаксиса языка. Я бы посоветовал почитать какой-нибудь учебник
0
Сыроежка
Заблокирован
16.11.2011, 18:11 #5
Цитата Сообщение от Johnlion Посмотреть сообщение
задание: Объявить массив переменных p вещественного типа, состоящий из 5 элементов. Инициализировать его значениями -0.002, 3.476, 10*23, 11*10-9,5. Тип данных элементов массива подобрать в соответствии с инициализацией.

результат:

C++
1
2
3
4
5
6
7
8
 float p[5]
         {
         float p[0]=-0,002
         float p[1]=3,476
         double p[2]=10*23, 
        double p[3]=11*10-9,
        int p[4]=5
         }
Верно?
Нет, данная конструкция не будет компилироваться. Тип массива соответствует типу его элементов, то есть должен быть задан один тип. Он задается при объявлении массива.

Поэтому вы должны написать следующим образом

C++
1
 double p[5] = { -0,002, 3,476, 10*23, 11*10-9, 5 };
Или если вы используете язык С, то

C++
1
 double p[5] = {p[0]=-0,002, p[1]=3,476, p[2]=10*23, p[3]=11*10-9, p[4]=5 };
Я только не помню по памяти, то ли в С указывается только индекс в списке инициализации, как, например, [0]=-0,002, или также имя массива, как выше в примере p[0]=-0,002.

Но в любом случае сам компилятор вам подскажет, как надо правильно делать!

Причем для обозначения запятой в числах используется знак точки, а не запятая.
0
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
16.11.2011, 18:19 #6
Цитата Сообщение от Сыроежка Посмотреть сообщение
Я только не помню по памяти, то ли в С указывается только индекс в списке инициализации, как, например, [0]=-0,002, или также имя массива, как выше в примере p[0]=-0,002.
только индекс. Но такой синтаксис (designated initializers), описывается, ЕМНИП, стандартом C99, так что лучше пользоваться вариантом, аналогичным приведенному варианту C++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2011, 18:19
Привет! Вот еще темы с ответами:

При потсроении пишет что конструктор либо недоступен либо объявлен как explicit - C++
/*Все обьекты содержимые в контейнерах без проблем выводятся через потоковые итераторы и алгоритм copy. Но когда речь идет о собственных...

Ошибка: "i" не был объявлен в этой области - C++
#include <iostream> #include <cstdlib> #include <time.h> using namespace std; int main() { int n; srand(time(NULL)); ...

Не правильно выводит массив - C++
переменные все типа iint, а выводит в 16-ой системе счисления i_max=i; j_max=j; te_max=te; } cout<<"tetta"<<te<<endl; ...

не правильно заполняется массив - C++
#include<iostream> #include<fstream> using namespace std; int main() { int i,k,n,m,j,l; k = 0; l = 2;


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

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

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