Задать вопрос
netrox
@netrox

Почему не работает код на C#?

Мой код:
using System;
class Com {
static void Main() {
    int n;
    int sum=0;
    int[] mas = new int[200];
    n = Convert.ToInt32(Console.ReadLine());
    for(int k=0;k<n;k++)
    {
        mas[k] = Convert.ToInt32(Console.ReadLine());
        sum = sum + mas[k];
    }
    int m;
    sum = sum / (n / 2);
    for(int j=0;j<n-1;j++)
    {
        for(int k=j+1;k<n;j++)
        {
            
            if (((int)(mas[j]) + mas[k]) == sum)
                Console.WriteLine((j+1)+" "+(k+1));
        }
    }
    Console.ReadKey();
}
}

Он компилируется ,но позже при запуске выдаёт ошибку. Выходные данные должны представлять собой пронумерованные пары входных данных .
b80b5f83e51541a79784cf10e4826cfb.PNG
  • Вопрос задан
  • 355 просмотров
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@sir_Maverick
sum = sum / (n / 2);
У вас sum целое число, в результате деления может получиться дробное, возможно проблема в этом.

UPD:
for(int j=0;j<n-1;j++)
    {
        for(int k=j+1;k<n;j++)
        {
            
            if (((int)(mas[j]) + mas[k]) == sum)
                Console.WriteLine((j+1)+" "+(k+1));
        }
    }


У вас внутренний цикл for бегает по кругу и увеличивает j пока тот не перевалит за 200, так как в условие выхода из цикла проверяется для k, но увеличивается только переменная j. Замените for(int k=j+1;k<n;j++)
наfor(int k=j+1;k<n;k++)
Исключения прекратились.
Ответ написан
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
This: for(int k=j+1;k<n;j++)
Ps задача решается по другому. Сортируем, потом выдаём первое с последним, второе с предпоследним...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы