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



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

for(j=1; j<=8; j++)

    {

if(i==Hx&&j==Hy) cout<<’H’;

//проверка дали в тази клетка е конят

else

if(i==Hx-2&&j==Hy+1|| i==Hx-2&&j==Hy-1|| i==Hx+2&&j==Hy+1|| i==Hx+2&&j==Hy-1|| i==Hx+1&&j==Hy-2|| i==Hx-1&&j==Hy-2|| i==Hx+1&&j==Hy+2|| i==Hx-1&&j==Hy+2||) cout<<’X’;

else cout<<’O’;


    }

cout<

    }

    }


Задача 119. Художник

Леонардо Хубавеца бил художник, и като всички и той бил страшно мързелив. В своите картини той много обичал да използва два основни елемента – къщички и елхички. Къщичката била съставена от квадрат като основа и равностранен триъгълник, като покрив (дължината на страната на триъгълника е с 2 знака по-дълга от страната на квадрата). Елхичката има равностранен триъгълник за корона, а броя на символите на стъблото се определя като се раздели страната на триъгълника целочислено на 2. Понеже той творял в много абстрактен стил, тези елементи били съставени от различните символи от компютърната клавиатура. Един ден му писнало да ги рисува самичък и решил да използва така модерните компютърни технологии да му вършат работата. Обадил се на един приятел, който имал връзки с програмисти да му помогне, а той пък се обадил на вас.

Сега от вас се иска да напишете програма HUD.exe, която прочита от клавиатурата 2 числа и 1 символ. Първото число е 1 или 0 и според него трябва да отпечатате къщичка (ако е 0) и елхичка (ако е 1). Второто число (не по-голямо от 20) определя размера на фигурката (дължината на страната на квадрата при къщичката и на триъгълника за елхичката). Между символите, които образуват права линия на един ред се оставя по един интервал. Символа, който се въвежда е този, с който трябва да нарисувате фигурката. Вашата програма трябва да извежда на монитора желаната фигурка.

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

1

5



*

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

*

* *

* *

* *

* * * * *

*

*

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

0

5



*

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

*

* *



* *

* *


* *

* *


* * * * * * *

* *


* *

* *


* * * * *
Задача 120. Триъгълници

В тази задача ще разглеждаме текстове, оформени като “равностранни” триъгълници, съставени от нули и единици, като първите ще наричаме 0-триъгълници, а вторите – 1-триъгълници. Всеки триъгълник има дължина на страната, определена от някакво цяло положително число N, по-голямо или равно на три и не по-голямо от 20. Първият ред на триъгълника се състои от една единствена цифра  (0 или 1, в зависимост от вида му), вторият ред – от две цифри от съответния вид, разделени с един интервал, който е точно под цифрата от първия ред. Третият ред се състои от три цифри от съответния вид, разделени с по един интервал, като интервалите са точно под цифрите от втория ред и т.н., а последният ред е съставен от N цифри от съответния вид, разделени с по един интервал. 0-триъгълниците се изобразяват изправени – първият ред (с една цифра) отгоре, а последния ред (с N цифри отдолу), докато 1-триъгълниците се изобразяват обърнати – редът с една цифра е отдолу, а този с N цифри – отгоре. Задачата е да направите програма TREE, която по зададени цели положителни N и M отпечатва следната конструкция: два 0-триъгълника с дължина на страните N са долепени един до друг в основите си (страните с по N цифри са една до друга, разделени с един интервал), а  1-триъгълник със страна M e спуснат в образувалото се между двата 0-триъгълника пространство (виж примерите).

Програмата трябва да прочете числата N и M от клавиатурата (стандартния вход), а да изведе резултата на екрана (стандартния изход), като най-лявата цифра на конструкцията трябва да бъде в първа позиция на съответния ред на екрана.

ПРИМЕР 1

Вход

5 7


Изход

   1 1 1 1 1 1 1

    1 1 1 1 1 1

     1 1 1 1 1

    0 1 1 1 1 0

   0 0 1 1 1 0 0

  0 0 0 1 1 0 0 0

 0 0 0 0 1 0 0 0 0

0 0 0 0 0 0 0 0 0 0

ПРИМЕР 2   

Вход

5 3


Изход

    0         0

   0 0 1 1 1 0 0

  0 0 0 1 1 0 0 0

 0 0 0 0 1 0 0 0 0

0 0 0 0 0 0 0 0 0 0



Задача 121. Цифри

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



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

234


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

4

3



2

Решение

