Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6312
Последний выпуск: 19.06.2015

ПРИ СУММИРОВАНИИ ЭЛЕМЕТНОВ ГЛАВНОЙ ДИГОНАЛИ ПРОПУСКАЕТ ЭЛЕМЕНТ arr [0][0]

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

НЕ МОГУ РАЗОБРАТЬСЯ ПОЧЕМУ ПОЧЕМУ ПРИ СУММИРОВАНИИ ЭЛЕМЕТНОВ ГЛАВНОЙ ДИГОНАЛИ ПРОПУСКАЕТ ЭЛЕМЕНТ 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;
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+=abs(*(*(arr+i)+j));
}
printf("Сумма модулей элементов главной диагонали %d", sum);
_getch();
}
445
17 февраля 2013 года
Meander
487 / / 04.09.2011
а потому потому пропускает, что надо писать:

 
Код:
if (i==j), а не if (i=j)
85K
17 февраля 2013 года
Misha Sila
2 / / 17.02.2013
спасибо, не заметил)

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог