4 / 4 / 0
Регистрация: 01.06.2013
Сообщений: 153
1

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

27.09.2013, 16:39. Показов 510. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2013, 16:39
Ответы с готовыми решениями:

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

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

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

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

4
942 / 686 / 229
Регистрация: 28.04.2013
Сообщений: 1,924
27.09.2013, 17:00 2
При изучении какой темы Вы получили это задание? (просто можно сделать несколькими способами)
0
4 / 4 / 0
Регистрация: 01.06.2013
Сообщений: 153
27.09.2013, 17:08  [ТС] 3
Цитата Сообщение от reisal78 Посмотреть сообщение
При изучении какой темы Вы получили это задание? (просто можно сделать несколькими способами)
да вот не помню, указатели может быть . хоть каким=нибудь но другим способом
0
942 / 686 / 229
Регистрация: 28.04.2013
Сообщений: 1,924
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2013, 11:22
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru