Задача 23. Программа строит на экране простой график затухающих колебаний, определяемый функцией 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Задача 23. Программа строит на экране простой график затухающих колебаний, определяемый функцией



на отрезке [0, 2.16] c шагом d=0.09.

Ось OX графика направлена вертикально вниз, а ось OY – по горизонтали вправо (подразумевается). В каждой строке выводится “кусочек” оси OX (символ | в 40-й колонке экрана) и звездочка – в позиции, соответствующей очередному значению функции. Обратите внимание на формирование переменного формата вывода символа * в функции printf().

 

// Программа отлажена в Visual Studio 2005 (20.04.2008)

#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <math.h>

const int PI = 3.14159;

int main()

{

double x,y,d; int T;

d=0.09; x=0;

while(x <= 2.16)

{

y=exp(-x)*sin(2*PI*x);

T=(int)18*y + 40;

if(y >= 0)

{

printf("%*c",40,'|');

printf("%*c\n",T-40,'*');

}

else

{

printf("%*c",T,'*');

printf("%*c\n",40-T,'|');

}

x=x+d;

}

getch(); return 0;

}

 

Построенный программой график имеет вид, показанный ниже.

 

 

 

 

Задача 24. При таможенном досмотре с пассажира взыскивают госпошлину, которая составляет 5% от общей стоимости провозимых им товаров, если последняя превышает 1400 долларов. Составить программу, которая последовательно вводит по запросу стоимость провозимых товаров для каждого пассажира и вычисляет сумму пошлины.

 

// Программа отлажена в Visual Studio 2008 (2.05.2008)

#include <conio.h>

#include <iostream>

using namespace std;

 

const int LEN=80;

int main()

{

float s,n; char ch;

char fio[LEN];

// Устанавливаем локализацию для выходного потока

wcout.imbue(locale("rus_rus.866"));

// Выводим строку на русском!

 

do

{

wcout<< L"\nВаша фамилия? "; cin>>fio;

wcout<<fio<<L", cтоимость ваших товаров?: ";

cin>>s;

if (s<=0) break;

cout<<fio;

if (s<=1400)

wcout<<L", проходите. Не задерживайте очередь";

else

wcout<<L", платите в кассу $"<<s*0.05;

 

wcout<<L"\nЕсть еще пассажиры(y/n)? ";

ch=getch();

}

while(ch=='y' || ch == 'Y');

getch(); return 0;

}

 

 

Задача 25. Программа выводит на экран кодовую таблицу ASCII в 4 колонки, с использованием постраничного вывода на экран.

 

#include <stdio.h>

#include<conio.h>

int main()

{

int line=1; unsigned char ch;

clrscr();

for (ch=32; ch<255; ch++)

{

printf("%c\t %c - %d",(ch%4 == 0)?'\n ':' ',ch,ch);

line++;

// постраничная печать

if (line/4 == 23)

{

line = 1;

printf("\nДля продолжения -Enter");

getch(); clrscr();

}

}

getch(); return 0;

}

 

 

Задача 26. Программа на чёрном экране пользователя изображает падение букв английского алфавита (с указанием рядом их кода ASCII) по центру экрана на строку, составленную из символов «звёздочка». Причём, на первой строке появляется буква А, при переходе на вторую строку она превращается в В, затем — в С и так далее. Для позиционирования курсора в заданную точку экрана (x, y) в среде Borland C++ Builder использована библиотечная функция gotoxy(x, y).

 

// Программа отлажена в Borland C++ Builder 6

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

int main()

{

clrscr();

int line=1, symbol=65;

while (line<=26)

{

gotoxy(1,26);

cout<<"\t\t\t*****************************************";

gotoxy(39,line);

printf("%c=%d",symbol,symbol);

Sleep(500);

clrscr();

line++; symbol++;

}

getch(); return 0;

}

 

 

Задача 27. Вывести на экран строку из звёздочек, над которой слева направо поочерёдно появляются символы с кодами 001 и 002 кодовой таблицы ASCII, причём это движение сопровождается системным звуком с тоном, меняющимся от 130 гц вверх с шагом 16 гц.

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <dos.h>

int main()

{

int k = 1; char s ='\001', v ='\002';

while (k<=78)

{

clrscr();

gotoxy(1,24);

cout<<"\t\t\t*********************************************";

gotoxy(k,12);

printf("%c",(k%2==0)? s:v);

Beep(130+((k++)-1)*16, 400);

 

}

getch(); return 0;

}

 

 

Задача 28. Символ «*» движется по параболе y = –x 2. Движение начинается в левом нижнем углу экрана, а заканчивается в правом нижнем.

 

// Программа отлажена в Borland C++ Builder 6

#include <conio.h>

#include <iostream.h>

#include <dos.h>

int main()

{

int x,y; float a = -39;

clrscr();

while (a<39)

{ y=a*a/64;

x=a+40;

gotoxy(x,y);

cout<<"*";

Sleep(100);

a++;

}

getch(); return 0;

}

 

 