Лесно можем да определим коя е последната цифра на числото n. За целта е достатъчно да намерим остатъка на n при деление на 10, т.е. n%10. Също така лесно можем да получим число (защо го правим), същото като n, но без последната му цифра. Това ще стане като разделим n на 10, т.е n/10. По този начин можем да кажем, че сме задраскали последната цифра на числото.



  1. За решението на проблема ще е достатъчна само една целочислена променлива int n;, в която ще записваме текущата стойност на числото n.

  1. Като начало програмата трябва да въведе числото n от клавиатурата:

cin>>n;

  1. След въвеждането ще отпечатваме последователно поредната цифра на числото и ще я “задраскваме” от записа му докато свършат всички цифри, т.е. докато числото стане 0. Това може да се реализира с оператор do-while по следния начин:

do

{

cout<

n/=10;

}

while(n);

Текстът на тази програма изглежда така:

//digits.cpp

#include

void main()

{

int n;



cin>>n;

do

{

cout<

n/=10;

}

while(n);



}

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

С помощта на прозореца за проследяване на програми проверете как се променят стойностите на величините в програмата в зависимост от изпълняваните оператори.

Изпълнете файла DIGITS.ЕХЕ с посоченият пример и проверете дали програмата ви връща правилен отговор. Проверете я и с още тестови примери.

Променете програмата така, че тя да извежда на екрана сумата от цифрите на числото.

Какво ще се промени в програмата, ако в условието се изисква да се намери броя на цифрите на числото?

Задача 122. Обратно число

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



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

1234


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

4321


Решение

Нека да разгледаме числото от конкретния пример. То може да се представи по следния начин:

1234=1*103+2*102+3*10+4=((10*1+2)*10+3)*10+4

По същия начин може да се представи и обратното на това число

4321=((10*4+3)*10+2)*10+1

Лесно се вижда как от първото число може да се получи второто – като се отделят цифрите една по една и се добавят към натрупаното до момента число, умножено по 10. В началото обратното число ще има стойност 0 и постепенно цифрите от едното число “ще се прехвърлят” на другото.



  1. Необходими са ни две целочислени променливи: едната int n; – за числото и другата int on; - за обърнатото.

  2. Като начало да въведем числото n.

cin>>n;

  1. След това докато има цифри в числото n ги прехвърляме в on по следния начин:

on=on*10+n%10;

n/=10;


За да прехвърлим всички цифри е необходимо да организираме цикъл, чието тяло ще съдържа горните два оператора и ще завършва, когато свършат цифрите на n, т. е. докато n е различно от 0.

Цикълът ще изглежда по следния начин:



do

{

on=on*10+n%10;



n/=10;

}

while(n);



  1. Накрая извеждаме обърнатото число:

cout<Ето окончателния вид на програмата:

// revert.cpp

#include



void main()

{

int n, on=0;



cin>>n;

do

{

on=on*10+n%10;



n/=10;

}

while(n);



cout<

}

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

С помощта на прозореца за проследяване на програми проверете как се променят стойностите на величините в програмата, в зависимост от изпълняваните оператори.

Изпълнете файла REVERT.ЕХЕ с посоченият пример и проверете дали програмата ви връща правилен отговор. Проверете я и с още тестови примери.

Eдно число се нарича палиндром ако отляво надясно и отдясно наляво се чете по един и същи начин. Променете програмата така, че да извежда на екрана “YES”, ако числото е палиндром и ”NO” – в противен случай..

Задача 123. Да номерираме позициите на цифрите на числото отдясно наляво, започвайки от 1. Тогава първата цифра на числото 234, например, е 4, втората е 3, а третата е 2. Да се състави програма EVENTDIG.CPP, която прочита от клавиатурата цяло число n и извежда на екрана сумата на тези от цифрите му, които са на четни позиции.

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

1234


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

4

Задача 124. При условията на предната задача, да се състави програма ODDDIG.CPP, която прочита от клавиатурата цяло число n и извежда на екрана произведението на тези от цифрите му, които са на нечетни позиции.



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

3456


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

24

Задача 125. Да се състави програма DIGIT1.CPP, която чете от клавиатурата цяло число n и извежда на екрана “YES”, ако като се задраска първата му цифра от ляво надясно се получава число, кратно на 3 и ”NO” в противен случай.



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

12346


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

YES


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

12345


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

NO

Задача 126. Да се състави програма DIGIT2.CPP, която прочита от клавиатурата цяло число n и цяло число k (1<к<5) и извежда на екрана числото, получено като премахнем к-тата цифра на n от лявo надясно.



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

4567 2


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

467


Задача 127. Да се състави програма DIGIT3.CPP, която прочита от клавиатурата цяло число n и цяло число k (1<к<5) и извежда на екрана квадрата на числото, получено като задраскаме к-тата цифра на n от дясно наляво.

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

456 2


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

2116


Упътване: Забележете, че квадрата на числото е твърде голям и не винаги се събира в типа int.




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




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

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