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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2011, 19:14   #1
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
Вопрос одномерный массив, исправте ошибки

Добрый вечер!
Заранее всем кто поможет хочу сказать, спасибо.
Помогите пожалуйста разобраться с ошибками в коде
Задание:
В одномерном массиве, состоящем из n вещественных элементов,вычислить:
1. Количество отрицательных элементов массива;
2.Сумму модулей элементов массива, расположенных после минимального по модулю элемента.
вот код:
Код:
static void Main(string[] args)
        {

            double[] mas;
            Console.WriteLine("Введите N");
            int N = Convert.ToInt32(Console.ReadLine());
            mas = new double[N];
            Random R = new Random();
            for (int i = 0; i < mas.Length; i++)
                mas[i] = R.NextDouble() * 100 - 50;
            int count = 0;
            for (int i = 0; i < mas.Length; i++)
            {
                if (mas[i] < 0)
                {
                    count++;
                }
            }
            int index = 0;
            double min = Math.Abs(mas[0]);
            for (int i = 0; i < mas.Length; i++)
            {
                if (Math.Abs(mas[i]) < min)
                {
                    index = i;
                    min = mas[i];
                }
            }
            double summa = 0;
            for (int i = index + 1; i < mas.Length; i++)
            {
                summa += Math.Abs(mas[i]);
            }
            Console.WriteLine("Количество отрицательных элементов: " + count);

            Console.WriteLine("Сумма модулей элементов массива, рассположенных после минимального по модулю элемента: " + summa);

            foreach (int i in mas)
            {
                Console.Write(i + "\t");
            }

            Console.ReadLine();
        }
Что не так:

Сумма модулей элементов массива, рассположенных после минимального по
модулю эле
мента: 174,208842741423
25 41 -3 44 32 8 29 9 23
-26

Это как? На экране числа целые, а считает дробь?

Сумма модулей элементов массива, рассположенных после минимального по
модулю эле
мента: 216,607552658118
-17 10 47 -10 39 -28 -26 -1 -45
7

Здесь по модулю мин. число 1. Сумма модулей 45+7=52. Откуда 216?

Сумма модулей элементов массива, рассположенных после минимального по
модулю эле
мента: 223,144430561524
-43 8 38 -10 -29 18 28 -16 23
48

Сумма 210.
PROkaZZZniK вне форума Ответить с цитированием
Старый 08.12.2011, 20:27   #2
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Помогите пожалуйста с ошибками!
PROkaZZZniK вне форума Ответить с цитированием
Старый 08.12.2011, 22:36   #3
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

учитесь использовать дебагер.

Код:
static void Main(string[] args)
        {
            double[] mas;
            Console.Write("Введите N\t");
            int N = Convert.ToInt32(Console.ReadLine());
            mas = new double[N];
            Random R = new Random();
            for (int i = 0; i < mas.Length; i++)
                mas[i] = R.NextDouble() * 100 - 50;
            for (int i = 0; i < mas.Length; i++)
                Console.Write(string.Format("{0:f3}\t\t",mas[i]));
            
            int count = 0;
            for (int i = 0; i < mas.Length; i++)
                if (mas[i] < 0)
                    count++;
            
            int index = 0;
            double min = Math.Abs(mas[0]);

            for (int i = 1; i < mas.Length; i++)
            {
                if (Math.Abs(mas[i]) < min)
                {
                    index = i;
                    min = Math.Abs(mas[i]);
                }
            }

            double summa = 0;

            for (int i = index + 1; i < mas.Length; i++)
                summa += Math.Abs(mas[i]);

            Console.WriteLine("Количество отрицательных элементов: " + count);
            Console.WriteLine(string.Format("Сумма модулей элементов массива, "+
                "рассположенных после минимального по модулю элемента: {0:f3}" , summa));
            Console.ReadKey();
        }
Цитата:
Сообщение от PROkaZZZniK
Это как? На экране числа целые, а считает дробь?
Код:
foreach (int i in mas)
            {
                Console.Write(i + "\t");
            }
int i in mas - int целое, а вы его выводите

п.с. вы все делали правильно но тут одна деталь

п.п.с.
Код:
for (int i = index + 1; i < mas.Length; i++)
            {
                summa += Math.Abs(mas[i]);
            }
здесь исправил

Последний раз редактировалось rUs_LAN; 09.12.2011 в 00:24.
rUs_LAN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправте ошибки dosha Помощь студентам 0 30.11.2010 22:51
Помогите решить. Или исправте ошибки в моем варианте. ZzMaKSzZ Общие вопросы C/C++ 2 23.12.2009 20:08
Исправте ошибки Roman Общие вопросы .NET 4 15.06.2009 17:51
Найдите ошибки и исправте??? Пожалуйста Очень срочно VADOS2009-1 Паскаль, Turbo Pascal, PascalABC.NET 1 05.06.2009 01:09
Исправте ошибки в проге для Делфи! Toxass Общие вопросы Delphi 2 17.12.2008 02:01