Задача за програмиране 10 Програмно осигуряване на съвремените компютри (обобщение) 13 Системи за програмиране 15



страница6/12
Дата21.11.2017
Размер1.86 Mb.
#35102
ТипЗадача
1   2   3   4   5   6   7   8   9   ...   12
След този анализ напишете програмата самостоятелно.



  1. Задачи за упражнение

Зад. 1 Какъв е резултатът от изпълнение на следните оператори:




int a=3,b=4;




а)


cout<

a+b=7

cout<<”a+b=”<

3+4=7

cout<<”a+b=\n”<

a+b=

7

б) cout<<”1\n1 2\n1 2 3\n”;
Зад. 2 Дадена е програмата: Какво ще се изведе на екрана след изпълнение на програмата? Защо извежда този резултат?

#include



void main()

{

int b:

cout<

}
Зад. 3 Как ще изглежда екрана на монитора след изпълнение на програмата:

#include

void main()

{

int a,b;



cout<<”a=”;cin>>a;

cout<<”b=”;cin>>b;

cout<

cout<

cout<<”Остатъкът от делението на ”<

cout<<’\n’;

}

ако сме задали следните входни данни:



а) 5 и 3; б) 5.7 и 3; в) 5 и 3.5; г)7.1 и 8.6.

Зад. 4 Кои от следните записи са грешни и защо? Поправете грешките, така че да получите изпълними оператори.

а) cin<

б) cin>>10>>a+b>>”c”;

в) cout>>p;



Зад. 5 Какъв ще бъде резултатът от изпълнение на програмния фрагмент:

...


cout<<”a=”;cin>>a;

cout<<”b=”;cin>>b;

cout<

...


Ако:

а) int a,b; и за входни данни разполагаме с числата 17 и -3;

б) float a,b; и за входни данни разполагаме с числата -17 и -3;

в) int a,b; и за входни данни разполагаме с числата -17.9 и 3;

г) int a; float b; и за входни данни разполагаме с числата 17.1 и 3.7;

Зад. 6 Как ще изглежда оператор cout, за да се изведе следната пирамида:














1







1

_

2

1

_

2

_

3



Зад. 7 Да се състави програма plo4ka.cpp, която прочита от клавиатурата широчината a и дължината b на правоъгълен под и широчината c и дължината d на фаянсова плочка и отпечатва минималния брой плочки, необходими за покриване на пода. Приемаме, че ако някъде трябва да се постави част от плочка, е необходимо да се закупи цяла плочка за това място и че плочките могат да се разполагат винаги по един и същи начин – или всички се поставят вертикално, или всички се поставят хоризантално.

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

110 140 20 30



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

30

Зад. 8. В една библиотека имало три вида печатни издания – книги, вестници и списания. Служителите добре знаят, че книгите са а броя, вестниците – b, а списанията – c. За да се подредят на лавиците, обаче, те трябва да се разделят на групи по 15. Да се състави програма BIBLIO.CPP, която прочита от клавиатурата a,b и c и отпечатва броя на купчините книги, вестници и списания.



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

45 25 48


Лабораторен практикум №1

Линейни алгоритми

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

#include

void main()

{

int a,b;

cin>>a>>b;

int c=a+b;

cout<


    }

Изпълнете следните задачи:

  • Съхранете програмата под име SUMA.CPP.

  • Стартирайте програмата със следните входни данни:

a=5, b=6;

a=20, b=30

а=34523, b=1235

и запишете получените резултати.

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


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

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

  • Съхранете програмата под име DIST.CPP

  • Стартирайте програмата със следните входни данни:

Абциса: 34,6

Ордината: 53,7


Абциса: 4

Ордината: 3


Абциса: 34456,678

Ордината: 53678,78

и запишете получените резултати.


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

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

  • Съхранете програмата под име SUMCIF.CPP

  • Стартирайте програмата.

  • Коригирайте програмата, така че да работи и с 5-цифрени числа.

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