Задача 29. По преданию, индийский правитель Шерам, большой ценитель шахмат, решил наградить изобретателя шахмат Сета. Тот попросил выдать награду зерном: за первую клетку шахматной доски одно зерно, за вторую – два и т.д., точнее, за каждую следующую клетку – в два раза больше, чем за предыдущую. К удивлению великого раджи, в стране не хватило зерна, чтобы выполнить “скромное ” пожелание изобретателя шахмат. Далее приведена программа, последовательно подсчитывающая количество зерен за каждую клетку и их общее количество за все 64 клетки. Попутно подсчитывается потребное количество зерна в тоннах, исходя из оценки, что 1 кг зерна содержит примерно 4000 зерен.

 

 

// Программа отлажена в Visual Studio 2008

#include<conio.h>

#include<stdio.h>

#include <iostream>

using namespace std;

 

// Раджа и мудрец

int main ()

{

int k=1; double a=1,t,s=0L;

 

t=a/4000000;

while(k<=64)

{

printf("%20d %30.0lf %20.3lf\n",k,a,t);

 

if(k%22==0)

{

printf("Press Enter...\n\n");

getch();

 

}

a=a*2; k=k+1; t=a/4000000;

s=s+t;

}

printf("\n\t TOTAL \t %d \t\t %.3lf",k-1,s);

getch();return 0;

}

 

 

Задача 30. Программа позволяет угадать возраст Вашего дедушки, который может находиться в интервале от 45 до 109 лет. В программе используются две библиотечные функции: функция random(num), где num имеет тип int, возвращает случайное целое значение из диапазона от 0 до (num – 1); функция randomize инициализирует генератор случайных чисел.

 

// Программа отлажена в Borland C++ Builder 6 (май 2008)

#include <stdio.h>

#include <conio.h>

#include <iostream.h>

#include <stdlib.h>

int main()

{

int high,mid,low,k=1,year,found;

char ch;

do

{ randomize();

found = 0;

low = random(10)+45;

high = random(30)+80;

cout<<"Хотите, я угадаю, сколько лет "<<endl;

cout<<"(от "<<low<<" до "<<high<<") Вашему дедушке(y/n)"<<endl;

k=1; getch();

while (low<=high &&!found)

{

mid = (low+high)/2;

cout<<"Вашему дедушке "<<mid<<" лет(y/n)?";

cin>>ch;

if (ch == 'y' || ch == 'Y')

{

cout<<"\n Ура! Я угадал за "<<k<<" попыток";

found = 1;

}

Else

{

m2: cout<<"Больше(>) или меньше(<)? ";

cin>>(ch);

if (ch == '>')

low = mid+1;

Else

if (ch=='<')

high=mid-1;

Else

{

cout<<"Нажмите Shift+знак(< или >)"<<'\n';

goto m2;

}

k++;

}

}

cout<<"\n\n еще(y/n)? ";

ch=getch();

}

while (ch=='y' || ch=='Y');

return 0;

}

 

Задача 31. Разменять заданную сумму денег минимальным количеством купюр, если в обиходе имеются купюры достоинством в 100, 50, 20, 10, 5, 2 и 1 грн.

 

// Программа отлажена в Visual Studio 2008

#include<conio.h>

#include<stdio.h>

#include <iostream>

using namespace std;

 

int main()

{ int d; bool p = false;

cout<<" \nВведите сумму для размена ";

cin>>d;

while(!p)

if (d>=100)

{

d=d-100;

cout<<' '<<100;

}

else if(d>=50)

{

d=d-50;

cout<<' '<<50;

}

else if (d>=20)

{

d=d-20;

cout<<' '<<20;

}

else if(d>=10)

{

d=d-10;

cout<<' '<<10;

}

else if (d>=5)

{

d=d-5;

cout<<' '<<5;

}

else if (d>=2)

{

d=d-2;

cout<<' '<<2;

}

else if (d>=1)

{

d=d-1;

cout<<' '<<1;

}

else p=true;

getch(); return 0;

}

 

 

Задача 32. Пусть требуется открыть в банке R-процентный депозитный счет на на сумму P долларов. Предполагая, что вся прибыль остается на депозите счета, рассчитать и выдать на экран сумму денег A на счете на конец каждого года за N лет. Расчетная формула:

A=P(1+R)N

Это — программа вычисления так называемых сложных процентов, выводящая результат в виде таблицы по годам с итоговой строкой.

#include <iostream.h>

#include <conio.h>

#include <stdio.h>

#include <math.h>

int main()

{

clrscr();

float p, s, r, n, a;

cout<<"Сколько денег Вы сдаёте? ";

cin>>p;

cout<<"На сколько лет? ";

cin>>n;

cout<<"Какова ставка банка в процентах? ";

cin>>r;

cout<<" Годы Вклад на депозите"<<"\n";

for (s = 1; s<=n; s++)

{

a = p*pow((1+r/100),s);

printf("%12.0f %25.2f\n",s,a);

}

cout<<"\n";

printf("Итого %6.0f %25.2f\n",n,a);

getch();

return 0;

}

 

 

Задача 33. Программа производит обратный отсчёт секунд. Для задержки выполнения программы на заданное число миллисекунд использована функция Sleep().

#include <iostream.h>

#include <conio.h>

