Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/75: Рейтинг темы: голосов - 75, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 7

Две программы на for/while

23.10.2010, 16:11. Показов 15155. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу решить две задачи:

1)В деревне Интернетовка все дома расположены вдоль одной улицы по одну сторону от нее. По другую сторону от этой улицы пока ничего нет, но скоро все будет – школы, магазины, кинотеатры и т.д.

Для начала в этой деревне решили построить школу. Место для строительства школы решили выбрать так, чтобы суммарное расстояние, которое проезжают ученики от своих домов до школы, было минимально.

План деревни можно представить в виде прямой, в некоторых целочисленных точках которой находятся дома учеников. Школу также разрешается строить только в целочисленной точке этой прямой (в том числе разрешается строить школу в точке, где расположен один из домов – ведь школа будет расположена с другой стороны улицы).

Напишите программу, которая по известным координатам домов учеников поможет определить координаты места строительства школы.

Формат входных данных
Сначала вводится число N — количество учеников (0 < N < 100001). Далее идут в строго возрастающем порядке координаты домов учеников — целые числа, не превосходящие 2∙109 по модулю.

Формат выходных данных
Выведите одно целое число — координату точки, в которой лучше всего построить школу. Если ответов несколько, выведите любой из них.

2)На клетчатой бумаге Петя нарисовал отрезок из точки с координатами (a,b) в точку с координатами (c,d). Через сколько клеток проходит этот отрезок (считается, что отрезок проходит через клетку, если он проходит через ее внутренность, если же он проходит только через вершину или по границе клетки, считается, что он не проходит через клетку).

Входные данные. Вводятся целые числа a, b, c, d. Числа по модулю не превышают 109.

Выходные данные. Выведите одно число — количество клеток, через которые проходит отрезок

Решение проверяет компилятор, поэтому желательно не слишком долгое.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2010, 16:11
Ответы с готовыми решениями:

В две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную переменную?
Как в с++ в две строчки записать две цифры, а потом по закрытии программы и повторном открытии прочитать каждое число в отдельную...

Создание программы для отправки данных в две другие программы
Всем приветики,форумчане:) Появился такой вопрос- есть две программы в которые вносятся однотипные данные, так вот. Нужно написать...

Две программы
Помогите пожалуйста написать 2 программы на С++ 1.Составить программу, печатающую в возрастающем порядке все трёхзначные числа, в...

10
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
23.10.2010, 17:26
Цитата Сообщение от seed5 Посмотреть сообщение
1)В деревне Интернетовка все дома расположены вдоль одной улицы по одну сторону от нее. Для начала в этой деревне решили построить школу. Место для строительства школы решили выбрать так, чтобы суммарное расстояние, которое проезжают ученики от своих домов до школы, было минимально.
План деревни можно представить в виде прямой, в некоторых целочисленных точках которой находятся дома учеников. Школу также разрешается строить только в целочисленной точке этой прямой (в том числе разрешается строить школу в точке, где расположен один из домов – ведь школа будет расположена с другой стороны улицы).

Напишите программу, которая по известным координатам домов учеников поможет определить координаты места строительства школы.

Формат выходных данных
Выведите одно целое число — координату точки, в которой лучше всего построить школу. Если ответов несколько, выведите любой из них.

.
Если населённых пунктов - нечётное число, школа строится в точке, соответствующей среднему по номеру дому.
Если чётное - в любой точке между двумя средними домами, включая и их.
Остальное несложно.
1
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 7
23.10.2010, 17:44  [ТС]
Цитата Сообщение от кот Бегемот Посмотреть сообщение
Если населённых пунктов - нечётное число, школа строится в точке, соответствующей среднему по номеру дому.
Если чётное - в любой точке между двумя средними домами, включая и их.
Остальное несложно.
А если 3 дома, координаты - 1,99,100?
Ответ - 99?
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
23.10.2010, 18:26
да. сумма расстояний будет 1+0+99=100. Несложно убедиться, что в любой другой точке сумма будет больше, например, школа в точке 50: s=50+49+50=149
в точке 100: s=100+1+0=101
в точке 98 s=98+1+2=101
в точке 97 s=97+2+3=102 и т.д
1
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 7
23.10.2010, 18:50  [ТС]
Спасибо, сдал.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
VAR
   s,i,n:longint;
   a:array[1..100001] of integer;
