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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2014, 19:41   #1
Skipper Ok
Пользователь
 
Аватар для Skipper Ok
 
Регистрация: 08.11.2013
Сообщений: 23
По умолчанию C# Массив. Сумма двух элементов массива.

Добрый вечер, Уважаемые программисты!
Возникла такая проблема! Никак в голову не придет, как решить задачу.
Дан массив целых чисел и целое число N. Найти два элемента массива, сумма которых наиболее близка к данному числу N.
Skipper Ok вне форума Ответить с цитированием
Старый 14.09.2014, 21:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Наверное что-то в таком роде:
Код:
using System;

namespace f
{
	class MainClass
	{
		public static void Main (string[] args)
		{
			int[] a = {1,2,3,4,5,6,7};
			int n = 12, x=0, y=0, dist=n+1,d=0;
			foreach (int i in a) {
				foreach (int j in a) {
					d = Math.Abs ((i + j) - n);
					if (i != j && d < dist) {
						x = i;y = j; dist = d;
					}
				}
			}
			Console.WriteLine ("{0} + {1}={2}",x,y,x+y);
			Console.ReadKey ();
		}
	}
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2014, 23:49   #3
Skipper Ok
Пользователь
 
Аватар для Skipper Ok
 
Регистрация: 08.11.2013
Сообщений: 23
По умолчанию

я тут сделал пару набросок, но программа не работает. В чем проблема? я только начинаю на нем программировать, могу любые синтаксические ошибки допустить.
Код:
 {
    class Dece
    {
        static void Main(string[] args)
        {
int m = 10;
int[] A = new int[m];
            int i;
    Console.Write("Vvedite elementi massiva: ");
            for(i=0;i<m-1;i++)
            {
      Int32.Parse(Console.ReadLine());
            }
            const int N=6;
            int iMax = 0;
int jMax = 1;
for(int i=0; i<m-1; i++){
  for (int j=i+1; j<m; j++){
    if (Math.Abs(N-A[i]-A[j])<Math.Abs(N-A[iMax]-A[jMax])) {
      iMax = i; jMax = j;
    }
  }
}
Console.WriteLine("К числу {0} наиболее близка сумма элементов с индексами {1} и {2} (их сумма = {3}) ",
         N, iMax, jMax, A[iMax]+A[jMax]);

            

        }
    }
}
по сути на следующей строчке ошибка:
Код:
for(int i=0; i<m-1; i++)
Может я неправильно заполняю массив?! Может неправильно его объявляю?! Помогите!
Skipper Ok вне форума Ответить с цитированием
Старый 15.09.2014, 08:19   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
// int i; // убрать
Console.Write("Vvedite elementi massiva: ");
for(int i=0;i<m-1;i++)
{
     A[i] = Int32.Parse(Console.ReadLine());
}
Вроде как нормально считает.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Язык С Задан массив, который состоит из n элементов. Найти в нём индекс элемента для которого сумма элементов, которые FYNZIK Помощь студентам 2 27.03.2014 23:46
сумма первых двух положительных элементов массива Valechka Общие вопросы C/C++ 1 09.06.2012 00:45
сумма первых двух положительных элементов массива Valechka Помощь студентам 0 08.06.2012 21:22
Разработка программы поиска двух соседних элементов массива, сумма которых максимальна Esterlen Помощь студентам 13 27.05.2012 18:58
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52