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

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

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

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

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

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

В каком формате нужно представить переменную Min, чтобы выводило точное значение , как я понимаю ,без округления до целого, вот если ввести , например , следующие данные :
1 2
1 3
2 5
Выводит :
El Sum Modul
1 2 1 1,50 0,00
1 3 1 2,00 1,00
2 5 2 3,50 1,00
А необходимо :
El Sum Modul
1 2 1 1,50 0,50
1 3 1 2,00 1,00
2 5 2 3,50 1,50

Код:
#include <stdio.h>
#include <locale.h>
#include <math.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 
	printf("\n Исходная матрица D[%d][%d]: \n", M, N);
	for (I = 0; I < M; I++)
	{
		for (J = 0; J < N; J++)
		{
			if (J + 1 != N)
				printf("%3d ", D[I][J]);
			else
				printf("%3d \n", D[I][J]);
		}
	}

	printf("\n Преобразованная матрица D[%d][%d]: \n", M, N + 3);
	for (I = 0; I < 1; I++)
	{
		for (J = 0; J < N; J++)
		{
			printf("     ");
		}
		printf("El  Sum  Modul \n");
	}

	// Находим минимальный элемент строки 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 = D[I][J] - Sum;
				IndMin = J;
			}
		}
		if ( Min < 0) 
			Min = Min * (-1);
		for (J = 0; J < N; J++)
		{
			printf("%3d ", D[I][J]);
		}
		printf("%3.0d  ", D[I][IndMin]);
		printf("%1.2f  ", Sum);
		printf("%3.2f \n", Min);
	}
	printf("  El - элемент строки, модуль разности этого элемента \n");
	printf("       и среднего арифметического которого минимален \n");
	printf("  Sum- среднее арифметическое элементов строки \n");
	printf("Modul- модуль разности El и Sum");
	getchar();
	getchar();
}
zaira001002 вне форума Ответить с цитированием
Старый 14.09.2015, 09:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Насколько я помню писать можно так:
Код:
printf("%3.f \n", Min);
Тогда будет отбрасывать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2015, 10:16   #3
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Оно выводит только целую часть, а мне нужно чтобы выводило и дробную часть числа...
zaira001002 вне форума Ответить с цитированием
Старый 14.09.2015, 10:42   #4
zaira001002
Форумчанин
 
Аватар для zaira001002
 
Регистрация: 13.09.2012
Сообщений: 122
По умолчанию

Тема не актуальна, вопрос решен, вместо abs() необходимо писать fabs()... и все выводит как надо)
zaira001002 вне форума Ответить с цитированием
Старый 14.09.2015, 10:52   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а! Все. Кажись дошло.
Напиши просто %f без чисел.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drupal 7 - изменить формат вывода поля "история" в профиле alex4321 PHP 0 04.11.2012 21:53
Формат вывода Паркер Помощь студентам 1 06.12.2011 11:03
Формат вывода и сложение массива OpenId Общие вопросы C/C++ 2 08.12.2010 18:53
Формат вывода спецификатора E (e) Valter Общие вопросы C/C++ 0 13.11.2010 13:35
Не могу настроить формат вывода в БД alatir БД в Delphi 0 30.05.2010 18:19