Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 08.07.2017
Сообщений: 31

Класс динамического массива

13.07.2017, 12:12. Показов 2648. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создайте класс Array.
Класс Array - это класс динамического массива. Рассмотреть одномерный целочисленный массив. Размер массива может быть передан в качестве параметра или задан с помощью вызова функции-члена. Класс должен позволять заполнять массив значениями, отображать содержимое массива, изменять размер массива, сортировать массив, записывать массив в файл. Класс должен содержать набор конструкторов (конструктор копирования обязателен), деструктор
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.07.2017, 12:12
Ответы с готовыми решениями:

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++ ...

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

34
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.07.2017, 11:11
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Antikl Посмотреть сообщение
a.h определение, b.cpp реализация
1. почему файлы по разному называются?
если хедер a, то и сорс должен быть а, а то нифига не понятно.
2. если мы подключаем в main.cpp a.cpp и при компиляции указываем компилятору, что a.cpp - отдельная единица трансляции, то он будет компилировать и a.cpp тоже.
и получим мы не undefined reference, а multiple definition.
3. директива препроцессора include с треугольными скобками не сработает, т.к. она ищет только в директориях, прописанных компилятору явно.

Добавлено через 5 минут
b.h
C++
1
2
3
#pragma once 
 
void foo();
b.cpp
C++
1
2
3
4
5
6
7
#include "b.h"
#include <iostream>
 
void foo()
{
  std::cout << "foo\n";
}
main.cpp
C++
1
2
3
4
5
6
#include "b.cpp"
 
int main()
{
  foo();
}
компиляция:
g++ -Wall main.cpp -o x.exe - ок, мы не компилируем b.cpp, как отдельную единицу трансляции.
g++ -Wall main.cpp b.cpp -o x.exe - multiple definition, т.к. у нас уже реализована функция foo и подключена в main.cpp, но при этом мы пытаемся так же скомпилировать и b.cpp, в которой, внезапно, так же реализована эта функция.
Цитата Сообщение от Antikl Посмотреть сообщение
так у меня работает
не аргумент.
может вы компилируете только main.cpp и поэтому всё работает.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
15.07.2017, 11:16
Цитата Сообщение от GbaLog- Посмотреть сообщение
1. почему файлы по разному называются?
для быстроты написал, а так то да вы правильно сказали.

а да если без main.cpp компилировать то ошибка, капец теперь догнал, если компилировать с main то все нормально, хм а какой тогда вариант лучше делать что бы работало все ?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.07.2017, 11:25
Цитата Сообщение от Antikl Посмотреть сообщение
а да если без main.cpp компилировать то ошибка
конечно, ошибка.
без функции main, которая, как я думаю, находится у вас в файле main.cpp, программа не может быть скомпилирована в принципе, т.к. main - точка входа в программе, функция, с которой всё началось.
Цитата Сообщение от Antikl Посмотреть сообщение
а какой тогда вариант лучше делать что бы работало все ?
раздельная компиляция для НЕ шаблонных классов и функций.
она, конечно, не всегда нужна, но это уже от нужд пользователя зависит.
если класс маленький, то лучше реализовать его прямо в хедере.
это моё мнение, у кого-то раздельная компиляция головного мозга,
а у кого-то наоборот, одни хедер-онли библиотеки.
для шаблонов есть вариант с файлами .tcc, и подключением их в конце хедеров.
нет серебряной пули или панацеи, тут уж кому как нравится.

Добавлено через 15 секунд
Цитата Сообщение от Antikl Посмотреть сообщение
а да если без main.cpp компилировать то ошибка
конечно, ошибка.
без функции main, которая, как я думаю, находится у вас в файле main.cpp, программа не может быть скомпилирована в принципе, т.к. main - точка входа в программе, функция, с которой всё началось.
Цитата Сообщение от Antikl Посмотреть сообщение
а какой тогда вариант лучше делать что бы работало все ?
раздельная компиляция для НЕ шаблонных классов и функций.
она, конечно, не всегда нужна, но это уже от нужд пользователя зависит.
если класс маленький, то лучше реализовать его прямо в хедере.
это моё мнение, у кого-то раздельная компиляция головного мозга,
а у кого-то наоборот, одни хедер-онли библиотеки.
для шаблонов есть вариант с файлами .tcc, и подключением их в конце хедеров.
нет серебряной пули или панацеи, тут уж кому как нравится.

Добавлено через 57 секунд
ну или задайте вопрос конкретней.
и лучше это сделать уже в другой теме,
т.к. эта тема вообще не об этом.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
15.07.2017, 11:39
Цитата Сообщение от GbaLog- Посмотреть сообщение
ну или задайте вопрос конкретней.
ну можно как вы написали в конце a.h писать #include <a.tcc> или же реализовывать класс шаблонов в одном файле?
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.07.2017, 12:23
Цитата Сообщение от Antikl Посмотреть сообщение
класс шаблонов
что за класс шаблонов?
если имелся ввиду шаблонный класс, то можно как угодно.
C++
1
2
3
4
5
6
7
8
//a.h
template<typename T> class Array
{
    void set(size_t idx, const T & val)
    {
        arr[idx] = val;
    }
};
или так:
C++
1
2
3
4
5
6
7
8
9
10
11
//a.h
template<typename T> class Array
{
    void set(size_t idx, const T & val);
};
 
template<typename T>
void Array<T>::set(size_t idx, const T & val)
{
    arr[idx] = val;
}
или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//a.h
template<typename T> class Array
{
    void set(size_t idx, const T & val);
};
#include "a.tcc"
 
//a.tcc
template<typename T>
void Array<T>::set(size_t idx, const T & val)
{
    arr[idx] = val;
}
вы вообще представляете, как директива include работает?
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
15.07.2017, 12:36
Цитата Сообщение от GbaLog- Посмотреть сообщение
вы вообще представляете, как директива include работает?
Директива #include предлагает компилятору включить другой исходный файл, имя которого указывается после директивы. Имя файла заключается в двойные кавычки или в <>.

а можно так сделать?
тут нашол
Раздельная компиляция шаблонов классов
хотя так тоже не работает так как пишет expected initializer before '<' token


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
//a.h
#ifndef MY_PROJECT_FUNC_H
#define MY_PROJECT_FUNC_H
 
template<typename T>
class A{
public:
    A(){}
    void show(T t);
};
#endif 
 
 
//a.cpp
template<typename T>
void A<T>::show(T t)
{
  cout<< t <<endl;
}
 
//main.cpp
#include <iostream>
using namespace std;
#include "a.h"
#include "a.cpp"
 
int main()
{
    A<int>a;
    a.show(45);
  return 0;
}
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.07.2017, 12:53
Цитата Сообщение от Antikl Посмотреть сообщение
хотя так тоже не работает так как пишет expected initializer before '<' token
у меня всё работает, как говорится.
в точности скопировал ваш код.
так компилировал: g++ -Wall main.cpp -o main.exe
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
15.07.2017, 12:59
Цитата Сообщение от Antikl Посмотреть сообщение
а можно так сделать?
так - нельзя. Потому что функции шаблона не могут быть в //a.cpp, они должны быть либо непосредственно в //a.h, либо, как сказано выше, в a.tcc.
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.07.2017, 13:07
TRam_, расширение не имеет никакого значения для компилятора и нужно только другим программистам, которым, возможно, придется в этом коде разбираться.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
15.07.2017, 14:02
Цитата Сообщение от GbaLog- Посмотреть сообщение
у меня всё работает, как говорится.
в точности скопировал ваш код.
так компилировал: g++ -Wall main.cpp -o main.exe
у меня gcc ни Visual Studia 2012 не принемают это расширение a.tcc
а можете так попробовать работает ли? у меня так работает я компилирую с main.cpp
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
37
38
//a.h
#ifndef MY_PROJECT_FUNC_H
#define MY_PROJECT_FUNC_H
 
template<typename T>
class A{
public:
    A(){}
    void show(T t);
};
#endif 
 
 
 
 
//a.cpp
#include "a.h"
template <typename T>
void A <T>::show(T t)
{
  cout<< t <<endl;
}
 
 
 
 
//main.cpp
#include <iostream>
using namespace std;
#include "a.cpp"
 
 
int main()
{
    A<int>a;
    a.show(45);
  return 0;
}
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
15.07.2017, 14:08
Antikl, а что такое cout и endl?
Цитата Сообщение от Antikl Посмотреть сообщение
C++
1
2
3
4
5
6
7
//a.cpp
#include "a.h"
template <typename T>
void A <T>::show(T t)
{
    cout<< t <<endl;
}
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
15.07.2017, 14:09
Antikl, сделай
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
//a.h
#ifndef MY_PROJECT_FUNC_H
#define MY_PROJECT_FUNC_H
#include <iostream>
 
template<typename T>
class A{
public:
    A(){}
    void show(T t);
};
 
template <typename T>
void A <T>::show(T t)
{
  std::cout<< t <<std::endl;
}
#endif 
 
 
//main.cpp
#include "a.h"
 
 
int main()
{
    A<int>a;
    a.show(45);
  return 0;
}
и не мучайся.
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
15.07.2017, 14:39
Цитата Сообщение от Antikl Посмотреть сообщение
а можете так попробовать работает ли? у меня так работает я компилирую с main.cpp
это будет работать, если не включать a.cpp в компиляцию.
иначе будет multiple definition.
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
15.07.2017, 14:41
Цитата Сообщение от Captain Maxee Посмотреть сообщение
Antikl, а что такое cout и endl?
cin это поток ввода
cout поток вывода
endl перевода на новую строку еще очищает поток

Добавлено через 41 секунду
Цитата Сообщение от GbaLog- Посмотреть сообщение
это будет работать, если не включать a.cpp в компиляцию.
иначе будет multiple definition.
спасибо
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
16.07.2017, 00:20
Antikl,
Я о том, что ты iostream нигде не подключал прежде. А coutы используешь))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.07.2017, 00:20
Помогаю со студенческими работами здесь

Создать класс динамического массива
Задание заключается в следущем: Создать динамический класс для выполнения операций над динамическими массивами чисел действительного...

Создать класс динамического массива Array
Можете помочь создать это. Создайте класс Array (или используйте ранее созданный вами). Класс Array – это класс динамического массива....

Класс для двумерного динамического массива
Вот написал код для двумерного динамического массива с перегруженым оператором= и +. Собственно код работает в MS VS 2010, но меня...

Сделать класс двухмерного динамического массива
Вот такая задачка: &quot;Написать программу работы с матрицами (матрица представляет собой двумерный массив). Матрица является объектом...

Класс динамического массива. Почему не компилируется?
// Stack.cpp : Этот файл содержит функцию &quot;main&quot;. Здесь начинается и заканчивается выполнение программы. // #include...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru