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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввести структуру для описания комплексного числа,ребят выручайте,нужна ваша помощь http://www.cyberforum.ru/cpp-beginners/thread35015.html
Ввести структуру для описания комплексного числа.Составить и протестировать функцию для преобразования комплексного числа из алгебраической формы в показательную
C++ Как завершить поток Как завершить поток, начатый _beginthread( Thread, 0, NULL ); http://www.cyberforum.ru/cpp-beginners/thread35001.html
C++ Машина Тьюринга. (Динамический массив))
Написал машину Тьюринга для умножения трех натуральных чисел: #include <stdio.h> #include <conio.h> #include <math.h> #include <dos.h> #include <alloc.h> #include <stdlib.h> char *r; // Начало программы
C++ Найти среднее арифметическое заданных чисел
Не могу решить задачку на VS. Подскажите, кто может! Условие: Найти среднее арифметическое заданных чисел. Числа вводятся через пробел до знака "-1".
C++ Динамические структуры данных Вариант 18 Павловской http://www.cyberforum.ru/cpp-beginners/thread34969.html
И вот еще одна задачка из динамических массивов. Буду рад любой помощи!!! :help: На междугородной телефонной станции картотека абонентов, содержащая сведения о телефонах и их владельцах, организована как двоичное дерево. Составить программу, которая: - обеспечивает начальное форматирование картотеки в виде двоичного дерева; - производит вывод всей картотеки; - выводит номер телефона и...
C++ Выделить в тексте лишние пробелы между словами ЕЩе одна задачка из Павловской... Прошу помощи!!! Если вам лень решать всю задачу, то меня очень интересует второй пункт... Но буду рад решению всей задачи ;) С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 500 символов (длина строки текста не должна превышать 70 символов). Имя файла должно иметь расширение DAT. Написать программу, которая: -... подробнее

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


#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) максимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
Ну и плюс сделать
 
Текущее время: 08:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru