Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2013, 00:17   #1
Misha_Sil
 
Регистрация: 16.02.2013
Сообщений: 8
По умолчанию Определить сумму модулей элементов, расположенных на главной диагонали.

Написать программу, содержащую пользовательскую функцию, решающую сформулированную ниже задачу. Во всех заданиях предусмотреть захват и освобождение динамической памяти (calloc или malloc). На печать в виде таблиц вывести исходный двухмерный массив. Размеры массива N и M, элементы массива ввести с клавиатуры в функции main(). Предусмотреть реакцию программы в случае, если исходные данные не позволяют выполнить поставленную задачу.
Дан целочисленный прямоугольный массив. Определить сумму модулей элементов, расположенных на главной диагонали.

НЕ МОГУ РАЗОБРАТЬСЯ ПОЧЕМУ ПОЧЕМУ ОШИБКА В НАПИСАНИИ sum+=fabs(*(*(arr+i)+j));
И ПОЧЕМУ ПРИ СУММИРОВАНИИ ЭЛЕМЕТНОВ ГЛАВНОЙ ДИГОНАЛИ ПРОПУСКАЕТ ЭЛЕМЕНТ arr [0][0].

Заранее спасибо.


#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <locale.h>
#include <process.h>
#include <stdlib.h>
void sum_d(int**, int, int);


void main()
{
setlocale(LC_CTYPE,"russian");
system("cls");
fflush(stdin);
int m, n, i,j;
int **mas;
printf("Введите количество строк массива.\n");
scanf_s("%d", &n); if (n<=0) {printf("Введите целое положительное число!");scanf_s("%d", &n);}
printf("Введите количество столбцов массива.\n");
scanf_s("%d", &m); if (m<=0) {printf("Введите целое положительное число!");scanf_s("%d", &m);}
if (!(mas=new int*[n])){ puts("Недостаточно памяти!"); _getch(); exit(0);}
for(i=0;i<n;i++)
if(!(*(mas+i)=new int[m])){
printf("Недостаточно памяти!\n");
mas=NULL;
exit(0);}
printf("\n Заполнение массива\n");
for(i=0;i<n;i++)
{printf("\nВведите строку номер %d\n", i+1);
for(j=0;j<m;j++)
scanf_s("%d",*(mas+i)+j);}
printf("Ввод окончен. Нажмите любую клавишу...");
_getch();
system("cls"); //очистка экрана и отправка массива в функция для вычисления
sum_d(mas,n,m);
}

void sum_d(int **arr, int n1, int m1) // наша пользовательская функция
{
int sum, i, j, fabs;
sum= 0;
printf("\nВведенный массив:\n");
for(i=0;i<n1;i++)
{ printf("\n\n");
for(j=0;j<m1;j++)
printf_s("%3d",*(*(arr+i)+j));
}
printf("\n\n");

for(i=0;i<n1;i++)
for(j=0;j<m1;j++)
if (n1 != m1)
printf("Количество строк и столбцов должно совпадать!\n");
else
{
if (i=j)
sum+=fabs(*(*(arr+i)+j));
}
printf("Сумма модулей элементов главной диагонали %d", sum);
_getch();
}
Misha_Sil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив типа integer размером 8х8. Определить сумму главной диагонали. Заменить min элемента массива на сумму главной диагона TimoLLIa Паскаль, Turbo Pascal, PascalABC.NET 1 11.03.2012 19:59
Определить сумму элементов матрицы, расположенных на главной диагонали c++ inmanika Помощь студентам 2 18.01.2012 13:07
сумма элементов квадратной матрицы расположенных выше главной диагонали (Pascal) Vogelfrei Помощь студентам 4 15.12.2011 20:38
в сглаженой матрице найти сумму модулей элементов расположенных ниже главной диагонали Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 8 07.12.2010 00:02
Найти сумму парных элементов матрицы v[4][4].Расположенных ниже главной диагонали. Black_Angel91 Помощь студентам 11 21.04.2009 20:51