#include <dos.h>

int main()

{

clrscr();

int m;

for (m=5; m>0; m--)

{

Sleep(1000);

gotoxy(38,20-m);

cout<<m<<" сек.\n";

}

Sleep(1000);

gotoxy(37,21-m);

cout<<"П У С К!";

getch();

return 0;

}

 

Задача 34. В этом примере демонстрируется применение функций text­back­ground (цвет фона) и textcolor (цвет символа), которые определяют цвет фона на экране и цвет выводимых символов соответственно (в среде Borland C++ Builder 6). Для установки подходящего цвета используйте числовые либо символьные константы, приведенные ниже в таблице.

 

 

Символьная константа Числовая константа Определяемый цвет
BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE BLINK   Черный Темно-синий Темно-зеленый Бирюзовый Красный Фиолетовый Коричневый Светло-серый Темно-серый Светло-синий Светло-зеленый Светло-бирюзовый Розовый Малиновый Желтый Белый Мерцание

 

 

Здесь же используется функция создания текстового окна:

Window(x1, y1, x2, y2),

определяющая область экрана, которая в дальнейшем будет рассматриваться функциями вывода как весь экран. Здесь x1, y1 — координаты левого верхнего, а х2, у2 — координаты правого нижнего угла окна. Сразу после выполнения процедуры курсор помещается в левый верхний угол окна, а само окно очищается (заполняется цветом фона). В созданном окне устанавливается локальная система координат (левый верхний угол имеет координаты (1,1)).

 

// Программа отлажена в Borland C++ Builder 6

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

#include<dos.h>

 

void main()

{ char name[20];

textbackground(0);

clrscr();

//Желтые буквы на синем фоне

textbackground(3);

window(1,1,35,11);

textcolor(14); clrscr();

cprintf(" Введи свое имя\n ");

cprintf("\r и нажми Enter ");

scanf(“%s”,name); randomize();

// Случайный выбор цвета

do

{

textbackground(random(7)+1);

window(40,12,75,22);

textcolor(random(15)+1);

clrscr();

gotoxy(6,8);

cprintf("Привет, %s",name);

Sleep(1000);

}

while (!kbhit()); //пока не нажата ни одна клавиша

textmode(3); // Сброс всех установок

getch();

}

 

 

Задача 35. Шуточная программа, производящая обратный отсчёт секунд, а затем создающая иллюзию форматирования диска.

// Программа отлажена в Borland C++ Builder 6

#include <iostream.h>

#include <conio.h>

#include <dos.h>

int main()

{

clrscr();

int m,n; char s=176,t=178;

for (m=5; m>0; m--)

{

Sleep(1000);

gotoxy(38,20-m);

cout<<m<<" sek\n";

}

Sleep(1000);

gotoxy(32,21-m);

cout<<"Formatting disk C: "<<"\n"; Sleep(1000);

gotoxy(27,22-m);

cout<<"All data will be destroyed!"<<"\n";

Sleep(1000);

for (n=1;n<=80;n++)

{

gotoxy(n,23-m);

cout<<s;

}

for (n=1;n<=80;n++)

{

Sleep(200);

gotoxy(n,23-m);

cout<<t;

}

for (n=1;n<=80;n++)

{

gotoxy(n,23-m);

cout<<'.';

}

gotoxy(32,24-m);

cout<<"FORMAT COMPLETED!!!"<<"\n";

getch(); return 0;

}

 

 

Задача 36. Программа реализует так называемый «прогресс-индикатор»: сначала в 12 строке экрана стро­ится линейка из 80 символов, заполненная символом с кодом 176, а затем по этой ли­ней­ке движется символ с кодом 178, закрашенный жёлтым цветом, с задержкой 0.5 сек. Внизу после каждых 8 выведенных символов сообщается об объеме выполненной работы (в %). Предлагаем самостоятельно объединить эту задачу с предыдущей (просто добавить вывод сообщения о мнимом форматировании диска). На синем фоне Windows-окна зрелище не для слабонервных.

 

// Программа отлажена в Borland C++ Builder 6

#include <stdio.h>

#include <conio.h>

#include <dos.h>

#include <iostream.h>

#include <stdlib.h>

int main()

{

int k,i; char c1=176,c2=178;

textbackground(6); //цвет фона

textcolor(14); //цвет символов

clrscr();

//нарисовать дорожку

gotoxy(1,12);

for (i=1;i<=80;i++)

//cout<<c1;

cprintf(“%c”,c1);

//а теперь жёлтый индикатор

for (k=1;k<=80;k++)

{ gotoxy(k,12);

//cout<<c2;

cprintf(“%c”,c2);

 

if (k%8==0)

{ gotoxy(35,15);

//cout<<k/8*10<<"% сделано";

cprintf(“%d % сделано”, k/8*10);

 

}

Sleep(500);

}

getch(); return 0;

}

 

 

Задача 37. Автоморфными называются числа, которые содержатся в младших разрядах их квадрата, например:

52 = 25, 252 = 625



Поделиться:


Последнее изменение этой страницы: 2016-12-16; просмотров: 588; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.197.212 (0.138 с.)