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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 20:18   #1
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию одномерный массив

Помогите пожалуйста что то не так с кодом для модуля, поправьте кто может.
Код:
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 = 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();
}
}
}
PROkaZZZniK вне форума Ответить с цитированием
Старый 07.12.2011, 21:15   #2
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

А в чем ошибка то?
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 07.12.2011, 21:35   #3
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Цитата:
Сообщение от ByAlex Посмотреть сообщение
А в чем ошибка то?
ну он не правильно считает 2 задание где с модулем
задание такое: вычислить Сумму модулей элементов массива, расположенных после минимального по модулю элемента.

Вот нарпимер 5 чисел : -43 48 21 42 -26
1 количество отриц элементов верно = 2

2. Сумму модулей элементов массива, расположенных после минимального по модулю элемента. выходит значение 139,851262904634 ну а так не должно получаться
PROkaZZZniK вне форума Ответить с цитированием
Старый 07.12.2011, 21:42   #4
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 = mas[i];
                }
            }

            double summa = 0;

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

            Console.WriteLine("Количество отрицательных элементов: " + count+min);
            Console.WriteLine(string.Format("Сумма модулей элементов массива, "+
                "рассположенных после минимального по модулю элемента: {0:f3}" , summa));
            Console.ReadKey();
        }

Вы все делали правильно, тут только 1 деталь

не
Код:
double min = mas[0];
а
Код:
double min = Math.Abs(mas[0]);
rUs_LAN вне форума Ответить с цитированием
Старый 07.12.2011, 21:44   #5
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Цитата:
Сообщение от rUs_LAN Посмотреть сообщение
форматируйте код!!
Код:

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 = mas[i];
                }
            }

            double summa = 0;

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

            Console.WriteLine("Количество отрицательных элементов: " + count+min);
            Console.WriteLine(string.Format("Сумма модулей элементов массива, "+
                "рассположенных после минимального по модулю элемента: {0:f3}" , summa));
            Console.ReadKey();
        }

Вы все делали правильно, тут только 1 деталь

не
Код:
double min = mas[0];
а
Код:
double min = Math.Abs(mas[0]);
спасибо большое
PROkaZZZniK вне форума Ответить с цитированием
Старый 08.12.2011, 11:47   #6
PROkaZZZniK
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 121
По умолчанию

Код:
{
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();
}
ну вот я исправил строчку, так тоже не верно т.к. у меня в массиве числа целые а в ответе по модулю выходят дробные.
PROkaZZZniK вне форума Ответить с цитированием
Старый 08.12.2011, 17:38   #7
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Дак у тебя тип массива double, а нужно везде использовать integer, все поменяй и делов!
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив и Двумерный массив eugene1437 Общие вопросы C/C++ 15 25.05.2011 19:17
одномерный массив Максикок Помощь студентам 0 02.12.2010 22:20
Одномерный массив , двухмерный массив Woxx Паскаль, Turbo Pascal, PascalABC.NET 0 10.09.2010 09:28
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40