Модераторы: Alx, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pascal, Задачки 
:(
    Опции темы
Рыжий
Дата 20.6.2005, 15:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Здравствуйте!
Вот пару задач, для разминки мозгов smile :

Задача №1
Цитата

Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
пример входных данных:
6,3
пример выходных данных:
сумма - 9; произведение 18; частное 2.
Вопрос задал PHP-Script



Задача №2
Цитата

Человек вводит 10 чисел, замените 3 максимальным а 7 минимальным.

пример входных данных:
10,20,30,40,50,60,55,45,35,25;

пример выходных данных:
10,20,60,40,50,60,10,45,35,25;
Вопрос задал PHP-Script



Задача №3
Цитата

Дан номер месяца (1 — январь, 2 — февраль, ...10 - декабрь). Человек вводит номер месяца, Нужно вывести название соответствующего времени года ("зима", "весна" и т.д.).

пример входных данных:
7
пример выходных данных:
"лето"
Вопрос задал PHP-Script



Задача№4
Цитата

Дано целое число в диапазоне 100 – 999. Вывести строку — словесное описание данного числа. пример входных данных:
256
пример выходных данных:
"двести пятьдесят шесть"
Вопрос задал PHP-Script



Задача №5
Цитата

Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа), в порядке их убывания.

пример входных данных:
5,10
пример выходных данных:
9,8,7,6
Вопрос задал PHP-Script



Это сообщение отредактировал(а) PHP-Script - 20.6.2005, 23:50
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 20.6.2005, 15:40 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Никак не въеду... Можно примеры (точнее тесты) программ?
PM   Вверх
Рыжий
Дата 20.6.2005, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Задача №6
Цитата

Даны два числа m и n. Известно, что m/n - неправильная дробь. Задача: сократить эту дробь и выделить целую часть. Входные параметры - два числа (m,n). выходные - целая часть и оставшаяся несократимая правильная дробь.
Пример:
Вход: 33 6
Выход:5 1 2 (5 - челая часть, и дробь 1/2)
Вопрос задал SPrograMMer



Задача №7
Цитата

Множество символов I-ричной системы счисления (2 <= I <= 36) образуют символы 0, ..., 9, A, B, ..., Z. Если I < 36, то соответствующее количество последних букв латинского алфавита в качестве цифр не используются. Если I < 10, то не используются соответствующие цифры. Необходимо написть программу, которая по двум текстовым строкам, означающим одно и то же число в I-ричной и J-ричной системе счисления, определяет минимальные значения I и J.
Пример входных данных:
10
2
Пример выходных данных:
2 3



Задача №8
Цитата

Имеется N точек и известны расстояния между некоторыми из них. Нужно написать программу, которая проверяет, можно ли эти точки расположить на плоскости так, чтобы указанные расстояния между ними сохранились.
INPUT
В файле исходных данных записано количество точчек N (1 <= N <= 100) и расстояния между некоторыми из них ы ыиде номер первой точки, нмер второй точки, расстояние. Расстояние - вещественное неотрицательное число, не превосходящее 1000. Номер точки - целое число из отрезка 1..N. Все числа разделяются проьелами и/или символами перевода строки.
OUTPUT
Ответом должно быть слово Yes или No соответственно.
EXAMPLE
INPUT:
3
1 2 10
2 3 20
3 1 100
OUTPUT:
No




Задача №9
Цитата

  Составить программу SUBSETS, которая:
  а) вводит с клавиатуры строку текста длиной N символов,
      где каждый символ строки обозначает один элемент множества,
      состоящего из N элементов;
  б) выводит на экран число - количество подмножеств заданного
      множества;
  в) выводит на экран все подмножества заданного множества
      по одному подмножеству в строке (в произвольном порядке).

  Пример.
  Введенная строка: "ABC"
  Результаты:
                    8
                    <пустое множество>
                    A
                    B
                    C
                    AB
                    BC
                    AC
                    ABC
Вопрос задал Fedor



Задача №10
Цитата

Составить программу, которая:
вводит с клавиатуры последовательность нечетных чисел.
Как только вводится четное число, программа прекращает работу.

Пример работы программы:

Введите число= 11
Введите число= 1
Введите число= 3
Введите число= 1
Введите число= 2
Программа закончилась.
Вопрос задал Fedor


Добавлено @ 15:49
Pakshin A. S.
Каких именно??
И еще, давай постить тут только задачки smile А если есть вопросы/замечания/пердложения - я всегда отвечаю на PM

