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

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

Войти
Регистрация
Восстановить пароль
 
kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
#1

Динамический массив - C++

24.10.2013, 22:02. Просмотров 307. Ответов 5
Метки нет (Все метки)

Помогите решить задачу способом динамических массивов.

Дана действительная матрица размера mxn, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 22:02     Динамический массив
Посмотрите здесь:

Динамический массив - C++
#include <stdio.h> int main() { int *arr = new int; printf("\n Input:\n\n"); for (int i = 0; i < 5; ++i) ...

Динамический массив - C++
Удалить элемент с заданным ключом из динамического массива

Динамический массив - C++
Всем доброго времени суток, столкнулся с такой проблеммой, в программе использовал статические двумерные массивы a, но на определенном...

Динамический массив - C++
Удалить элемент с заданным ключом из динамического массива

Динамический массив - C++
Даны действительные числа а1,..аn Получим:min(a1*a16,a2*a17,..,a15*an) заранее большое спасибо=)))) Добавлено через 3 минуты ...

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

Динамический массив - C++
Можно ли переобъявить динамический массив так, чтоб он сохранил то, что уже есть внутри? Например массив из 2-ух элементов, а надо добавить...

Динамический массив - C++
Задан массиве F(k). Определить упорядочен ли этот массив. Если упорядочен, то как (по возрастанию или убыванию). 5. Требование к...

Динамический массив - C++
Помогите пожалуйста переделать динамику,что бы она начиналась не с константы а с любого произвольного числа: ...

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

Динамический массив - C++
Здравствуйте, помогите пожалуйста решить следующую задачу с применением динамичкского массива: Переставить столбцы вещественной...

Динамический массив - C++
Используя указатели на тип для объявления массивов, определить количество столбцов в матрице, не содержащих ни одного нулевого элемента.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
24.10.2013, 23:27     Динамический массив #2
Цитата Сообщение от kobrjatina Посмотреть сообщение
Помогите решить задачу способом динамических массивов.

Дана действительная матрица размера mxn, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.
C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
// функция для получения модуля числа
int abs(int x)
{
    return (x >= 0 ? x : -x);
}
 
 
 
int main()
{
    srand (time(NULL));
    int n;
    int x = 10;
    int y = 20;
 
    // создание 2-мерного динамического массива
    int **a = new int*[x]; 
    for(int i=0; i<x; i++)
        a[i] = new int[y];
 
    // заполнение случайными значениями от -500 до 499
    printf("Первичный массив\n");
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            a[i][j] = rand()%1000-500;
 
            if(a[i][j] < 0) printf("%3d ", a[i][j]);
            else printf(" %3d ", a[i][j]);
        }
        printf("\n");
    }
    
    // поиск наибольшего элемента
    n = abs(a[0][0]);
 
    for(int i=0; i<x; i++)
        for(int j=0; j<y; j++)
            n = abs(a[i][j+1]) > n ? abs(a[i][j+1]) : n;
 
    printf("\nНаибольшее по модулю значение элемента: %d\n\n", n);
 
    
 
    // создание нового 2-мерного динамического массива
    float **b = new float*[x]; 
    for(int i=0; i<x; i++)
        b[i] = new float[y];
 
    // заполнение значениями из первого массива деленными на n
    printf("Вторичный массив\n");
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            b[i][j] = (float)a[i][j] / n;
 
            if(b[i][j] < 0.0) printf("%1.2f ", b[i][j]);
            else printf(" %1.2f ", b[i][j]);
        }
        printf("\n");
    }
 
    printf("\n");
}
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
24.10.2013, 23:58     Динамический массив #3
Кликните здесь для просмотра всего текста
Цитата Сообщение от programina Посмотреть сообщение
C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
// функция для получения модуля числа
int abs(int x)
{
    return (x >= 0 ? x : -x);
}
 
 
 
int main()
{
    srand (time(NULL));
    int n;
    int x = 10;
    int y = 20;
 
    // создание 2-мерного динамического массива
    int **a = new int*[x]; 
    for(int i=0; i<x; i++)
        a[i] = new int[y];
 
    // заполнение случайными значениями от -500 до 499
    printf("Первичный массив\n");
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            a[i][j] = rand()%1000-500;
 
            if(a[i][j] < 0) printf("%3d ", a[i][j]);
            else printf(" %3d ", a[i][j]);
        }
        printf("\n");
    }
    
    // поиск наибольшего элемента
    n = abs(a[0][0]);
 
    for(int i=0; i<x; i++)
        for(int j=0; j<y; j++)
            n = abs(a[i][j+1]) > n ? abs(a[i][j+1]) : n;
 
    printf("\nНаибольшее по модулю значение элемента: %d\n\n", n);
 
    
 
    // создание нового 2-мерного динамического массива
    float **b = new float*[x]; 
    for(int i=0; i<x; i++)
        b[i] = new float[y];
 
    // заполнение значениями из первого массива деленными на n
    printf("Вторичный массив\n");
    for(int i=0; i<x; i++) {
        for(int j=0; j<y; j++) {
            b[i][j] = (float)a[i][j] / n;
 
            if(b[i][j] < 0.0) printf("%1.2f ", b[i][j]);
            else printf(" %1.2f ", b[i][j]);
        }
        printf("\n");
    }
 
    printf("\n");
}

