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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2013, 02:13   #1
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию Почему программа работает но выдает ошибку??

Нужно вывести порядковый номер елемента массива..
Выводит верно, но сразу выдает ошибку (индекс находится вне границ масива), указывая на "i" в инструкции "if"
Код:
using System;

class Stroka
{
    public static void Main()
    {
        int[] masiv = {1,6,7,8,9,5,4};
        Console.Write("Введите одно из чисел: 1 6 7 8 9 5 4 ");
        int a = Convert.ToInt32(Console.ReadLine());
        for (int i = 0; i <= masiv.Length; i++)
        {
            if (a == masiv[i])
                Console.WriteLine("порядковый номер елемента "+a +" равен "+i);

        }
            Console.WriteLine();
            Console.ReadKey();
    }
}
Sergey_gorobets вне форума Ответить с цитированием
Старый 20.02.2013, 02:35   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

i < masiv.Length
Индексация с нуля.
Последний индекс - masiv.Length-1.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 20.02.2013, 08:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

к абсолютно верному ответу BDA добавлю:
если нужно найти одно вхождение числа в массив (ну, или, как в данном случае, Вы точно знаете, что числа в массиве уникальны и после того, как нашли совпадение, дальше перебирать бессмыслено), то крайне рекомендую прерывать цикл.

это делается проще простого. Вот так:
Код:
        for (int i = 0; i < masiv.Length; i++)
        {
            if (a == masiv[i])
               {
                   Console.WriteLine("порядковый номер елемента "+a +" равен "+i);
                   break; 
                } 
        }
p.s. включаю телепатор...
если у Вас вдруг возникнет задача выдать сообщение в случае, если требуемый элемент не найден, то это можно сделать так:
Код:
        bool isFound = false;
        for (int i = 0; i < masiv.Length; i++)
        {
            if (a == masiv[i])
               {
                   Console.WriteLine("порядковый номер елемента {0} равен {1} ",a, i);
                   isFound = true;
                   break; 
                } 
        }

        if (! isFound)
                   Console.WriteLine(" елемент {0} не найден в массиве! ",a);
p.p.s. как и многие другие задачи в C# задача может быть решена множеством способов. Например, через Linq, вообще без явных циклов перебора массива...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.02.2013, 09:12   #4
Sergey_gorobets
Пользователь
 
Регистрация: 08.02.2013
Сообщений: 69
По умолчанию

Убрал равно- все отлично..Спасибо..
Sergey_gorobets вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему выдает ошибку??? marales Помощь студентам 6 30.12.2012 16:17
а кто знает почему выдает ошибку .... topspin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.07.2012 23:42
готовый проект в delphi!почему выдает ошибку??? solisoul Помощь студентам 2 17.01.2012 06:50
Выдает ошибку, обьясните почему... MuRDOC Общие вопросы C/C++ 8 05.05.2010 20:59