Это сообщение отредактировал(а) PHP-Script - 21.6.2005, 00:05
PM MAIL ICQ   Вверх
Pakshin A. S.
Дата 20.6.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата

Каких именно??

Вот вторая партия нравится, т. к. есть примеры работы программы... надо бы также оформить и первую партию задач...

Ok... будем следить, чтобы никаких вопросов - только задачи... Просто предупреждать нужно... smile
PM   Вверх
SoWa
Дата 1.7.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: нет
Всего: 74



Вот решите:
Цитата

Дано N (N<=32000). Определить последнюю цифру числа N^N.


Это сообщение отредактировал(а) SoWa - 1.7.2005, 12:10


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
SoWa
Дата 12.9.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: нет
Всего: 74



Классная задача:
Дано N, на выход дать матрицу, представляющую из себя магический квадрат со стороной N или выдать, что решений нет.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
EdgarJ
Дата 15.1.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 3.1.2006

Репутация: нет
Всего: нет



Вот вам несколько задачь от меня. Эти задачи довались нам на школьной олимпиаде по информатики(программированию). Выполнить задания можно было на С, Turbo Pascal 7.0, QBasic. Звёздочки показывают сложность задачь.

1) *

"Осадки"

Вам даётсья задача зделать программу, которая работает с двумя текстовыми файламы (osadki.dat и osadki.rez) и делает при этом несколько вычислений. В 1. файл записаваетсья несколько строк. Первая строка содержит количество дней N, после которой следует количество строк (N). Начиная со второй строки в каждой записано два числа (отделены между собой пробелои) - температура воздуха и количество (в мм) осадков в день. Принимая во внимание, что
1) N <= 1000000
2) количество осадков не меньше 0 и не боль ше 100 мм
3) температура воздуха была между -50 и 50 градусами
4) если Температура меньше нуля падал снег,а во стольных случайах лил дождь
в файле osadki.rez надо вывести два числа отделённых между собой побелами - общая количество снега за все дни и общее количество дождя.
Пример
osadki.dat
3
-1 30
0 3
20 15

osadki.rez
30 18

2)**

"Дамы и кони"

На шахматном столе находятсья дамы (ферзи они же королевы) и кони. Надо узнать количество дам которые под ударам как минимум одного коня и количество коней которые находятсья под ударам как минимум одного коня. Края шахматного стола обозначаютсья числами 1,2,3,4,5,6,7,8 и латинскими буквами a,b,c,d,e,f,g,h. Тем самым получаетсья, что у каждога поля есть обазначение - буква+число (а3, h2).

Программа должна работать с двумя файлами - dk.dat и dk.rez. В первом файле в первой строке дано 2 числа (отделяемых пробелам) - количество дам(D) и коней(K) соответсвенно. В последующих строках D даны координаты дам, а после идут cтроки K с координатами коней. В файле dk.rez надо вывести два числа - количество дам, которые под ударам как минимум одного коня и количество коней, которые под ударам как минимум одной дамы. Количество фигур характиризуетсья так - 1<=K, D <= 64. Общее количество фигур не меньше 2 и не больше 64.
Пример
dk.dat
2 4
d3
d1
e1
c1
c2
h1

dk.rez
1 3

Я потом выложу задания 3., 4. и 5. уровней сложности.

Это сообщение отредактировал(а) EdgarJ - 15.1.2006, 00:39
PM MAIL   Вверх
Алиса
Дата 15.6.2006, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.6.2006

Репутация: нет
Всего: нет



Такие задачки предлагает, а грамотно писать так и не научился... 
PM MAIL   Вверх
Рыжий
Дата 16.6.2006, 00:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Помешанный
***


Профиль
Группа: Завсегдатай
Сообщений: 1423
Регистрация: 19.9.2004

Репутация: 1
Всего: 20



Алиса, Уточняйте пожалуйста личность мерзавца...

Или, Вы, имели ввиду ошибки такого плана:
Цитата(EdgarJ @  15.1.2006,  00:38 Найти цитируемый пост)
Вам даётсья задача зделать программу

 
PM MAIL ICQ   Вверх
Palladin
Дата 29.6.2006, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: нет
Всего: 17



А решения этих задач здесь постить ненадо??? или это чисто для себя, чтоб не забыть smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
dvamaster
Дата 15.7.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: нет
Всего: 10



Вот моя задачка:

Код

Найти первые N простых чисел, цикл не должен содежать "пустых" итераций!!!
 

Это сообщение отредактировал(а) dvamaster - 5.8.2006, 10:02


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
sgentstuff
Дата 17.7.2006, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