BEGIN
     read (n);
     s:=n div 2;
     for i:=1 to n do
         read (a[i]);
     if n div 2 = 0 then
        writeln (a[s])
     else writeln (a[s+1])
END.
А что со второй задачей?
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
23.10.2010, 19:25
это на делимость задача. надо брать разности между (х1 и х2) и (y1-y2), если они имеют общие делители, значит проходим через узел, этот делитель-1 вычитается из формулы
abs (х1 - х2) + abs(y1-y2)-1,итого:
abs(х1 - х2) + abs(y1-y2)-1-(d-1),
надо проверять, но, похоже, где-то так
0
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 7
24.10.2010, 00:41  [ТС]
Смысл не понял. Напишите приблизительный код, пожалуйста.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
24.10.2010, 00:56
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
a,b,c,d,s,m,n,t:integer;
begin
writeln('koordinaty 1 tochki:');
readln(a,b);
writeln('koordinaty 2 tochki:');
readln(c,d);
m:=abs(a-c);
n:=abs(b-d);
s:=m+n;
while (n<>0)and(m<>0)do
if n>m then n:=n mod m else m:=m mod n;
t:=m+n;
s:=s-t;
writeln('kletok=',s);
readln;
end.
0
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 7
24.10.2010, 01:02  [ТС]
Спасибо большое.

Единственный оставшийся вопрос - можно ли решить первую задачу без массива? Боюсь преподаватель не одобрит.
0
Платежеспособный зверь
 Аватар для кот Бегемот
8964 / 4387 / 1654
Регистрация: 28.10.2009
Сообщений: 11,645
24.10.2010, 01:23
А как вы собираетесь вводить данные (координаты домов)?
Но в принципе можно, если известно количество вводимых данных. Вы просто делите это число целочисленно на два, прибавляете 1 и вводите себе в цикле данные, пока не дойдёте до нужного числа, его или запоминаем, или печатаем.
0
0 / 0 / 0
Регистрация: 23.10.2010
Сообщений: 7
24.10.2010, 17:36  [ТС]
Цитата Сообщение от кот Бегемот Посмотреть сообщение
А как вы собираетесь вводить данные (координаты домов)?
Но в принципе можно, если известно количество вводимых данных. Вы просто делите это число целочисленно на два, прибавляете 1 и вводите себе в цикле данные, пока не дойдёте до нужного числа, его или запоминаем, или печатаем.
Нет, так не пойдёт, так как нам необходимо, чтобы были введены все координаты.

Добавлено через 2 часа 5 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
VAR
   n,a,i,s:integer;
BEGIN
     read (n);
     s:=n div 2+1;
     for i:=1 to n do
         begin
         read(a);
         if i=s then
            write (a);
         end;
END.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.10.2010, 17:36
Помогаю со студенческими работами здесь

Соединить две программы
помогите пожалуйста срочно... нужна задача прямо сейчас я не могу объединить две программы по графики.... вот коды программ... uses...

Объединить две программы
Доброго времени суток и это снова я. кхем. Заранее прошу прощения за глупую просьбу, но честно, у меня не вышло, и снова же потому что не...

Две программы в одной
Здравствуйте. Я хотел бы сделать программу, которая - во-первых, запускается при включении, проверяет данные и, если они не изменились,...

две программы срочно
люди! мне нужно написать две почти одинаковых программы до пятницы. сама не могу, знакомые программисты тоже руки разводят. уже не знаю что...

Прокомментируйте две программы
программа 5. var i,n:integer; s:real; begin write('n = ');readln(n); s:=0; for i:=1 to n do ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru