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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
#1

Как инициализировать массив чисел в С++? - C++

12.04.2009, 15:55. Просмотров 1966. Ответов 10
Метки нет (Все метки)

Помогите пожалуйста, проблема следующая:
в классе Eleve нужно инициализировать массив чисел (оценки) так, чтобы при создании класса он заполнялся (через параметр конструктора), потом его можно было бы менять и выводить на экран. Я пытаюсь сделать по аналогии со строкой (string), используя &, но компилятор долго и сильно ругается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2009, 15:55     Как инициализировать массив чисел в С++?
Посмотрите здесь:

Можно ли как-то инициализировать массив? - C++
Можно ли как-то инициализировать массив ar? class digit { int a, b; public: digit (int a_, int b_) { a=a_; b=b_; }

Как инициализировать массив в классе - C++
private: static char const figury_={0,4,0,0, 0,1,0,3, 2,1,0,3, 0,2,0,2, 1,2,0,2, ...

Как инициализировать такой массив - C++
Нужно в проге(консольное приложение Win32) испоьзовать массив таких размеров double massiv_resultatov={0}; просто так я не смог его...

Как инициализировать массив строк? - C++
Здравствуйте, подскажите как инициализировать массив строк, кол-во строк неизвестно, они будут загружаться из текстового файла. И как...

Как инициализировать массив ссылок? - C++
//--------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> #pragma hdrstop ...

Как инициализировать массив в dll ? - C++
Экспериментирую с dll. Сделал графическую функцию, которая рассчитывает расстояние между точками в цикле. Хочу оптимизировать ее, чтоб...

Как инициализировать двумерный массив? - C++
подскажите как инициализировать двумерный массив long long int mass;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
12.04.2009, 16:07     Как инициализировать массив чисел в С++? #2
Код показывайте и ошибки.
PS. у телепатов сегодня выходной.
darkAngel
Технофашист
214 / 195 / 4
Регистрация: 11.03.2009
Сообщений: 860
12.04.2009, 17:13     Как инициализировать массив чисел в С++? #3
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
32
33
34
class Eleve
{
   int ocenki[50];                // Массив оценок
public:
   Eleve(int mas[])               // Конструктор принимает в качестве параметра массив чисел
   {
      for (int i=0; i<50; i++) ocenki[i] = mas[i];
   };
 
   Eleve(int ocenka, int nomer)   // Конструктор принимает в качестве параметра число (оценку) и номер в массиве для этой оценки
   {
      ocenki[nomer] = ocenka;
   };
 
   void change_all(int mas[])     // Метод изменяет оценки (в качестве параметра массив)
   {
      for (int i=0; i<50; i++) ocenki[i] = mas[i];
   }
 
   void change(int ocenka, int nomer)   // Метод изменяет оценку (в качестве параметра оценка и номер этой оценки в массиве)
   {
      ocenki[nomer] = ocenka;
   };
 
   int* ret_all()
   {                                    // Возвращает указатель на массив оценок
      return ocenki;
   };
 
   int ret(int nomer)                   // Возвращает указанную оценку из массива
   {
      return ocenki[nomer];
   };
};
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
12.04.2009, 17:24     Как инициализировать массив чисел в С++? #4
зачем после методов точка с запятой?

Добавлено через 2 минуты 26 секунд
и передавать массивы лучше через указатели....т.к. имя масива - указатель на первый его элемент...

вот это у меня работает:

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
32
33
34
35
36
class Eleve
{
private:   
    int ocenki[50]; // Массив оценок
 
 public:
   Eleve(int *mas)               // Конструктор принимает в качестве параметра массив чисел
   {
      for (int i=0; i<50; i++) ocenki[i] = mas[i];
   };
 
   Eleve(int ocenka, int nomer)   // Конструктор принимает в качестве параметра число (оценку) и номер в массиве для этой оценки
   {
      ocenki[nomer] = ocenka;
   }
 
   void change_all(int *mas)     // Метод изменяет оценки (в качестве параметра массив)
   {
      for (int i=0; i<50; i++) ocenki[i] = mas[i];
   }
 
   void change(int ocenka, int nomer)   // Метод изменяет оценку (в качестве параметра оценка и номер этой оценки в массиве)
   {
      ocenki[nomer] = ocenka;
   }
 
   int* ret_all()
   {                                    // Возвращает указатель на массив оценок
      return ocenki;
   }
 
   int ret(int nomer)                   // Возвращает указанную оценку из массива
   {
      return ocenki[nomer];
   }
};
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
13.04.2009, 01:40  [ТС]     Как инициализировать массив чисел в С++? #5
Спасибо, файл Eleve.cc компилируется.
Теперь следующая проблема: не получается заполнить массив...
Я пишу:

int main() {
...
Eleve eleve1({ 5, 5} );
...
}

компилятор говорит expected primary-expression before '{' token

Что не так?
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
13.04.2009, 02:56     Как инициализировать массив чисел в С++? #6
Правельно вам компилятор и пишет. По примеру Monte-Cristo (darkAngel) можно делать так
1. для этого констр. Eleve(int *mas)
C++
1
2
3
4
5
6
int main() {
...
int arr[50] = {1,2,3,..,50}//или то что нужно
Eleve eleve1(arr);
...
}
2. и для Eleve(int ocenka, int nomer)
C++
1
2
3
4
5
int main() {
...
Eleve eleve1(5, 5);//без всяких скобок ->"{..}"
...
}
darkAngel, здесь
C++
1
2
3
4
5
6
7
8
int ret(int nomer)// Возвращает указанную оценку из массива
{
   /*if(namber >= 50){ 
      cout<<"error"<<endl;
      return -1;
   }*/ //думаю понятно
   return ocenki[nomer];
}
желательно делать проверку чтобы небыло выхода за границы массива.
дальше таже проблема
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  Eleve(int *mas) // Конструктор принимает в качестве параметра массив чисел
   {
     //если размер mas < 50?
      for (int i=0; i<50; i++) ocenki[i] = mas[i];
   };
 
   Eleve(int ocenka, int nomer)   // Конструктор принимает....
   {
      //засада с nomer
      ocenki[nomer] = ocenka;
   }
 
   void change_all(int *mas)     // Метод изменяет оценки (в качестве параметра массив)
   {
      //если размер mas < 50?
      for (int i=0; i<50; i++) ocenki[i] = mas[i];
   }
 
   void change(int ocenka, int nomer)   // Метод изменяет....
   {
      //засада с nomer
      ocenki[nomer] = ocenka;
   }
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
13.04.2009, 14:42  [ТС]     Как инициализировать массив чисел в С++? #7
Не получается...
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
//Eleve.cc
 
Eleve::Eleve(const std::string _name, const std::string _mail, ..., int _note[10])
//конструктор принимает данныу об студенте- имя, мейл, возраст,..., оценки)
{
name=_name;
.....
for(int i=0; i<10; i++)
note[i]=_note[i];
}
 
//функция возвращает оценку
 
int Eleve::get_note(int i){
 
return note[i];
}
//test_eleve.cc
 
....
 
int main() {
int _note[10]={1,2,3,4,5,6,7,8,9,10};
Eleve eleve1("name", ..., _note[10]); //задаю объект
 
//хочу вывести на экран оценки
for(j=0; j<10; j++){
cout<<eleve1.get_note(j);
}
Файл Eleve.cc компилируется, файл test_eleve.cc нет. Класс Eleve является подклассом Etudiant, в котором в качестве параметров конструктору передаются строки и числа, никаких проблем. Только пытаюсь добавить массив оценок, программа перестает работать.
В таком варианте ошибка следующая:
invalid conversion from 'int' to 'int*'
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
13.04.2009, 14:50     Как инициализировать массив чисел в С++? #8
Так попробуйте
Код
Eleve eleve1("name", ..., _note[COLOR="Red"]/*[10]*/[/COLOR]);
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
13.04.2009, 15:12  [ТС]     Как инициализировать массив чисел в С++? #9
если сделать так, то перестает компилироваться файл Eleve.cc. ошибка:
invalid tupes 'int[int]' for array subscript,
если при этом поменять еще строчки 9 и 10 на
note[10]=_note
или
note[10]=_note[10]
или
note=_note
выдается ошибка invalid conversion from '*int" to 'int', файл Eleve.cc компилируется
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
13.04.2009, 15:21     Как инициализировать массив чисел в С++? #10
Для примера
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 <iostream>
#include <string>
using namespace std;
 
class Employee{
public:
    Employee(const string _name, const int _arr[10])
    {
        name = _name;
        for (int i = 0; i < 10; ++i)
            arr[i] = _arr[i];
    }
    void Test()
    {
        cout<<name<<endl;
        cout<<"[ ";
        for (int i = 0; i < 10; ++i)
            cout<<arr[i]<<" ";
        cout<<"]"<<endl;
    }
private:
    int arr[10];
    string name;
};
int main()
{
    int arr[10] = {0,1,2,3,4,5,6,7,8,9};
    Employee emp("Name",arr);
    emp.Test();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2009, 15:24     Как инициализировать массив чисел в С++?
Еще ссылки по теме:

Как инициализировать массив переменной - C++
Всем доброго времени суток! у меня возникла проблема, мне нужно инициализировать статический массив с помощью переменной, т.е. пользователь...

Как инициализировать массив строк в конструкторе - C++
File.h class CTest { public: char* m_pszText; CTest( )

Как объявить и инициализировать двумерный массив - C++
Доброго времени суток, уважаемые форумчане! Недавно решил постичь ДЗЕН STL-контейнеров C++ и начал с векторов. С одномерными векторами...

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

Как обьявить и инициализировать массив константных значений? - C++
Пробовал вот таким вот образом в заголовочном файле const int big_numbers = { 1000, 2000, 3000 }; error C2059: syntax error : '{'...


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

Или воспользуйтесь поиском по форуму:
Etudiante
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
13.04.2009, 15:24  [ТС]     Как инициализировать массив чисел в С++? #11
спасибо, сейчас сяду разбираться
Yandex
Объявления
13.04.2009, 15:24     Как инициализировать массив чисел в С++?
Ответ Создать тему
Опции темы

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