Предлагаю помимо задач выкладывать также и решения этих задач! Каждый, кто хочет решает задачу, выкладывает свое решение, чтобы можно было посмотреть чье решение эффективнее! В данный момент решаю вот эту задачу, пока не решил, давайте вместе ее решать, потом следующую и т.д., а то умирает эта тема!

Составить  алгоритм  заполнения  прямоугольной таблицы размером N*N целыми числами от 1 до N*N  по  спирали.
Пример для N=5.
1    2    3    4    5
16    17    18    19    6
15    24    25    20    7
14    23    22    21    8
13    12    11    10    9

Добавлено @ 11:36 
SoWa, RooR и все остальные подключайтесь! 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
sgentstuff
Дата 17.7.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



Вобщем решил я эту задачку решение ниже.

Предлагаю помимо задач выкладывать также и решения этих задач! Каждый, кто хочет решает задачу, выкладывает свое решение, чтобы можно было посмотреть чье решение эффективнее! В данный момент решаю вот эту задачу, пока не решил, давайте вместе ее решать, потом следующую и т.д., а то умирает эта тема!

Составить  алгоритм  заполнения  прямоугольной таблицы размером N*N целыми числами от 1 до N*N  по  спирали.
Пример для N=5.
1    2    3    4    5
16    17    18    19    6
15    24    25    20    7
14    23    22    21    8
13    12    11    10    9

Ршение
Код

procedure TForm1.Button1Click(Sender: TObject);
const n=4;
var
ur,g,i,s:integer;
a:array[1..n,1..n] of integer;
str:string;
begin
//
g:=1;
s:=0;
while s<>n*n do
begin
        for i:=g to n-g+1 do
        begin
        inc(s);
        a[g,i]:=s;
        end;
        for i:=g to n-g do
        begin
        inc(s);
        a[i+1,n-g+1]:=s;
        end;
        for i:=n-g downto g do
        begin
        inc(s);
        a[n-g+1,i]:=s;
        end;
        for i:=n-g downto g+1 do
        begin
        inc(s);
        a[i,n-(n-g)]:=s;
        end;

inc(g);

end;
for i:=1 to n do
begin
str:='';
for g:=1 to n do
str:=str+IntToStr(a[i,g])+'  ';
memo1.Lines.add(str);
end;
end;

Кто может предложить более изящное решение, чем с 5- циклами?



 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
sgentstuff
Дата 18.7.2006, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



Задача r89_4
 По  кругу стоят N спортсменов с номерами от 1 до N. Начиная с какого-то человека, по кругу удаляется каждый k-ый спортсмен. После каждого удаления круг смыкается.  Составить алгоритм определения последовательности номеров удаляемых спортсменов. 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
sgentstuff
Дата 19.7.2006, 06:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



Решение r89_4 

Код

procedure TForm1.Button1Click(Sender: TObject);
const n = 6;
var
k,i:integer;
s,s1:TStringList;
begin
//
s:= TStringList.Create;
s1:= TStringList.Create;
for i:=0 to n do
s.Add(inttostr(i));
k:=0;
while s.Count>1 do
begin
  if k >= s.Count then
  begin
  k:=k-s.Count;[quote]

[/quote]
  end;
        if k=s.Count then
        begin
        s1.Add(s.Strings[k-1]);
        s.Delete(k-1);
        continue;
        end;
        s1.Add(s.Strings[k]);
        s.Delete(k);
        inc(k,2);
end;
memo1.Lines.Add(s1.Text);
end;
 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
sgentstuff
Дата 19.7.2006, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 13.9.2005

Репутация: нет
Всего: 1



Задача r89_6
Составить  алгоритм  подсчета количества способов,  которыми  можно  разменять рубль медными монетами (достоинством 1, 2, 3, 5 копеек). 
--------------------
Тот, кто ищет миллионы, весьма редко их находит, но тот, кто их не ищет, не находит никогда.  
PM ICQ   Вверх
Palladin
Дата 22.7.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

Репутация: нет
Всего: 17



Цитата(sgentstuff @  19.7.2006,  07:20 Найти цитируемый пост)
Задача r89_6
Составить  алгоритм  подсчета количества способов,  которыми  можно  разменять рубль медными монетами (достоинством 1, 2, 3, 5 копеек).



Вот эта мне понравилась smile ща буду решать, заодно и ТВИМС вспомню smile  


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
AlexST
Дата 3.8.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: нет
Всего: 3



Прям неинтересно как-то.
Такие задачи решают в 5 классе по-моему.
В эту коллекцию "разминалок" могу кинуть еще пару примеров (кому интересно) типа:

Есть множество точек плоскости, соединить две из них отрезком так, чтобы с обоих сторон отрезка было равное количество точек.

или

Есть множество точек, составить из них несамопересекающуюся ломаную.

Хоть чуток посложнее  smile .
PM MAIL ICQ   Вверх
Berd
Дата 5.8.2006, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Для разнообразия тренирующихся.
Где-то когда-то вычитал:
...
"Составить программу, которая печатает сама себя. 
Программа должна иметь как можно меньший размер."
...
PM MAIL   Вверх
AlexST
Дата 5.8.2006, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 30.4.2006
Где: Москва

Репутация: нет
Всего: 3



Чё-то, как-то не ясно задание. Если я его правильно понял, то в чём сложность?
PM MAIL ICQ   Вверх
DarlkElfTen
Дата 13.10.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: нет
Всего: 1



Цитата(Рыжий @ 20.6.2005,  15:31)
Здравствуйте!
Вот пару задач, для разминки мозгов smile :

Задача №1
Цитата

Даны два ненулевых числа. Найти их сумму, разность, произведение и частное. 
пример входных данных:
6,3
пример выходных данных:
сумма - 9; произведение 18; частное 2.
Вопрос задал PHP-Script



Задача №2
Цитата

Человек вводит 10 чисел, замените 3 максимальным а 7 минимальным.

пример входных данных:
10,20,30,40,50,60,55,45,35,25;

пример выходных данных:
10,20,60,40,50,60,10,45,35,25;
Вопрос задал PHP-Script



Задача №3
Цитата

Дан номер месяца (1 — январь, 2 — февраль, ...10 - декабрь). Человек вводит номер месяца, Нужно вывести название соответствующего времени года ("зима", "весна" и т.д.). 

пример входных данных:
7
пример выходных данных:
"лето"
Вопрос задал PHP-Script



Задача№4
Цитата

Дано целое число в диапазоне 100 – 999. Вывести строку — словесное описание данного числа. пример входных данных:
256
пример выходных данных:
"двести пятьдесят шесть"
Вопрос задал PHP-Script



Задача №5
Цитата

Даны два целых числа A и B (A < B). Вывести все целые числа, расположенные между данными числами (не включая сами эти числа), в порядке их убывания. 

пример входных данных:
5,10
пример выходных данных:
9,8,7,6
Вопрос задал PHP-Script


кхм...это же легко..=\
по моему это для тупых smile

Добавлено @ 20:19 
Цитата(sgentstuff @ 19.7.2006,  07:20)
Задача r89_6
Составить  алгоритм  подсчета количества способов,  которыми  можно  разменять рубль медными монетами (достоинством 1, 2, 3, 5 копеек).

эта интереснее)
--------------------
"Две башни"
PM MAIL ICQ   Вверх
aved
Дата 15.10.2006, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.6.2006
Где: г. Кострома

Репутация: нет
Всего: нет



DarlkElfTen, ещё 10, 15, 20, 50.

Задача
Цитата

Дано неизвестное количество блоков паралельно соеденённых резисторов, в кажом блоке неизвестное количество резисторов. Номинал резисторов вводится с клавиатуры. Отрицательное число - означает переход к следующему блоку, 0 - конец схемы. Найти общее сопротивление резисторов.

10 10 -1 10 10 0 = 10 Ом 

user posted image




Это сообщение отредактировал(а) aved - 9.12.2006, 10:54
PM ICQ   Вверх
AligatorV
Дата 5.12.2006, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Ученые астрономы, сообщили правительство, что ровно через T секунд на
планете Олимпиада начнется метеоритный дождь. Правительство планеты срочно
начало эвакуацию людей и
важного оборудования - телескопических установок.
Для защиты телескопу его нужно транспортировать в специально отведенное
место - хранилище. В одном хранилище может вместиться лишь один телескоп.
Необходимо рассчитать максимальное количество телескопов которые можно
успеть спрятать к началу метеоритного дождя.

Входные данные (файл METEOR.DAT):
В первой строке число T - количество секунд через которую метеориты
упадут на планету.
Во второй строке число N - количество телескопов.
В третьей строке находится 2*N чисел - координаты телескопов (x, в)
В четвертой строке число M - количество хранилищ.
В пятой строке находится 2*M чисел - координаты хранилищ (x, в)
В шестой строке число V - скорость транспортировки телескопов.

Примечание:
0<T<1000000 ; 0<N,M<100 ; -30000 <= x,y <=30000 ; 0<V<1000
T, N, M, x, в - цели.

