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

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

Войти
Регистрация
Восстановить пароль
 
kondusov
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 153
#1

способ по организации программы - C++

27.09.2013, 16:39. Просмотров 323. Ответов 4
Метки нет (Все метки)

Ребята. Сегодня сдавал задачи и преподаватель сказал, что нужно использовать ДИНАМИЧЕСКИЙ массив. Ниже код программы(откомпилированный, работает прекрасно). Что нужно для того что изменить код под динамич массив? Много переделывать?
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
39
40
41
42
43
44
45
46
47
/*
стр 83 зад 30
Дана вещ. квадратная матрица размерности N. Посчитать x1*xN + x2*xN-1 + ... +
xN*x1, где xk - наибольшее значение элементов k-ой строки матрицы
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define N 3
 
int main(void)
{
    float a[N][N];
    float max[N], sum;
    int i, j;
    
    
    srand(time(NULL));
    
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++) {
            /* scanf("%f", &a[i][j]); */
            /* a[i][j] = (rand() - RAND_MAX/2) / 100.; */
            a[i][j] = (rand() - RAND_MAX/2) % 100;
            printf("%7.2f ", a[i][j]);
        }
        printf("\n");
    }
    
    for (i = 0; i < N; i++) {
        max[i] = a[i][0];
        for (j = 1; j < N; j++) {
            if (a[i][j] > max[i]) {
                max[i] = a[i][j];
            }
        }
    }
    
    for (i = 0, sum = 0; i < N; i++) {
        sum += max[i]*max[N-1-i];
    }
    
    printf("Res = %.2f\n", sum);    
    
    return 0;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2013, 16:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос способ по организации программы (C++):

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

Подскажите алгоритм организации программы-теста - C++
Здравствуйте! Суть такова - у пользователя есть 8 вариантов ответа, он может выбрать только 4. После этого выбора каждый из 4 вариантов...

Написать все доступные варианты организации циклов (возврата программы к определённой строке кода) - C++
Здравствуйте! Напишите, пожалуйста, ВСЕ доступные (ну если их 3-5, если же много, то хотя бы 5, если не затруднит) варианты, с помощью...

организации функции - C++
у меня в коде сделаны похожие функции...их отлчие только в условии, тело одинаковое.... можно ли сделать как нить 1 функию, где будет ещё...

Ошибка в организации класса - C++
Мои первые попытки написать консольную версию пошагового боя обвенчались неудачей в самом начале. При тестовых ударах в цикле for увидел...

Варианты организации файлового В/В в C++ - C++
Встретил несколько вариантов организации файлового В/В: 1) - через создание объектов классов ifstream и ofstream: std::ifstream...

4
reisal78
694 / 606 / 141
Регистрация: 28.04.2013
Сообщений: 1,727
27.09.2013, 17:00 #2
При изучении какой темы Вы получили это задание? (просто можно сделать несколькими способами)
0
kondusov
3 / 3 / 0
Регистрация: 01.06.2013
Сообщений: 153
27.09.2013, 17:08  [ТС] #3
Цитата Сообщение от reisal78 Посмотреть сообщение
При изучении какой темы Вы получили это задание? (просто можно сделать несколькими способами)
да вот не помню, указатели может быть . хоть каким=нибудь но другим способом
0
reisal78
694 / 606 / 141
Регистрация: 28.04.2013
Сообщений: 1,727
28.09.2013, 09:08 #4
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
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
    //создание "бесконечного" массива
    int size_arr(1);   // ок, тк размер динамического массива надо задавать хоть я его и не знаю, ну задам ему единицу.
    long *values(nullptr); //задам указатель
    values = new long [size_arr]; // выделю память под массив
    
    long *tmpValues(nullptr); // делаю временный указатель
 
    long inputValue(0);  
    
 
    while (true)
    {
        cout << "Enter value, 0 - exit: ";
        cin >> inputValue;  //запрашиваю у пользователя зхначение
        
        if (inputValue==0)  //если пользователь  ввел 0 - выхожу из цикла
            break;
 
        values[size_arr-1] = inputValue; // записываю введеное значение в массив
       
 
        {
                size_arr++; // увеличиваю размер массива на 1
                tmpValues = new long[size_arr]; //выделяю память под временный массив с увеличенным размером на 1
 
                for (int i = 0; i < size_arr-1; i++)  //Перекидываю значения из основного массива во временный
                    tmpValues[i] = values [i];
                    
                delete[] values; //Очищаю память выделеную под основной массив
                
                values = tmpValues; //Эм... "подменяю" адреса, так похоже правильно будет сказать
 
                tmpValues = nullptr; // "сбрасываю" значения временного указателя 
        }
 
        
 
    }
    
                  
return 0;
}
Вот так можно сделать динамический массив с использованием указателей.
0
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2013, 11:22 #5
kondusov, ниже минимальный объём изменений которые следует внести в твой проект чтобы было использование динамических массивов
Цитата Сообщение от kondusov Посмотреть сообщение

#include <iostream>
#include <cstdlib>
using namespace std;
//#define N 3

int main()
{
* * float **a;
* * float *max, sum;
* * int i, j, N;
cout<<"Enter size of array : ";cin>>N;

max = new flaot[N];
a = new float * [N];
for(i = 0; i < N; i++)
a[i] = new float[N];

Если же речь идёт о коде в стиле Си то для выделения памяти следует использовать malloc
Вот код в Си
http://codepad.org/IQAY7Y0K
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
39
40
41
42
43
44
45
46
47
48
49
50
/*
стр 83 зад 30
Дана вещ. квадратная матрица размерности N. Посчитать x1*xN + x2*xN-1 + ... +
xN*x1, где xk - наибольшее значение элементов k-ой строки матрицы
*/
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    float **a;
    float *max, sum;
    int i, j, N;
    
    
    srand(time(NULL));
    N = 3 + rand() % 3;//тут понятное дело нужен ввод но мы обойдёмся рандомом
    a = (float **)malloc(N*sizeof(float *));
    max = (float *)malloc(N*sizeof(float));
    
    for (i = 0; i < N; i++) 
    {
        a[i] = (float *)malloc(N*sizeof(float));
        for (j = 0; j < N; j++) 
        {
            a[i][j] = (rand() % 1000) / 10.0;
            printf("%3.1f ", a[i][j]);
        }
        printf("\n");
    }
    
    for (i = 0; i < N; i++) {
        max[i] = a[i][0];
        for (j = 1; j < N; j++) {
            if (a[i][j] > max[i]) {
                max[i] = a[i][j];
            }
        }
    }
    
    for (i = 0, sum = 0; i < N; i++) {
        sum += max[i]*max[N-1-i];
    }
    
    printf("Res = %.2f\n", sum);    
    getchar();
    return 0;
}
Output:
34.2 73.5 9.8
33.3 16.7 96.0
19.3 20.0 67.1
Res = 19079.70
1
28.09.2013, 11:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 11:22
Привет! Вот еще темы с ответами:

Лучший способ организации поиска по сайту. - C# ASP.NET
Видел много способов организации поиска по ASP сайту. Кто-нибудь кто эту проблему уже решал может подсказать какой способ наилучший?...

Реализовать комбинированный способ организации таблицы идентификаторов - C#
помогите написать программу по методичке на C# Требуется разработать программу, реализующую комбинированный способ организации таблицы...

UI в играх XNA, какой лучший и простой способ организации - XNA
Хотел бы обсудить вопрос организации UI в играх XNA. Какой лучший и простой способ? Создавать свои контролы с помощью графики XNA? ...

Совет по организации данных внутри программы - Python
Суть такая: делается опросник - 7 вопросов, 3 варианта ответа, каждый ответ имеет определёную оценку. У меня 2 варианта: 1) сделать...


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

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

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