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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2013, 18:12   #1
_Lenn
Пользователь
 
Регистрация: 10.11.2013
Сообщений: 10
По умолчанию Не выводится 2 знака после запятой

В выводе среднего арифм.по столбцам не работает вывод с 2 знаками после запятой. Помогите, кто разбирается, пожалуйста.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Project_Console2
{
    class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine("Введите количество строк матрицы:");
            int m = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите количество столбцов матрицы:");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine();
            int[,] arr = new int[m, n];
            Random row = new Random();
            int[] sred = new int[n];
            int sum = 0;
            int sr_z = 0;
            for (int j = 0; j < n; j++)
            {
                sum = 0;
                for (int i = 0; i < m; i++)
                {

                    arr[i, j] = row.Next(1, 10);
                    sum += arr[i, j]; //сумма эл-тов
                    
                    
                }
                sr_z = sum / m; // (сумма/числострок)
                sred[j] = sr_z; // среднее арифм для j столбца
            }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write(arr[i, j] + " "); //ВЫВОД матрицы  
                    
                }
                Console.WriteLine();
            }
            Console.WriteLine("\n" + "Ср. арифм. по столбцам: ");
            for (int j = 0; j < n; j++) // цикл по столбцам
            { Console.WriteLine("{0:0.##}", sred[j]); } // Вывод среднего арифм каждого столбца

            Console.WriteLine("\n");
            Console.WriteLine();
            Console.Write("Press <Enter>");
            Console.ReadLine();
        }
    }
}
_Lenn вне форума Ответить с цитированием
Старый 17.11.2013, 18:13   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

{0:0.##} замените на {0:0.00} чтобы 2 знака вывелись гарантированно, а не только если есть дробная часть

Код:
int[] sred = new int[n];
            int sum = 0;
            int sr_z = 0;
для вычисления среднего значения следует использовать вещественные типы (float, double, ...), а не целочисленный int
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 17.11.2013 в 18:17.
Luuzuk вне форума Ответить с цитированием
Старый 17.11.2013, 18:16   #3
_Lenn
Пользователь
 
Регистрация: 10.11.2013
Сообщений: 10
По умолчанию

Заменила.
Выводит просто 2 нуля, например:
5,00
4,00 и т.д.

Возможно, проблема в том, что массив типа int, а не double. Хотя, я задавала разные типы - на результат не повлияло.
_Lenn вне форума Ответить с цитированием
Старый 17.11.2013, 18:20   #4
_Lenn
Пользователь
 
Регистрация: 10.11.2013
Сообщений: 10
По умолчанию

Всё работает, спасибо!
я исправила, благодаря вам.
_Lenn вне форума Ответить с цитированием
Старый 17.11.2013, 18:21   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
массив типа int, а не double
sred и sr_z точно следует сделать double, иначе дробная часть теряется.

еще дробная часть потеряется в строке "sr_z = sum / m;"
чтобы этого избежать, следует либо sum объявить как double, либо явно привести sum или m к вещественному типу (sr_z = sum / (double)m;)
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
смена ячейки после введения любого знака Serii Microsoft Office Excel 14 03.03.2011 08:54
выбор текста после знака romanova Microsoft Office Excel 4 19.12.2009 17:12
Разделение чисел на до запятой и после запятой msser Microsoft Office Excel 8 23.10.2009 11:57
2-а знака после запятой vitamin.rulez Помощь студентам 7 22.05.2009 16:02
Как округлять числа до целых и как оставить два знака после запятой. bles Помощь студентам 9 19.02.2008 21:53