L и височина h. Известно е, че с една кутия боя могат да се боядисат m квадратни единици площ от стената. Напишете програма


Вход 12 11 2 43 77 120 14 92 69 25 131 100 105 Изход



страница3/5
Дата31.12.2017
Размер0.96 Mb.
#38459
ТипЗадача
1   2   3   4   5

Вход


12

11 2 43 77 120 14 92 69 25 131 100 105


Изход


129

Задача 62: Линийка

Виктор има N летвички (2N100) и се пита какви са дължините на най-дългата и най-късата летвичка. За целта решил да използва линийка с дължина 100 см, на която са нанесени деления през 1 см. Оказало се, че дължините на всички летвички са цели числа не надминаващи 100. Виктор обича да си създава трудности и вместо да измерва дължините, започвайки от началото на линийката, поставял единия край на летвичката на произволно деление на линийката и си записвал мястото на двата й края. При това даже не подреждал двете числа по един и същ начин. Сега ще му трябва програма RULER, която да намери най-голямата и най-малката дължина.

Вход

Програмата трябва да въвежда данните от клавиатурата. На първия ред ще бъде зададено числото N, а на всеки от следващите N реда по една двойка цели числа, разделени с интервал – мястото на краищата на една от летвичките върху линийката.

Изход

Програмата трябва да изведе на един ред, разделени с интервал, дължините на най-голямата и най-малката летвичка.

Вход

5

3 9



8 12

15 6


10 19

0 25


Изход

25 4


Решение

Преди да започнем обработката, задаваме като стойност на променливата max най-малката възможна дължина 0, а на променливата min – най-голямата възможна дължина 100. В променливите a1 и a2 въвеждаме двойката числа, показващи местата на краищата на летвичката върху линийката. Тъй като не е указано кой край е първи (този намиращ се по-близо до началото на линийката или по-далечния), проверяваме кое от въведенете числа по-голямо. От него изваждаме другото число, за да намерим дължината на летвичката, която запомняме в променливата а. За пресметнатата дължина проверяваме дали не е по-малка от намерения до момента минимум или по-голяма от намерения до момента максимум и, ако се налага, заменяме старата стойност с новата. Дължината може да намерим и като пресметнем абсолютната стойност на разликата a1–a2 (с функцията abs или като умножим с –1 разликата, ако е отрицателно число) .



I начин: Без да се използва вградената функция abs.

#include

using namespace std;

int main()