Пример: наличността е била 56 кг и 250 г, продадени са 5 кг и 700 г.; при което програмата трябва да изведе 50 кг и 550 г.

  • Съхранете програмата под име SKLAD.CPP

  • Въведете програмата и я тествайте със следните входни данни:

Наличност: 138 кг и 456 г

Продажба: 26 кг и 850 г

Наличност: 23456 кг и 345 г

Продажба: 26789 кг и 850 г

Наличност: 45678 кг и 5689 г

Продажба: 345 кг и 450 г



Проверка на условие. Логически операции. Условна операция. Условен оператор if.

  1. Теоретични бележки

  1. Логически операции

а) аритметични сравнения

В качеството на аритметични сравнения се използват:

> - по-голямо

< - по-малко

>= - по-голямо или равно



<= - по-малко или равно

== - равно

!= - различно

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



б) логически операции

Много често се налага да се комбинират няколко аритметични сравнения едновременно. Например ако искаме да кажем, че едно число трябва да е в интервала от 0 до 5 включително, то трябва да е едновременно по-голямо или равно на 0 и по-малко или равно на 5. В друг случай числото трябва да е извън този интервал: тогава то е по-малко от 0 или по-голямо от 5. Доста често се налага да разглеждаме противното на дадено твърдение. В тези случаи на помощ ни идват логическите операции.

Ще разгледаме основните логически операции. Техните стойности са също цели числа, но също като аритметичните отношения, имат смисъл на истина, ако стойността им е 1 и лъжа – ако стойността им е 0.

Чрез аритметичните отношения и логическите операции се получават тъй наречените логически изрази. Тъй като в езика С++ стойностите на логическите изрази се интерпретират като цели числа, то с логическите операции могат да се свързват и числови изрази. Тази възможност на езика го прави много гъвкав в някои ситуации, което дава възможност за създаване на оригинални и ефективни алгоритми в определени случаи.

В езика С++ са дефинирани следните логически операции:


  • Конюнкция – логическо умножение: означаваме с && и четем “и”.

Тази операция е двуместна, като нейни операнди са логически изрази. Както вече отбелязахме, в качеството на логически израз може да се използва и произволен целочислен израз. В този случай за истина се приема всяка стойност различна от 0, докато нулевата стойност се приема за лъжа. Резултатът от операцията конюнкция е истина само в случаите, когато и двата операнда имат стойност истина. Ако поне един от тях е лъжа – резултатът от операцията е лъжа. В следната таблица е показан резултатът от прилагане на операцията && за всички възможни комбинации от стойности на двата операнда.

x

y

x&&y

0

(лъжа)


0

(лъжа)


0

(лъжа)


0

(лъжа)


0

(истина)


0

(лъжа)


0

(истина)


0

(лъжа)


0

(лъжа)


0

(истина)


0

(истина)


0

(истина)




  • Дизюнкция – логическо събиране: означаваме с || и четем “или”.

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

x

y

x||y

0

(лъжа)


0

(лъжа)


0

(лъжа)


0

(лъжа)


0

(истина)


0

(истина)


0

(истина)


0

(лъжа)


0

(истина)


0

(истина)


0

(истина)


0

(истина)




  • Отрицание – означаваме с ! и четем ”не”.

Операцията е едноместна и в случай, че операндът е лъжа, резултатът от нея е истина и обратно – в случай, че операндът е истина, резултатът от нея е лъжа. Ето и таблицата представяща операцията:

x

!x

0

(лъжа)


0

(истина)


0

(истина)


0

(лъжа)





  1. Условна операция (операция за условен избор)

Позволява да се пресметне дадена стойност в зависимост от това дали е изпълнено дадено условие или не. Тя е триместна операция и операндите в нея се отделят със знаците ? и :. Ето синтаксиса и семантиката на тази операция:

а) Синстаксис (правила за запис):

операнд1 ? операнд2 : операнд3



б) Семантика (правила за изпълнение)

- изчислява се операнд1;

- ако стойността на операнд1 е различна от нула (т.е. истина) се изчислява операнд2 и неговата стойност се приема като резултат от операцията;

- ако стойността на операнд1 е 0 (т.е. лъжа) се изчислява операнд3 и неговата стойност се приема за резултат от операцията;



Пример 1:

1)x>y ? 10:100 или (x>y) ? 10 :100

2)z=(x>y) ? 10 :100

Задача: Да се състави програма MINNUM.CPP , която прочита от клавиатурата три цели числа а,b и c и отпечатва на екрана най-малкото от тези числа.

Решение:

Този алгоритъм беше разгледан вече в темата “Алгоритми” и затова направо ще направим анализ на реализацията му.



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

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

int a,b,c,m;

  1. Като начало, трябва да се въведат трите числа:

cin>>a>>b>>c;

  1. Търсенето на минималното число започва, като се приеме, че това е числото а и се присвоява на променливата m, в която в крайна сметка ще бъде записано минималното от трите числа.

m=a;

  1. На следващата стъпка се сравнява числото b с m и с помощта на условната операция на m се присвоява по-малкото от числата b и m.

m=b

  1. На следващата стъпка се сравнява числото c с m и с помощта на условната операция на m се присвоява по-малкото от числата c и m.

m=c

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

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

//minnum.cpp

#include



void main()

{

int a, b, c, m;



cin>>a>>b>>c;

m=a;


m=m m=m

cout<

}


  1. Условен оператор

Чрез условната операция може да се изчисли една или друга стойност на даден израз в зависимост от това, дали е изпълнено или не даденото условие. Понякога от условие зависи дали да се изпълни или не даден оператор. В този случай условната операция не може да бъде използвана и затова в езика С++, както и във всички останали езици за програмиране, се използва т.нар. условен оператор. Условните оператори реализират разклоняващи се изчислителни процеси (разклонени алгоритми).

а) Пълен условен оператор

Синтаксис(правила за запис):

if (израз) оператор1;

else оператор2;

израз – нарича се условие за преход. Може да бъде допустим за езика израз.

оператор1 и оператор2 – произволни, допустими за езика оператори;

Семантика (правила за изпълнение):

- изчислява се стойността на израза;

- ако стойността на израза е различна от нула (т. е. истина), се изпълнява оператор1;

- ако стойността на израза е равна на нула (т.е. лъжа), се изпълнява оператор2;

- след изпълнението на оператор1 или оператор2 се пристъпва към изпълнението на следващият оператор в програмата, който е записан непосредствено след конструкцията if-else.
Пример 2:

Какъв ще бъде резултата от изпълнението на условният оператор



if (x) cout<<”да”<
else cout<<”не”<за x=3, x=-2, x=0, x=0.12



Отговор: за x=3 резултата е “да”

за x=-2 резултата е “да”

за x=0 резултата е “не”

за x=0.12 резултата е “да”


При работа с if се съобразяваме със следните правила:

- С оператор if-else се избира и изпълнява една от двете взаимноизключващи се възможности. Един от операторите – оператор1 или оператор2, винаги остава неизпълнен.

- Преди else задължително се поставя “;” с изключение на случаите когато преди else е записана затваряща скоба “}”.

- Изразът (условието за преход) задължително се загражда в скоби;

- Условието за преход допуска използването и изчисляването на по-сложни изрази, които могат да включват в себе си операциите за отношение и логическите операции.

- Условният оператор може да се използва многократно в рамките на една програма.

б) Кратък условен оператор

Синтаксис(правила за запис):

if (израз) оператор;

израз – нарича се условие за преход. Може да бъде всеки допустим за езика израз;

оператор – произволен, допустим за езика оператор.

Семантика (правила за изпълнение):

- изчислява се стойността на израза;

- ако стойността на израза е различна от нула (т.е. истина), се изпълнява операторът, след което програмата продължава с изпълнението на следващият оператор в програмата след if;

- ако стойността на израза е нула, програмата продължава с изпълнението на следващият оператор в програмата след if;



в) Съставен оператор

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



Синтаксис(правила за запис):

{

оператор 1;



оператор 2;

оператор n;



}

където оператор 1, оператор 2, ..., оператор n са допустими за езика оператори.



Семантика(правила за изпълнение):

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



  1. Вложени условни оператори

В случаите, когато на мястото на оператор1 и(или) оператор2 в конструкцията if-else се налага използване на друг условен оператор, говорим за вложени условни оператори.

При използване на вложени условни оператори спазваме следните правила:

- Всяко else се съчетава с най-близкият до него неизползван if.

- Текста на програмата се преглежда отляво надясно.

- За по-голяма прегледност в текста на програмата подреждаме всеки else под if-а за който се отнася.

- За да избегнем неправилното съчетаване на else с if е добре да ограждаме вложения условен оператор с {}.



  1. Решени задачи

Задача 1. Уравнение.

Да се състави програма KOREN.СРР, която намира корена на уравнението ax=b, където а и b са числа, въведени от клавиатурата.



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

2 8


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

4

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

0 5

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

Няма решение



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

0 0


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

Всяко х е решение



Решение

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

За решението на задачата са необходими трите дробни променливи a,b и x:

float a, b, x;

  1. В началото коефициентите на уравнението трябва да се въведат от клавиатурата:

cin>>a>>b;

  1. Както вече беше обсъдено в темата “Алгоритми”, решението на уравнението зависи от това дали а е 0 или е различно от 0. Така, че на следващата стъпка се налага да се провери дали а=0:

а/ Ако а=0, се проверява дали b=0:

3.1.1. Ako b=0, на екрана се отпечатва, че всяко х е решение на уравнението.

3.1.2. Ако b0, на екрана се отпечатва, че уравнението няма решение.

б/ Ако а0, се пресмята x=b/a, след което на екрана се отпечатва неговата стойност.

Това на езика С++ се записва чрез следните оператори:

if(a==0)

if(b==0)

cout<<”всяко х е решение\n”;



else

cout<<”няма решение\n”;



else

{

x=b/a;



cout<

}

Тук, веднага след условието на първия оператор if, е вложен още един условен оператор. След клаузата му else е използван съставен оператор, тъй като алгоритъмът, описан по-горе предвижда две действия – пресмятане на х и отпечатването му на екрана.



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

//koren.cpp

#include

void main()

{

float a, b, x;

cin>>a>>b;

if(a==0)

{ if(b==0)

cout<<”Всяко х е решение”<
else

cout<<”Няма решение”<

}


else

{

x=b/a;



cout<<”x=”<

}

}


Задача 2. Квадранти.

Да се състави програма KVAD.CPP, която въвежда от клавиатурата координатите x и y на точка в равнината и отпечатва номера на квадранта, на който тя принадлежи. Ако точката принадлежи на някоя от осите на координатната система, да се изведе ОХ за абсцисната ос и ОУ – за ординатната.



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

2 8


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

І

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

-1 5

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

ІІ

Решение:

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


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

Необходими са ни единствено двете дробни координати на точката:


Каталог: tadmin -> upload -> storage
storage -> Литература на факта. Аналитизъм. Интерпретативни стратегии. Въпроси и задачи
storage -> Лекция №2 Същност на цифровите изображения Въпрос. Основни положения от теория на сигналите
storage -> Лекция 5 система за вторична радиолокация
storage -> Толерантност и етничност в медийния дискурс
storage -> Ethnicity and tolerance in media discourse revisited Desislava St. Cheshmedzhieva-Stoycheva abstract
storage -> Тест №1 Отбележете невярното твърдение за подчертаните думи
storage -> Лекции по Въведение в статистиката
storage -> Търсене на живот във вселената увод
storage -> Еп. Константинови четения – 2010 г някои аспекти на концептуализация на богатството в руски и турски език


Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   12




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

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