Выходные даны: (файл METEOR.SOL):
В единственную строку файла записать максимальное количество телескопов,
которые могут быть спрятанные к началу падения метеоритов.


Пример METEOR.DAT:
10
4
1 7 3 7 5 7 100 100
2
2 7 4 7
0.1

Пример METEOR.SOL:
2
PM MAIL ICQ   Вверх
AligatorV
Дата 5.12.2006, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Взрывное устройство, которое было заложено неизвестным террористом, имеет N - лампочек, и M - переключателей.
Каждый переключатель изменяет состояние некоторых лампочек на противоположный. Для обезвреживания бомбы, необходимо выключить все лампочки.
Напишите программу, которая спасет мир.

Входные данные: (файл BOMBA.DAT):
В первой строке число N. (0<N<=100)
Во второй строке содержится N чисел, которые помечают состояние каждой лампочки (0 - выключенная, 1 - включенная).
В третьей строке содержится число M. (0<M<=100)
В каждом из следующих M строк содержится число K (количество лампочек состояние которых изменяет данный переключатель) и K чисел - номера соответствующих лампочек.
Выходные даны: (файл BOMBA.SOL):
Если бомбу обезвредить невозможно, запишите в исходный файл "NO" (без кавычек).
Если возможно спасти мир, то в первую строку запишите "YES" (без кавычек), а во вторую строку запишите номера переключателей которые необходимо задействовать.
Пример BOMBA.DAT:
5
0 1 1 0 1
4
3 2 3 4
3 1 4 5
2 4 5
2 2 4
PM MAIL ICQ   Вверх
aved
Дата 9.12.2006, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.6.2006
Где: г. Кострома

Репутация: нет
Всего: нет



Дана матрица из нулей и единиц, найти количество областей состоящих из единиц ("пятна")

Н-р:
1 1 1 0 1 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0
1 1 0 0 1 0 0 1 1
0 0 1 0 0 0 1 0 1 0
0 0 1 1 1 0 0 1 1 1
0 0 1 0 1 0 0 1 0 0
0 1 0 0 1 0 0 0 0 0

Ответ: 3



Это сообщение отредактировал(а) aved - 12.12.2006, 23:52
PM ICQ   Вверх
Kann
Дата 16.12.2006, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.12.2006

Репутация: нет
Всего: нет



Цитата(aved @ 9.12.2006,  10:52)
Дана матрица из нулей и единиц, найти количество областей состоящих из единиц ("пятна")

Н-р:
1 1 1 0 1 1 0 0 0 0
1 0 1 1 1 0 1 1 0 0
1 1 0 0 1 0 0 1 1
0 0 1 0 0 0 1 0 1 0
0 0 1 1 1 0 0 1 1 1
0 0 1 0 1 0 0 1 0 0
0 1 0 0 1 0 0 0 0 0

Ответ: 3

Код

const n=7;
      m=10;
var f:text;
    a:array[1..n,1..m,0..1] of byte;
    i,j,p:integer;
procedure search(i,j:integer);
begin
if i<>1 then if (a[i-1,j,0]=1) and (a[i-1,j,1]=0) then
begin
a[i-1,j,1]:=a[i,j,1];
search(i-1,j);
end;

if i<n then if (a[i+1,j,0]=1) and (a[i+1,j,1]=0) then
begin
a[i+1,j,1]:=a[i,j,1];
search(i+1,j);
end;

if j<>1 then if (a[i,j-1,0]=1) and (a[i,j-1,1]=0) then
begin
a[i,j-1,1]:=a[i,j,1];
search(i,j-1);
end;

if j<m then if (a[i,j+1,0]=1) and (a[i,j+1,1]=0)  then
begin
a[i,j+1,1]:=a[i,j,1];
search(i,j+1);
end;

end;
function ch(i,j:integer):boolean;
begin
ch:=false;
if not i>n then if a[i+1,j,0]=1 then ch:=true;
if not i<1 then if a[i-1,j,0]=1 then ch:=true;
if not j>m then if a[i,j+1,0]=1 then ch:=true;
if not i<1 then if a[i,j-1,0]=1 then ch:=true;
end;
begin
assign(f,'c:\in.txt');
reset(f);
for i:=1 to n do
for j:=1 to m do
read(f,a[i,j,0]);
p:=1;
for i:=1 to n do
for j:=1 to m do
if  ch(i,j) then
if (a[i,j,0]=1) and (a[i,j,1]=0) then
begin
a[i,j,1]:=p;
inc(p);
search(i,j);
end;
dec(p);
writeln(p);
end.