{ unsigned short int a1,a2,max=0,min=100,n;

cin>>n;


for(int i=0;i{ cin>>a1>>a2;

if(a1>a2) a=a1-a2;

else a=a2-a1;

if(max

if(min>a1) min=a1;

}

cout<

return 0;

}

II начин: Като се използва вградената функция abs.

#include

using namespace std;

int main()

{ unsigned short int a1,a2,max=0,min=100,n;

cin>>n;

for(int i=0;i

{ cin>>a1>>a2;

a=abs(a1-a2);

if(max

if(min>a1) min=a1;

}

cout<

return 0;

}

Задача 63: Столове



За да се предвиди какъв брой столове е необходим в библиотеката на Агларгонското Училище за Магии, Директорът на училището – Атаранон, наредил да се записва точния час на влизане и излизане на всеки посетител в библиотеката през първия ден на всеки месец. Напишете програма CHAIRS, която пресмята максималния брой посетители, които са се намирали в библиотеката по едно и също време през този ден, ако е известно, че общият им брой е N. Всички посетители влизат и излизат от библиотеката в рамките на деня. Секундите на влизане и на излизане се считат за престой в библиотеката.

Вход

Първият ред от входа съдържа числото N (0≤N≤1000). Следващите N реда съдържат час, минута и секунда на влизане и час, минута и секунда на излизане на поредния посетител, отделени с един интервал. Времето се представя във формат HH:MM:SS, където HH означава часове (00≤HH≤23), MM(00≤MM≤59) означава минути и SS (00≤SS≤59) означава секунди.

Изход

На единствения ред на изхода програмата трябва да изведе максималния брой посетители, които са били в библиотеката в един и същ момент.

Вход

4

08:00:00 10:00:11



09:00:23 14:00:06

11:00:52 13:00:24

11:15:17 13:15:08

Изход

3

По времето от 11:15:17 до 13:00:24 в библиотеката е имало трима посетители.



Задача 64: Екскурзия

Минчо Планинарски тръгнал на планина. За целта той написал бързо един маршрут от обекти, които искал последователно да посети. До всеки от обектите Минчо записал и надморската му височина. Започнал приготовления за похода – раници, обувки и т.н. След 2-3 дни си спомнил за своя списък и решил да види между които две точки от маршрута той ще преодолее най-голяма разлика във височините (независимо дали ще слиза надолу или ще се качва нагоре) – това щяло да му помогне да реши в коя посока да обходи обектите J

Напишете програма TOUR, която по зададен списък от надморски височини определя най-голямата денивелация (разлика във височините) между 2 съседни туристически обекта.

На вход имаме списък с надморските височини на обектите (въвежда се от клавиатура – на всеки ред по едно цяло число между 100 и 9999 ), като не е известен предварително броят им. За сметка на това знаем, че списъкът свършва, когато вместо надморска височина въведем числото 0 (няма обект с такава надморска височина).

На екрана изведете едно цяло положително число – намерената най-голяма денивелация между 2 съседни туристически обекта.

Вход

450


1100

1000


1900

800


1300

1700


2100

2500


2925

2300


0

Изход

1100


Задача 65: Обиколка

Иванчо тръгнал с велосипед на обиколка из България. Всеки ден си записвал колко часа и минути е пътувал и какво разстояние в километри е изминал. Напишете програма cycling, която да изведе общото време, през което Иванчо е карал велосипеда си и номера на деня, когато е карал с най-голяма средна скорост. Средната скорост за деня е равна на разстоянието в метри, което е изминато през деня, разделено на минутите, през които е пътувано.

Вход

Вашата програма прочита от първия ред на стандартния вход броя N на дните. Следват N реда, всеки от които съдържа по три цели числа, разделени с интервали – часовете и минутите на пътуването, и изминатото разстояние в километри.

Изход

На един ред на стандартния изход вашата програма трябва да изведе четири цели числа, разделени с по един интервал: общото време на пътуването във вид на дни, часове и минути, и номера на деня, когато е пътувал с най-голяма средна скорост.

Ограничения: 0 < N < 10

Вход

3

20 15 400



10 30 320

5 0 40


Изход

1 11 45 2



Задача 66: Разлика

Всяко естествено число може да се представи като произведение на две естествени числа, като в някои случаи това може да стане и по различни начини. Например: 7=1·7, 9=1·9;3·3,12=1·12;2·6;3·4 и т.н. Напишете програма raz, която по зададено естествено число N (не по-голямо от 1000000), намира представянето му като произведение на две естествени числа, които имат най-малка разлика.

Вход

От единствения ред на стандартния вход се въвежда числото N.

Изход

Програмата трябва да изведе двете намерените числа на един ред на стандартния изход, подредени в нарастващ ред и разделени с един интервал.

Вход Изход

5 1 5


Вход Изход

25 5 5


Вход Изход

48 6 8


Задача 67: Най-близо

Напишете програма prox, която въвежда три цели положителни числа a, b и c (по-малки от 999) и намира най-близкото число до c, което може да се получи чрез едно от действията събиране или умножение, приложено към а и/или b. Ако съществува повече от едно такова най-близко число, да се изведе най-малкото.

Вход

На единствения ред на стандартния вход се въвеждат числата a, b и c, разделени с интервал.

Изход

На един ред на стандартния изход програмата трябва да изведе намереният най-близък резултат.

Вход Вход

3 5 11 3 5 9



Изход Изход

10 9


Пояснение към пример 1: Всички възможни резултатите от действията, описани в условието на задачата, се получават от изразите 3+5, 3*5, 3+3, 5+5, 3*3, 5*5 и те са съответно равни на 8, 15, 6, 10, 9 и 25. Измежду тях най-близко до 11 е числото 10.

Задача 68: Да се състави програма SIZECHAR.CPP, която отпечатва размера на променлива от тип char в байтове.
Решение:
Тук ще използваме операцията sizeof, с помощта на която ще изведем на екрана количеството памет в байтове, което се заделя за деклариране на променлива от тип char.
//sizechar.cpp
#include

using namespace std;

int

intint main()

{

char ch;

cout<<sizeof(ch)<
return 0;

}

Задача 69: Да се състави програма CHARCODE.CPP, която прочита от клавиатурата буква и отпечатва нейния ASCII-код.



Задача 70: Да се състави програма CODECHAR.CPP, която прочита от клавиатурата цяло число от 0 до 255 и отпечатва буквата, чийто ASCII-код е това число.

Задача 71: Да се състави програма NEXTCHAR.CPP, която прочита от клавиатурата латинска буква и отпечатва следващата след нея в латинската азбука.

Решение:

Достатъчно е към прочетената от клавиатурата буква да добавим единица и да я отпечатаме:

//nextchar.cpp

#include



using namespace std;

int

intint main()

{

char ch;

cin.get(ch);

ch++;


cout<
return 0;

}

Задачата става значително по-интересна, ако поискаме след буквата ‘z’ да се отпечатва буквата ‘а’. Тогава добавянето на единица не винаги ще дава желания резултат. Трябва да имаме предвид, че всички букви от латинската азбука са подредени и имат последователни кодове, като най-малкият от тях е този на буквата ‘a’.



С помощта на следващата операция за присвояване можем да присвоим на променливата int number поредния номер на буквата в латинската азбука:

int number=ch-‘a’;

Освен това е известно, че латинските букви са точно 26 и ако в променливата number е получено число по-голямо от 26, т.е. въведена е буквата ‘z’, от ch може да се получи ‘a’ по следния начин:

ch=’a’ + number%27;

Тази операция ще връща винаги верен резултат, защото:



  1. ако number<27, то е въведена буква между ‘a’ и ’z’. Тогава number%27 е същото число и след като се тобави към ‘a’, се получава точно кода на търсената буква.

  2. ако number>=27, то е въведен ’z’ или някой следващ знак и тогава number%27 е число, което отново сочи поредния номер на дадена буква от латинската азбука. Ако е въведен ’z’, номера е 0, т. е ще бъде отпечатано ‘a’.

Окончателния вид на новата програма е следния:

//nextchar.cpp

#include

using namespace std;

int

intint main()

{

char ch;

cin.get(ch);

ch++;


int number=ch-‘a’;

ch=’a’ + number%26;

cout<

return 0;

}

Задача 72: Да се състави програма NUMCHAR.CPP, която прочита от клавиатурата латинска буква и отпечатва кой номер поред е тя в латинската азбука.
Задача 73: Да се състави програма ALLCAPS.CPP, която прочита от клавиатурата малка латинска буква и отпечатва съответната и главна буква в латинската азбука.

Решение:

Както стана ясно - малките и главните латински букви са подредени и имат последователни кодове. Ако намерим броя букви между ‘a’ и ’A’, той ще е съшия и между ‘b’ и ‘B’ и между буквите на всяка двойка малка и главна латинска буква.

Затова първо се налага да пресметнем разликата между ’A’ и ‘a’ и след това да прибавим тази разлика към прочетената от клавиатурата малка буква. Програмата ще изпълнява следното:

1. Пресмята разликата между ’A’ и ‘a’ и я записва в променливата int d:


int d=’A’ - ‘a’;

2. Прочита от клавиатурата малка латинска буква и я записва в предварително декларираната променлива



char ch;
cin.get(ch);

3. Прибавя към ch, получената в променливата d разлика:

ch+=d;

4. Отпечатва ch, което вече съдържа кода на съответната главна буква.



//allcaps.cpp

#include



using namespace std;

int

intint main()

{

int d=’A’ - ‘a’;



char ch;

cin.get(ch);

ch+=d;
cout<

return 0;



}

Задача 74: Да се състави програма SMALLCAPS.CPP, която прочита от клавиатурата главна латинска буква и отпечатва съответната и малка буква в латинската азбука.

Задача 75: Да се състави програма NUM.CPP, която прочита от клавиатурата две цифри, преобразува ги като числа и отпечатва тяхното произведение.

Задача 76: Да се състави програма NUMCHAR.CPP, която прочита от клавиатурата два реда по три цифри, преобразува ги като числа и отпечатва тяхната сума.
Задача 77. Текст
При подготовката на есенния турнир се обменят много съобщения. Специалната пощенска кутия на турнира била нападната от вируси и заглавията на писмата в нея се разбъркали. За щастие писмата били запазени, но било трудно да се определи по заглавията кои от тях се отнасят за турнира и кои са случайно попаднали (спам). Известно е, че писмата, свързани с турнира имат трибуквени заглавия и задължително съдържат поне една от буквите на съкращението на турнира NET – Национален Есенен Турнир. За да помогнете на организаторите да открият интересуващите ги писма напишете програма NET.CPP, която прочита от клавиатурата три букви и проверява колко от тях се срещат в съкращението NET. Буквите могат да бъдат малки и главни, например “n” и “N” са една и съща буква.

Задача 78. ТЕКСТ

Виктор току що е научил, че една дума се нарича палиндром когато се чете по един и същ начин отляво надясно и отдясно наляво. Такива са думите “капак”, “невен”, “боб” и др. Съставете програма TEXT, която проверява дали зададена дума е палиндром.
Вход
Програмата трябва да прочете зададената дума от клавиатурата. Думата ще бъде съставена от седем букви на латинската азбука (както малки така и главни, като съответните малка и главна буква считаме за еднакви).
Изход
Ако въведената дума е палиндром, програмата трябва да я изведе с главни букви, а ако не е палиндром – с малки.

Задача 79. КОДИРАНЕ
Мая и Мира са ученички в четвърти клас и имат да си казват много тайни неща. Често те си разменят бележки, но се страхуват, че някой може да ги прочете, затова те си измислили таен код. Всяка дума от бележката се пише с английски букви и се кодира, като всяка буква от нея се замества със следващата я в латинската азбука, като буквата “z” се замества с “а”. Всички букви в бележката са малки. Оказало се, че след като са кодирали текста им е трудно да го разчетат. За щастие открили, че в бележката има само четирибуквени думи.

Помогнете на двете момичета, като напишете програма KOD, която чете от клавиатурата дума, съставена от четири малки латински букви и отпечатва думата, чийто код е дадената.

Задача 80: Брой редове.

Да се състави програма ROWCOUNT.CPP, която чете текст докато се въведе точка и отпечатва на екрана броя на редовете в текста.

Задача 81: Думи с еднакви начало и край.

Да се състави програма BEGINEND.CPP, която чете текст, завършващ с точка и отпечатва на екрана броя на думите, на които първата и последната буква съвпадат. Под дума ще разбираме поледователност от знаци разположена между два интервала или между началото на текста и интервал или между интервал и края на текста или между начало на ред и интервал или между интервал и край на ред.
Задача 82: Даден е текст завършващ със знак за край на текст. Да се състави програма KEYTEXT.CPP, която чете текста и отпечатва думата “YES”, ако всяка буква от думата key се среща поне веднъж в текста и броя на срещанията на всяка от буквите в противен случай.

Задача 83: ДУМИ

Изследователите на творчеството на великите писатели се интересуват от някои странни на пръв поглед изчисления. В резултат на това те си правят някои изводи за стила на писателя. Един от тези изследователи се интересува по колко k-буквени думи, започващи с дадена буква rма във всяко едно изречение в творбите на даден писател. Помогнете му като напишете програма, която изчислява този брой

Входни данни:

Програмата прочита от първия ред на стандартния вход цяло число k – дължината на думата и една буква. От втория ред се въвежда едно изречение, съдържащо само букви и интервали и завършващо с точка. Края на всяка дума се отбелязва с интервал. Края на изречението също е край на дума.
Изходни данни:

Програмата отпечатва броя на k-буквените думи в изречението, които започват с дадената буква. Ако такива думи няма, програмата отпечатва 0.

Задача 84: Числа.

Да се напише програма е3, която определя броя на числата в даден текст. Текстът се въвежда от единствения ред на стандартния вход. Състои се от различни знаци, между които може да има цифри и интервали. Текстът завършва с точка. Число в текста е всяка последователност от съседни цифри. На стандартния изход да се изведе броят на числата в текста.
Задача 85: Числа в текст.

От клавиатурата се въвежда текст, съдържащ различни знаци, между които и цели положителни числа, не по-големи от 1000. Да се състави програма SUMNUM.CPP, която чете текст докато се въведе точка и отпечатва на екрана сумата на всички числа в текста.

Задача 86: Линийка 1

На една линийка са отбелязяни две точки, така че да съвпадат с основни(целочислени) деления от нея. Да се състави програма DIST.CPP, която прочита от клавиатурата стойностите на отбелязаните деления и отпечатва дължината на отсечката, определена от двете деления.

Примерен вход:

4 11


Примерен изход:

7

Примерен вход:

21 11

Примерен изход:

10

Решение:

За решението на тази задача се използва функцията abs от библиотеката math.h.

Необходими са три цели променливи, по една за стойността на всяко деление и една за дължината на отсечката – int a,b,d;. След въвеждането на двете дадени числа a и b програмата пресмята дължината по следния начин: d=abs(a+b) и я отпечатва. Тук заедно с въвеждането и усвояването на новите понятия се затвърждават и знанията за познатите вече езикови конструкции – оператори за вход и изход, операции за присвояване, вградени аритметични функции, аритметични операции и др.



Задача 87: Линийка 2

На една линийка са отбелязяни две точки, така че да съвпадат с основни(целочислени) деления от нея. Да се състави програма RATIO.CPP, която прочита от клавиатурата стойностите на отбелязаните деления и отпечатва кое деление между двете отбелязани да се маркира, така че дължините на получените в резултат на това две отсечки да се отнасят както 3 към 4. Отбелязаните деления се въвеждат във възходящ ред, т. е. първото никога не превъзхожда второто.

Примерен вход:

4 11


Примерен изход:

7

Задача 88: Точки



Да се състави програма POINTS.CPP, която въвежда от клавиатурата координатите на две точки с равни абсциси и отпечатва разстоянието между тях.

Примерен вход:

2 4 2 7


Примерен изход:

3

Допълнителна задача:



Коригирайте програма POINTS.CPP, така че да въвежда от клавиатурата координатите на две точки с равни ординати и отпечатва разстоянието между тях.

Задача 89: Обиколка на правоъгълник

Да се състави програма RECTPER.CPP, която въвежда от клавиатурата координатите на горния ляв и долния десен връх на правоъгълник и отпечатва периметъра му.

Примерен вход:

-2 3 2 1


Примерен изход:

12

Задача 90: Лице на правоъгълник



Да се състави програма RECT.cpp, която въвежда от клавиатурата координатите на горния ляв и долния десен връх на правоъгълник и отпечатва лицето му.

Примерен вход:

-2 –5 1 4



Примерен изход:

27

Задача 91: На една линийка са отбелязани две отсечки и са известни деленията, на които се намират техните начални и крайни точки. Съставете програма SEGCOMP.CPP, която прочита от клавиатурата началното и крайното деление на първата отсечка и след това началното и крайното деление на втората отсечка и отпечатва 1, ако първата отсечка е по-голяма от втората; -1, ако птората отсечка е по-голяма от първата и 0 ако дължините им са равни.



Примери:

Вход:

1 6 3 12

1 6 8 8

1 20 3 8

Изход:

-1

0

1

Задача 92: Покриване на отсечки

На една линийка са отбелязани две отсечки и са известни деленията, на които се намират техните начални и крайни точки. Съставете програма COVER.CPP, която прочита от клавиатурата началното и крайното деление на първата отсечка и след това началното и крайното деление на втората отсечка и отпечатва 1, ако двете отсечки се пресичат, 2 – ако нямат общи точки, 3 – ако първата отсечка припокрива втората, 4 - ако втората отсечка припокрива първата и 0 ако двете отсечки съвпадат.

Примери:

Вход:

1 6 3 12

1 6 8 12

1 20 3 8

2 3 2 6

2 3 2 3

Изход:

1

2

3

4

0


Задача 93: Покритие

На една линийка са отбелязани две отсечки и са известни деленията, на които се намират техните начални и крайни точки. Съставете програма COVER1.CPP, която прочита от клавиатурата началното и крайното деление на първата отсечка и след това началното и крайното деление на втората отсечка и отпечатва дължината на тази част от линийката, която се припокрива от поне една от двете отсечки.

Примерен вход:

1 6 3 12


Примерен изход:

12

NO



Задача 94: Квадрант

Да се състави програма KVAD.CPP, която въвежда от клавиатурата координатите x и y на точка в равнината и отпечатва номера на квадранта, на който тя принадлежи.

Решение:

За да определим в кой квадрант се намира точката, трябва да проверим знаците на нейните координатите.



  1. Необходими величини:

Освен двете координати на точката - x и y, ще ни е необходима целочислена променлива k, в която ще запишем номера на квадранта, в който се намира точката:

float x,y; int k ;

  1. Въвеждаме координатите на точката:

cin>>x>>y;

  1. Проверките на знаците на координатите ще извършим с помощта на три вложени оператора if:

if(x>0&&y>0)k=1;

else



if(x<0&&y>0)k=2;

else



if(x<0&&y<0)k=3;

else k=4;



  1. Извеждаме стойността на променливата k:

cout<

Окончателно програмата има следния вид:

//kvad.cpp

#include



using namespace std;

int main()

{

float x,y; int k ;

cin>>x>>y;

if(x>0&&y>0)k=1;



else

if(x<0&&y>0)k=2;

else

if(x<0&&y<0)k=3;

else k=4;

cout<

}
Допълнителна задача:


    Допълнете програмата така, че когато точката се намира на абсцисната ос да отпечатва 5, а когато се намира на ординатната ос - да отпечатва 6.

Задача 95: Да се състави програма POINTRECT.CPP, която въвежда от клавиатурата координатите x и y на точка в равнината и координатите на горния ляв и долния десен връх на правоъгълник и отпечатва “YES”, ако точката принадлежи на правоъгълника и”NO” в противен случай.

Решение:

  1. Необходими величини:

Освен двете координати на точката x и y, са необходими и координатите на горния ляв и долния десен връх на правоъгълника. Всички те са дробни числа:

float x,y,x1,y1,x2,y2;

  1. Въвеждаме координатите на точката и координатите на горния ляв и долния десен ъгъл на правоъгълника:

cin>>x>>y>>x1>>y1>>x2>>y2;

  1. Проверяваме дали точката принадлежи на правоъгълника по начина, който току що описахме:

if(x>x1&&yy2) cout<<”YES\n”;

else cout<<“NO\n”

Ето и текста на програмата:

//pointrect.cpp

#include

using namespace std;

int main()

{

float x,y,x1,y1,x2,y2;

cin>>x>>y>>x1>>y1>>x2>>y2;

if(x>x1&&yy2) cout<<”YES\n”;

else cout<<“NO\n”

}

Допълнителна задача:


    Преобразувайте програмата така, че да въвежда правоъгълника с координатите на долния му ляв и горния десен връх.

Задача 96: Дадени са координатите на долния ляв връх на правоъгълник със страни, успоредни на координатните оси. Известни са и дължините на двете му страни. Да се състави програма RECTPOINT.CPP, която прочита координатите x1 и y1 на долния ляв връх на правоъгълника, дължините a и b на страните му (а е дължината на страната, успоредна на абсцисната ос) и координатите x и y на точка от равнината и отпечатва 0, ако точката лежи на контура на правоъгълника, 1 ако е вътре в него и –1 ако е извън него.

Примери:

Вход:

10 10 8 5 13 11

10 10 8 5 18 11

10 10 8 5 0 0

Изход:

1

0

-1


Задача 97: Даден е квадрат със страна 2, чийто център съвпада с центъра на координатната система. Да се състави програма SQUARE.CPP, която въвежда от клавиатурата координатите х и у на точка в равнината и отпечатва “YES”, ако точката принадлежи на квадрата и “NO” – в противен случай.

Примери:

Вход:

0 0

2 1

Изход:

YES

NO


Задача 98: Мишена

Дадена е квадратна мишена, чийто център съвпада с центъра на координатната система. Да се състави програма TARGET.CPP, която въвежда от клавиатурата координатите х и у на изстрел и отпечатва колко точки получава изстрела, като е известно, че изстрел, попаднал в първи квадрат получава 10 точки, във втори – 5 точки, а в трети – 2 точки. Ако изстрелът е извън мишената, получава 0 точки.
Примерен вход:

0 0


Примерен изход:

10

Примерен вход:

2 1

Примерен изход:

5

Примерен вход:

2 3

Примерен изход:

2

Примерен вход:

4 4

Примерен изход:

0
Задача 99: Сечение и обединение



Дадени са два правоъгълника, долния ляв ъгъл, на които съвпада с началото на координатната система и дължините на техните страни a1, b1, a2 и b2. Да се състави програма impl.cpp, която прочита от клавиатурата последователно координатите на точка в равнината x, y и дължините на страните на двата правоъгълника a1, b1, a2 и b2 и отпечатва 0, ако точката принадлежи едновременно на двата правоъгълника, 1 – ако принадлежи само на един от тях и –1- ако не принадлежи на нито един от тях.

Примерен вход:

2 4 5 2 1 1



Примерен изход:

0

Примерен вход:

7 8 10 10 8 8

Примерен изход:

1

Примерен вход:

1 1 1 1 5 5

Примерен изход:

-1

Задача 100: Дадени са два правоъгълника, така както са показани на фигурата. Да се състави програма RECTS.CPP, която въвежда координатите на посочените върхове на двата правоъгълника, съответно (x1,y1) и (x2,y2) за единия и (a1,b1) и (a2,b2) за другия и отпечатва лицето на общата част, наречена сечение на двата правоъгълника.



Примерен вход:

1 1 5 3


3 2 7 8

Примерен изход:

2

Задача 101: Да се състави програма AREA.CPP, която въвежда от клавиатурата координатите на горния ляв и долния десен връх на два правоъгълника и отпечатва лицето на тяхното обединение. Обединението на два правоъгълника е съставено от всички точки, които принадлежат на поне един от двата правоъгълника.



Примерен вход:

1 1 4 4


3 2 5 4

Примерен изход:

11

Задача 102: Линийка



( Зимни математически състезания 2007 за група Е)

Виктор има N летвички (2  N  100) и се пита какви са дължините на най-дългата и най-късата летвичка. За целта решил да използва линийка с дължина 100 см, на която са нанесени деления през 1 см. Оказало се, че дължините на всички летвички са цели числа не надминаващи 100. Виктор обича да си създава трудности и вместо да измерва дължините, започвайки от началото на линийката, поставял летвичката на произволно място върху линийката и си записвал мястото на двата й края. При това даже не подреждал двете числа по един и същ начин. Сега ще му трябва програма RULER, която да намери най-голямата и най-малката дължина.

Вход

Програмата трябва да въвежда данните от клавиатурата. На първия ред ще бъде зададено числото N, а на всеки от следващите N реда по една двойка цели числа, разделени с интервал – мястото на краищата на една от летвичките върху линийката.

Изход

Програмата трябва да изведе на един ред, разделени с интервал, дължините на най-голямата и най-малката летвичка.

Примерен вход Примерен изход

5 25 4


3 9

8 12


15 6

10 19


0 25

Задача 103: Точки в правоъгълник.

Напишете програма RECTPOINT.CPP, която въвежда от клавиатурата на първия ред координатите на долния ляв и горния десен връх на правоъгълник със страни, успоредни на координатните оси. На всеки от следващите редове програмата въвежда координатите х и y на по една точка в равнината, докато се въведе точката с координати (0,0) и отпечатва броя на точките, които принадлежат на правоъгълника.

Примерен вход

1 1 4 4


2 2

2 3


4 5

4 3


2 1

3 3


0 0

Примерен изход

3

Задача 104: Обединение.



Дадени са два правоъгълника със страни, успоредни на координатните оси и определени с координатите на долния ляв и горния десен връх. Да се състави програма UNITY.CPP, която прочита от клавиатурата на първите два реда координатите на долния ляв и горния десен ъгъл на всеки един от двата правоъгълника и извежда на екрана координатите на всички точки с цели координати в равнината, които принадлежат на обединението на двата правоъгълника.

Примерен вход:

1 1 2 3


2 1 3 4

Примерен изход:

1 1


1 2

1 3


3 1

2 1


2 2

2 3


2 4

3 2


3 3

3 4
Задача 105: Точки.



(Национална олимпиада по информатика – І кръг, група D)

Дадени са правоъгълник със страни успоредни на координатните оси и n точки – M1, M2, ...,Mn. Правоъгълникът е определен чрез координатите на два противоположни върха. Всяка от точките Mi също е зададена чрез своите координати.

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

От първия ред на стандартния вход се въвеждат числата a, c, b, d, където (a,c) и (b,d) са координати на два противоположни върха на правоъгълника. От втория ред се въвежда числото n (n  100). От всеки от следващите n реда се въвеждат координатите xi, yi на поредната точка. Всички координати са цели числа от интервала [-1000,1000].

На стандартния изход да се изведе търсения брой.

Примерен вход:

2 -1 -1 2

4

-3 –2


1 1

1 2


2 3

Примерен изход:

2

Задача 106: Снежинка



(Зимни математически празници – Русе 2006).

Зима е… Навсякъде вали сняг и професор Снежин Снежинков е решил да си направи машина за снежинки с различни размери… Проблемът е, че му трябва програма, която изчертава снежинки с размери от 1 до 10 символа. Напишете програма SNOW в помощ на професора.

Вход: От клавиатурата се въвежда едно число N – големина на снежинката

Изход: Снежинка с големина N.
ПРИМЕР:

Вход:

Изход:

1

*

2

***

*

***



3

* * *

***


*

***


* * *

5

* * *

* * *


* * *

***


*

***


* * *

* * *


* * *

Задача 107: Точност

(Зимни математически празници Варна 2007).



Първият учебен час във всяко училище започва в точно определено време (час и минути). Учениците трябва да са в клас 5 минути преди това. Виктор е любопитен и иска да знае дали ще закъснее за училище, ако майка му го събуди в зададен час и минути. Той знае за колко минути прави сутрешния си тоалет, колко минути закусва, колко минути приготвя чантата си и, че отива до училище за четири пъти повече време от сумарното време за сутрешен тоалет и приготвяне на чантата. Помогнете му да бъде точен. Напишете програма EXACT, която да определи дали Виктор ще закъснее за училище.

Вход

Програмата трябва да въвежда данните от три реда. На първия ред ще бъдат зададени две числа – часът и минутите на започване на учебните занятия. На втория ред също ще бъдат зададени две числа – часът и минутите, когато майката на Виктор го събужда. На третия ред числата са три – необходимия брой минути за сутрешния тоалет на Виктор, необходимия брой минути за закуска и необходимия брой минути за подготовка на чантата. Всички минути във входните данни са цели числа от 0 до 59.

Изход

Програмата трябва да изведе Yes, ако при така зададените времена Виктор ще закъснее за училище и No, ако няма да закъснее.

Примерен вход:

8 0


6 30

7 10 2


Примерен изход: No

Примерен вход:

8 0


7 00

10 7 2


Примерен изход: Yes

Решение:(представяме авторското решение на Пламенка Христова)

От времето на започване на учебните занятия (час h и минути m) изваждаме 5 минути, за да получим в колко часа най-късно Виктор трябва да бъде в училище. Правим това внимателно, защото m може да е по-малко от 5. След това пресмятаме колко време общо е необходимо на Виктор за сутрешен тоалет, закуска, приготвяне на чантата и път до училище (ob). Към това време добавяме и минутите на ставане (wm). След това преобразуваме полученото време на пристигане в училище в нормален вид (час lh=wh+ob/60 и минути lm=ob%60). Това време сравняваме с времето, в което най-късно Виктор трябва да е на училище, за да не закъснее и извеждаме съответно Yes или No. Първо сравняваме двата часа (lh и h) и само когато те са равни, сравняваме и минутите (lm и m).

#include

using namespace std;

int main()

{

int h,m,wh,wm,st,mz,tb,ob,p,lh,lm;

cin>>h>>m;

cin>>wh>>wm;

cin>>st>>mz>>tb;

if (m>=5) m=m-5;

else

{

h=h-1;



m=m+60-5;

}

p=4*(st+tb);



ob=st+mz+tb+p+wm;

lh=wh+ob/60;

lm=ob%60;

if (lh




Сподели с приятели:
1   2   3   4   5




©obuch.info 2024
отнасят до администрацията

    Начална страница