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

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

Восстановить пароль Регистрация
 
Ninok_91
0 / 0 / 0
Регистрация: 18.05.2009
Сообщений: 3
19.05.2009, 12:41     Динамический массив #1
помогите решить задачу пожалуйста!!!
нужно реализовать динамический массив и показать работу с ним: удаление, добавление, вставка элемента на си.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2009, 12:41     Динамический массив
Посмотрите здесь:

ДИНАМИЧЕСКИЙ МАССИВ C++
C++ Динамический массив
C++ Динамический массив
C++ Динамический массив.
C++ Динамический массив
C++ Динамический массив
Динамический массив C++
Динамический массив C++
C++ Динамический массив
Динамический массив C++
Динамический массив C++
Динамический массив C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
19.05.2009, 21:11     Динамический массив #2
Да.. задачка очень простая,только муторная... Вспоминать Си... Сейчас кину,что делал когда-то. Я сегодня добрый... только разбирайся сам.


#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>

#define N 8

void print_array(int arr[][N], int n)
{
int i = 0;
int j = 0;

for( i = 0; i < n; i++)
{
for( j = 0; j < n; j++)
printf("%d\t",arr[i][j]);
puts("\n");
}
}


void getSUM(int arr[][N], int n)
{
int i = 0;
int j = 0;
int has_negatives = 0; // Есть ли отрицательные элементы в текущем столбце
long sum = 0;

for ( j = 0; j < n; j++ )
{
sum = 0;
has_negatives = 0;
for( i = 0; i < n; i++)
{
if ( arr[i][j] < 0 )
{
has_negatives = 1;
break;
}
else
{
sum += arr[i][j];
}
}

// Выводим сумму только тех столбцов, в которых нет отрицательных элементов
if ( !has_negatives )
{
printf("\n");
printf("Sum of column %d = %d\t", j, sum);
}
}
}

void getMAX_among_diagonals(int arr[][N], int n)
{
int i = 0;
int j = 0;
int k = 0;
long currsum = 0;
long maxsum = 0;

puts("Processing diagonals:");

// Пробегаем левую верхнюю часть матрицы
for ( i = 0; i < n - 1; i++)
{
long currsum = 0;
for ( j = i, k = 0; (j >= 0) && (k <= i); j--, k++)
{
printf("[%d;%d]\t", j, k);
currsum += abs(arr[j][k]);
}

if (currsum > maxsum)
maxsum = currsum;

printf("Sum = %ld\n", currsum);
}

// Пробегаем правую нижнюю часть матрицы
for ( i = n - 1; i >= 1; i--)
{
long currsum = 0;
for ( j = i, k = n - 1; (j <= n - 1) && (k >= i); j++, k--)
{
printf("[%d;%d]\t", j, k);
currsum += abs(arr[j][k]);
}

if (currsum > maxsum)
maxsum = currsum;

printf("Sum = %ld\n", currsum);
}

printf("Max sum of absolute values in diagonals = %ld\n", maxsum);
}

void rand_array(int arr[][N], int n)
{
int i = 0;
int j = 0;

srand(time(0));
rand();

for ( i = 0; i < n; i++ )
for ( j = 0; j < n; j++ )
arr[i][j] = rand() % 30 - 3;
}

int main()
{
int i;
int **a = (int **)calloc(N,sizeof(int*));
for (i = 0; i < N; i++)
a[i] = (int*)calloc(N,sizeof(int));

rand_array(a, N);

print_array(a, N);

getSUM(a, N);

getMAX_among_diagonals(a, N);

for (i = 0; i < N; i++)
free(a[i]);

free(a);
**a = NULL;



return 0;
}

Тут короче еще задание кроме твоего такое:

Дана целочисленная квадратная матрица. Определить:
1) сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
2) максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Ну и плюс сделать
Yandex
Объявления
19.05.2009, 21:11     Динамический массив
Ответ Создать тему
Опции темы

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