PM MAIL ICQ   Вверх
Strannik
Дата 28.1.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Вот чуть более эффективная реализация:
Код

const md: array [1..4,1..2] of shortint=((0,1),(1,0),(-1,0),(0,-1));
var a: array [1..100,1..100] of byte;
      i,j,kol,n,m: longint;

procedure search(x,y: integer);
var tx,ty,i: integer;
begin
 a[x,y]:=0;
 for i:=1 to 4 do
  begin
   tx:=x+md[i,1];
   ty:=y+md[i,2];
   if a[tx,ty]=1 then
    begin
     search(tx,ty);
    end;
  end;
end;

begin
 assign(input,'input.txt');
 reset(input);
 readln(m,n);
 fillchar(a,sizeof(a),0);
 for i:=1 to m do
  for j:=1 to n do
    read(a[i,j]);
 kol:=0; 
 for i:=1 to m do
  for j:=1 to n do
   if (a[i,j]=1) then
    begin
     inc(kol);
     search(i,j);
    end;
 writeln(kol); 
 close(input);
end.


П.С. Не компилировал и не тестировал, так что за описки не пинать а идея и так понятна...

Добавлено @ 20:04 
Ну и от меня задачка:

На шахматной доске есть два коня, они делают ходы одновременно. Определить за какое минимальное кол-во ходов они могут встретиться на одной клетке. Если не могут - вывести "-1"

input.txt
a1 a3
-------
a1 a2

output.txt
1
-----
-1

Добавлено @ 20:07 
Я вам этих задач столько напихать могу.... Если кому нечем мозги занять - обращайтесь, подыщем индивидуальную программу!
PM MAIL   Вверх
Michael_Rybak
Дата 30.1.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



Расскажи откуда пихать будешь smile
PM MAIL   Вверх
Strannik
Дата 30.1.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



У-у-у.... в сети столько этого добра (ну не мне ж тебе рассказывать). Плюс задачи которые точно мало кто видел (например наша район-область прошлых годов). Да и дело не в том что тут будет что-то эксклюзивное... Просто человек например не будет специально искать архивы задач, а здесь увидит парочку, может быть заинтересуется этим делом...
PM MAIL   Вверх
Michael_Rybak
Дата 30.1.2007, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.12.2006

Репутация: 1
Всего: 1



Ну я думал может ресурс какой-нить в мою коллекцию новый smile
PM MAIL   Вверх
volvo877
Дата 31.1.2007, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: нет
Всего: 116



Цитата(Strannik @  28.1.2007,  18:58 Найти цитируемый пост)
Вот чуть более эффективная реализация:

Вполне возможно, только ничего, что она результат неправильный выдавать будет?

Цитата(Strannik @  28.1.2007,  18:58 Найти цитируемый пост)
П.С. Не компилировал и не тестировал, так что за описки не пинать а идея и так понятна...
Интересная позиция... Только вот идея - она и так понятна, тебе не показалось? А ты почему-то очевидного не заметил... Условие еще раз перечитай, и посмотри, есть ли в матрице отдельно стоящие единицы. Так вот их учитывать не надо (судя по тому, что автор выделил только единицы, стоящие ГРУППОЙ), а твоя программа это будет делать...
PM MAIL   Вверх
Strannik
Дата 31.1.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.1.2007

Репутация: нет
Всего: 2



Цитата

Дана матрица из нулей и единиц, найти количество областей состоящих из единиц ("пятна")


Одна единица - область состоящая из единиц.

Я решил эту задачу и не несу ответственность за несоответствие примеров или некорректную постановку задачи. 
PM MAIL   Вверх
WTF4XZ
Дата 22.7.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 16.4.2007
Где: 63 Самара

Репутация: нет
Всего: 5



Ещё пример тупенькой задачки:

На вход программе подаются строчные английскме буквы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.
Если какие-то буквы встречаются одинаковое количество раз, то они выводятся в алфавитном порядке.
Пример входных данных:
batat.
Вывод:
atb
--------------------
Я создание эмоций, создание способные чувствовать не только эмоции людей но и машин.Я EMO_CODER != FALSE;Никто не знает о нас, но мы есть, мы живём, мы кодим и мы... чувствуем, ипспытываем такие эмоции.. сильнее любого бинарника, мощнее любого ассемблера.
PM MAIL ICQ GTalk Jabber   Вверх
sentry
Дата 24.7.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.1.2007
Где: Москва

Репутация: нет
Всего: 10



Цитата(SoWa @  12.9.2005,  16:15 Найти цитируемый пост)
Дано N, на выход дать матрицу, представляющую из себя магический квадрат со стороной N или выдать, что решений нет.

А это разве для любого N можно сделать?

Цитата(AlexST @  3.8.2006,  18:35 Найти цитируемый пост)
Есть множество точек плоскости, соединить две из них отрезком так, чтобы с обоих сторон отрезка было равное количество точек.

Скорее провести прямую, а не отрезок. Решается через знак отклонения точки от прямой.

Почти задача из той же серии чуть-чуть сложнее:
Вводятся центры окружностей и их радиус, а также точки. Провести через точки прямую, пересекающую максимальное количество окружностей.
PM MAIL   Вверх
Aristarh_Dark
Дата 25.7.2007, 05:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



Цитата(Berd @ 5.8.2006,  06:16)
Для разнообразия тренирующихся.
Где-то когда-то вычитал:
...
"Составить программу, которая печатает сама себя. 
Программа должна иметь как можно меньший размер."
...

Бейсик smile
Код

10 List

PM MAIL   Вверх
zusichka
Дата 10.12.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 10.12.2007

Репутация: нет
Всего: нет



Квадратная матрица, симметричная относительно главной диагонали, заданная верхним треугольником в виде одномерного масива. Возобновить начальную матрицу и напечатать по строкам.

как вам? .решите
PM MAIL   Вверх
mr.Anderson
Дата 16.12.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Цитата
На вход программе подаются строчные английскме буквы. Ввод этих символов заканчивается точкой. Требуется написать программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.
Если какие-то буквы встречаются одинаковое количество раз, то они выводятся в алфавитном порядке.
Пример входных данных:
batat.
Вывод:
atb 

Заинтересовался. Сча попробую сделать...

Это сообщение отредактировал(а) mr.Anderson - 16.12.2007, 17:02


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
mr.Anderson
Дата 16.12.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 1
Всего: 128



Гм. Решил. Но вряд ли решение оптимально, прошу подсказать более правильный вариант.
Код

program engLetters;

{$APPTYPE CONSOLE}

var
 l : array [1..130] of Word;
 i : Word;
 s : String;
 c : Word;
 m : Word;
begin
 fillchar( l, sizeof(l), 0 );

 c := 0;

 readln( s );

 for i:=1 to Length(s) do
 begin
  if( s[i] = '.' ) then
   break;

  inc( l[ ord(s[i]) ] );
  inc( c );
 end;

 m := 0;

 while( c > 0 ) do
 begin
  for i:=1 to 130 do
  begin
   if( l[i] > m ) then
    m := l[i]
   else
    m := m;
  end;

  for i:=1 to 130 do
   if( l[i] = m ) then
   begin
    write( chr(i) );
    l[i] := 0;
   end;

  dec( c );
 end;
end.



--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
klubnichka13
Дата 14.4.2009, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.4.2009

Репутация: нет
Всего: нет



привет!кто-нибудь помогите пожалста!решить задачу:
Описать процедуру StringFileToText(Name) / TextFileToString(Name), преобразующую двоичный строковый в текстовый файл с именем Name, и текстовый в двоичный строковый файл с тем же именем. Используя эту процедуру, преобразовать два данных строковых/текстовых файла с именами Name1 и Name2 в текстовыйе/строковые.
PM MAIL   Вверх
Semmi
Дата 20.7.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.7.2009

Репутация: нет
Всего: нет



Цитата(sgentstuff @ 17.7.2006,  18:47)
Вобщем решил я эту задачку решение ниже.

Предлагаю помимо задач выкладывать также и решения этих задач! Каждый, кто хочет решает задачу, выкладывает свое решение, чтобы можно было посмотреть чье решение эффективнее! В данный момент решаю вот эту задачу, пока не решил, давайте вместе ее решать, потом следующую и т.д., а то умирает эта тема!

Составить  алгоритм  заполнения  прямоугольной таблицы размером N*N целыми числами от 1 до N*N  по  спирали.
Пример для N=5.
1    2    3    4    5
16    17    18    19    6
15    24    25    20    7
14    23    22    21    8
13    12    11    10    9

Ршение
Код

procedure TForm1.Button1Click(Sender: TObject);
const n=4;
var
ur,g,i,s:integer;
a:array[1..n,1..n] of integer;
str:string;
begin
//
g:=1;
s:=0;
while s<>n*n do
begin
        for i:=g to n-g+1 do
        begin
        inc(s);
        a[g,i]:=s;
        end;
        for i:=g to n-g do
        begin
        inc(s);
        a[i+1,n-g+1]:=s;
        end;
        for i:=n-g downto g do
        begin
        inc(s);
        a[n-g+1,i]:=s;
        end;
        for i:=n-g downto g+1 do
        begin
        inc(s);
        a[i,n-(n-g)]:=s;
        end;

inc(g);

end;
for i:=1 to n do
begin
str:='';
for g:=1 to n do
str:=str+IntToStr(a[i,g])+'  ';
memo1.Lines.add(str);
end;
end;

Кто может предложить более изящное решение, чем с 5- циклами?

создаем массив из (n+2)*(n+2) элементов заполненый след образом:
пример для n=3 
00000
0***0
0***0
0***0
00000   и начиная с элемета [2,2] заполняем массив числами 1 до n^2. как только встретили 0 или НЕ *, то меняем направление заполнения.
в итоге один цикл от 1 до n^2
PM MAIL   Вверх
fukusu
Дата 29.1.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 29.1.2010

Репутация: нет
Всего: нет



Цитата(sgentstuff @ 17.7.2006,  18:47)
Вобщем решил я эту задачку решение ниже.

Предлагаю помимо задач выкладывать также и решения этих задач! Каждый, кто хочет решает задачу, выкладывает свое решение, чтобы можно было посмотреть чье решение эффективнее! В данный момент решаю вот эту задачу, пока не решил, давайте вместе ее решать, потом следующую и т.д., а то умирает эта тема!

Составить  алгоритм  заполнения  прямоугольной таблицы размером N*N целыми числами от 1 до N*N  по  спирали.
Пример для N=5.
1    2    3    4    5
16    17    18    19    6
15    24    25    20    7
14    23    22    21    8
13    12    11    10    9

Ршение
Код

procedure TForm1.Button1Click(Sender: TObject);
const n=4;
var
ur,g,i,s:integer;
a:array[1..n,1..n] of integer;
str:string;
begin
//
g:=1;
s:=0;
while s<>n*n do
begin
        for i:=g to n-g+1 do
        begin
        inc(s);
        a[g,i]:=s;
        end;
        for i:=g to n-g do
        begin
        inc(s);
        a[i+1,n-g+1]:=s;
        end;
        for i:=n-g downto g do
        begin
        inc(s);
        a[n-g+1,i]:=s;
        end;
        for i:=n-g downto g+1 do
        begin
        inc(s);
        a[i,n-(n-g)]:=s;
        end;

inc(g);

end;
for i:=1 to n do
begin
str:='';
for g:=1 to n do
str:=str+IntToStr(a[i,g])+'  ';
memo1.Lines.add(str);
end;
end;

Кто может предложить более изящное решение, чем с 5- циклами?

Собственно не совсем паскаль, но сути это не меняет.
Вот решение с одним циклом, причем для случая, когда не квадрат, а прямоугольник (но для квадрата тоже работает smile )
Код

    Dim Arr(20, 20) As Integer
    Dim Orient As Integer
    Dim Col As Integer
    Dim Row As Integer
    Dim Col2 As Integer
    Dim Row2 As Integer
    Dim Sign As Integer
    Dim MoveX As Integer
    Dim MoveY As Integer
    Dim I As Integer, J As Integer
    Dim bChangeDirct As Boolean
    Dim N As Integer
    Dim M As Integer

    N = Range("inputN").Value
    M = Range("inputM").Value
    Orient = 1
    Col = 1
    Row = 0
    I = 0
    bChangeDirct = False
    
    While I < N * M
        Sign = IIf(2 - Orient >= 0, 1, -1)
        MoveX = Orient Mod 2
        MoveY = 1 - MoveX
       
        I = I + 1
        Row = Row + Sign * MoveX
        Col = Col + Sign * MoveY
        Arr(Col, Row) = I
        
        Row2 = Row + Sign * MoveX
        Col2 = Col + Sign * MoveY
        If Row2 > N Or Col2 > M Or Row2 < 1 Or Col2 < 1 Then
            bChangeDirct = True
        Else
            If Arr(Col2, Row2) <> 0 Then bChangeDirct = True
        End If
        
        If bChangeDirct Then
            bChangeDirct = False
            If Orient < 4 Then Orient = Orient + 1 Else Orient = 1
        End If
    Wend

Собственно, считаю решение более изящным
PM MAIL   Вверх
Uliya20
Дата 1.6.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.6.2010

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
LoveMeCozImBLONDE
Дата 1.6.2010, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 27.5.2009

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
jtxstyle
Дата 13.11.2010, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.11.2010

Репутация: нет
Всего: нет



 smile 

PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.1952 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.