Удалить созданные массивы не помешало бы
programina
25.10.2013, 00:13
  #4

Не по теме:

Цитата Сообщение от vua72 Посмотреть сообщение
Удалить созданные массивы не помешало бы
Пусть живут и радуют окружающих

kobrjatina
0 / 0 / 0
Регистрация: 20.10.2013
Сообщений: 52
25.10.2013, 01:43  [ТС]     Динамический массив #5
некорректно работает программа, вот скрин
http://youpict.ru/part/1/4283/fpm/

Добавлено через 19 минут
А вот так норм
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
51
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
 // функция для получения модуля числа
int fabs(int x)
{return (x >= 0 ? x : -x);}
int main()
{ setlocale (0, "");
srand (time(NULL));
int n;
int x = 10;
int y = 20;
// создание 2-мерного динамического массива
int **a = new int*[x]; 
for(int i=0; i<x; i++)
a[i] = new int[y];
// заполнение случайными значениями от -500 до 499
printf("Первичный массив\n");
for(int i=0; i<x; i++) {
for(int j=0; j<y; j++) {
a[i][j] = rand()%100-50;
if(a[i][j] < 0) printf("%3d ", a[i][j]);
else printf(" %3d ", a[i][j]);}
printf("\n");}
// поиск наибольшего элемента
n = fabs((float)(a[0][0]));
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
if(fabs(a[i][j]) > n)
n = fabs(a[i][j]);
cout << "max=" << n << endl;
// создание нового 2-мерного динамического массива
float **b = new float*[x]; 
for(int i=0; i<x; i++)
b[i] = new float[y];
// заполнение значениями из первого массива деленными на n
printf("Вторичный массив\n");
for(int i=0; i<x; i++) {
for(int j=0; j<y; j++) {
b[i][j] = (float)a[i][j] / n;
if(b[i][j] < 0.0) printf("%1.2f ", b[i][j]);
else printf(" %1.2f ", b[i][j]);}
printf("\n");}
printf("\n");
delete a;
delete b;
return 0;
}
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
29.10.2013, 17:57     Динамический массив #6
Цитата Сообщение от kobrjatina Посмотреть сообщение
некорректно работает программа, вот скрин
http://youpict.ru/part/1/4283/fpm/

Добавлено через 19 минут
А вот так норм
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
51
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
using namespace std;
 // функция для получения модуля числа
int fabs(int x)
{return (x >= 0 ? x : -x);}
int main()
{ setlocale (0, "");
srand (time(NULL));
int n;
int x = 10;
int y = 20;
// создание 2-мерного динамического массива
int **a = new int*[x]; 
for(int i=0; i<x; i++)
a[i] = new int[y];
// заполнение случайными значениями от -500 до 499
printf("Первичный массив\n");
for(int i=0; i<x; i++) {
for(int j=0; j<y; j++) {
a[i][j] = rand()%100-50;
if(a[i][j] < 0) printf("%3d ", a[i][j]);
else printf(" %3d ", a[i][j]);}
printf("\n");}
// поиск наибольшего элемента
n = fabs((float)(a[0][0]));
for(int i = 0; i < x; i++)
for(int j = 0; j < y; j++)
if(fabs(a[i][j]) > n)
n = fabs(a[i][j]);
cout << "max=" << n << endl;
// создание нового 2-мерного динамического массива
float **b = new float*[x]; 
for(int i=0; i<x; i++)
b[i] = new float[y];
// заполнение значениями из первого массива деленными на n
printf("Вторичный массив\n");
for(int i=0; i<x; i++) {
for(int j=0; j<y; j++) {
b[i][j] = (float)a[i][j] / n;
if(b[i][j] < 0.0) printf("%1.2f ", b[i][j]);
else printf(" %1.2f ", b[i][j]);}
printf("\n");}
printf("\n");
delete a;
delete b;
return 0;
}
Вы неправильно удаляете массивы. Вначале в цикле нужно удалить строки, потом сам массив. Обратно тому, как вы выделяли память под массив.
C++
1
2
3
 
for(int i=0; i<x; i++) delete[] b[i];
delete []b;
Добавлено через 10 минут
А это что?
C++
1
2
3
int fabs(int x) {
    return (x >= 0 ? x : -x);
}
...
C++
1
n = fabs((float) (a[0][0]));
Добавлено через 1 минуту
тем более, что abs и fabs - стандартные функции.
Yandex
Объявления
29.10.2013, 17:57     Динамический массив
Ответ Создать тему
Опции темы

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