Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2015, 22:23   #1
Lion223
Новичок
Джуниор
 
Регистрация: 05.10.2015
Сообщений: 2
По умолчанию Динамическая память, создание массивов

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

Так вот, я написал функцию по которой я создаю массивы(они одномерные) и функцию их вывода.
Проблема в том, что мне выводит мусор вместо самих массивов. Компилятор предупреждает: TotalSize - Not all control paths return a value. Скорее всего ошибка из-за того что эта функция не возвращает значение, но что не так?
Насчёт int извиняюсь, быстро писал чтобы вообще хоть заработало.

Код:
#include <stdio.h>
#include <conio.h>
#include <iostream> 
 
using namespace std;
 
void Print(int *x, const int n)
{
    for(int i(0);i<n;i++) cout << x[i] << ' ';
}
 
int TotalSize(int *size,int n)
{
    for(int sum(0),i=0;i<n;i++){
        sum+=size[i];
        return sum;
    }
}
 
void main()
{
    int num;
    cout << "\nEnter a count of arrays: "; cin >> num;
    double **a = new double *[num];
    int *size = new int[num];
    for(int i(0);i<num;i++)
    {
        cout << "Enter a count of elements in " << i+1 << " array: ";
        cin >> size[i]; a[i]=new double[size[i]];
        for(int k(0); k<size[i];k++) cin >> *(a[i]);
    }
    
    int totalsize;
    int *resultarray = new int[totalsize = TotalSize(size,num)];                                        
    Print(resultarray, totalsize);
    delete resultarray;
    system("pause");
 
}
Lion223 вне форума Ответить с цитированием
Старый 05.10.2015, 22:31   #2
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

Код:
   int sum = 0;
    for(int i=0;i<n;i++){
        sum+=size[i];
    }
        return sum; // после цикла
---------------------
Код:
    int *resultarray = new int[totalsize = TotalSize(size,num)];                                        
    Print(resultarray, totalsize);
    delete resultarray;
resultarray кто заполнит-то?

Последний раз редактировалось GreenWizard; 05.10.2015 в 22:35.
GreenWizard вне форума Ответить с цитированием
Старый 05.10.2015, 22:37   #3
Lion223
Новичок
Джуниор
 
Регистрация: 05.10.2015
Сообщений: 2
По умолчанию

Мда, я допустил глупую ошибку. Спасибо, предупреждения на функцию уже нет, но по прежнему выводит мусор типа -842150451 вместо самого элемента массива.
Код:
int *resultarray = new int[totalsize = TotalSize(size,num)];                                        
    Print(resultarray, totalsize);
Вот эта часть кода, почему всё таки оно выводит мусор? Я же ведь записываю в результат той функции.
Lion223 вне форума Ответить с цитированием
Старый 05.10.2015, 22:40   #4
GreenWizard
мальчик-помогай =)
Форумчанин
 
Регистрация: 16.09.2010
Сообщений: 522
По умолчанию

ты только создал один массив размером в суммарный размер исходных, но не заполнил его (и не отсортировал)
GreenWizard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память orandzheviyman Паскаль, Turbo Pascal, PascalABC.NET 0 03.12.2013 18:35
Динамическая память zhenya.ya Помощь студентам 1 22.09.2010 08:43
Динамическая память. spotmc13 Паскаль, Turbo Pascal, PascalABC.NET 5 20.09.2010 17:08
Создание пользовательских модулей. Динамическая память p-alex Помощь студентам 3 20.01.2010 17:14
динамическая память aka_faith Общие вопросы C/C++ 47 12.06.2009 12:35