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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2015, 15:33   #1
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию Составить матрицу (Си)

Условие:
Составить программу, которая в каждой строке матрицы D[M][N], находит элемент, где модуль разности этого элемента и среднего арифметического элементов строки минимален. Вывести исходную матрицу так, чтобы после элементов строки матрицы располагались найденный элемент, среднее арифметическое и модуль разности.
Неправильно ищет модуль разности элементов (Min), не могу найти ошибку:
Например, матрица размерностью 3х3 с элементами {-3 7 4 } {3 2 -3} {0 9 5}
Ошибка во второй строке. Min = 1, а должно быть Min = 2. Подскажите, пожалуйста, где я допустила ошибку?
Код:
#include <stdio.h>
#include <locale.h>
#include <math.h>
#include <stdlib.h>

void main()
{
    int D[10][12];      // Исходная матрица D
	int I, J, M, N;     // I, J - индексы строки и столбца элеменета соответственно  и M, N- количество cтрок и столбцов матрицы D соответственно 
	float Min;          // Минимальный элемент массива D
	int IndMin, IndMax; // Индексы минимального элемента массива D
	float Sum;          // Cумма и среднее арифметическое элементов массива D 

	setlocale(LC_ALL, "RUS");
	printf("\n Введите количество элементов матрицы D[M][N], где M<=10, N<=12: \n");
	scanf("%d%d", &M, &N );
 
	printf("\n Введите элементы массива D[M][N]: \n");
	for (I = 0; I < M; I++)
	{
		for (J = 0; J < N; J++)
		{
			printf("\n D[%d][%d] = ", I+1, J+1);
			scanf("%d", &D[I][J]);
		}
    }
	
	// Находим минимальный элемент строки D и его индекс
	for (I = 0; I < M; I++)
    { 
		Sum = 0;
		for (J = 0; J < N; J++)
			Sum = Sum + D[I][J];
		Sum = Sum / N;
		Min = abs(D[I][0] - Sum);
		IndMin = 0;
		for (J = 1; J < N; J++)
		{
			if ( abs(D[I][J] - Sum) < Min)
			{
				Min = abs(D[I][J] - Sum);
				IndMin = J;
			}
		}
		for (J = 0; J < N; J++)
		{
			printf("%3d ", D[I][J]);
		}
		printf("%3d ", D[I][IndMin]);
		printf("%3.0f ", Sum);
		printf("%3.0f \n", Min);	
	}
	getchar();
	getchar();
}
zaira001002 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить матрицу в с# Надюшечка Помощь студентам 2 29.01.2013 21:20
(Pascal) составить матрицу с использованием массива Babykaч Помощь студентам 3 20.01.2013 16:23
Нужно составить трансонированую матрицу в Паскале АВС Юрий666 Паскаль, Turbo Pascal, PascalABC.NET 2 30.05.2012 20:24
составить матрицу из данных внешнего файла Petruha-nsk Общие вопросы C/C++ 2 11.04.2009 16:58
Как составить матрицу корреспонденции? Alex2008 Помощь студентам 3 25.04.2008 19:17