Решение задач за деньги

  • Автор темы Miller85
  • Дата начала
M

Miller85

Гость
#1
День добрый. Ребят помогите за деньги с задачками... Не успеваю по времени... Надо что бы компилировались в Borland C++ version 3.1. Я на первом курсе...

1) ЗАДАНИЕ 9. ОБРАБОТКА ДИНАМИЧЕСКИХ МАССИВОВ
Для размещения массивов следует использовать динамическую память.
В матрице удалить столбцы с нулевыми элементами выше главной
диагонали, а затем в качестве первого добавить столбец, элементы которого
равны суммам элементов соответствующих строк.

Пример
//В матрице удалить строки с последними отрицательными элементами,
//а затем добавить строку из сумм элементов по соответствующим столбцам
#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
#include<conio.h>
#include<assert.h>
#define NDEBUG//отмена действия операторов контроля “assert(условие)”
void main()
{
clrscr();
int i,j,n,m,k,q,**ptr;
cout<<"Введите размеры исходной матрицы"<<endl
<<"число строк:";
cin>>n;
cout<<"число столбцов:";
cin>>m;
ptr=new int*[n];
assert(ptr!=0);//контроль выделения динамической памяти
for(i=0;i<n;i++){
ptr=new(int[m]);
assert(ptr!=0);
for(j=0;j<m;j++)
ptr[j]=(rand()-16383)%10;}
cout<<setw(30)<<"Введена матрица:"<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)cout<<setw(4)<<ptr[j];
cout<<endl;}
q=0; //q-номер анализируемой строки
k=0; //k-количество удаленных строк
do{
if(ptr[q][m-1]<0){
for(i=q;i<n-k-1;i++)
for(j=0;j<m;j++)ptr[j]=ptr[i+1][j];
delete[]ptr[n-k-1];
k++;continue;}
q++;}
while(q+k<n);
ptr[n-k]=new(int[m]);
assert(ptr[n-k]!=0);
for(j=0;j<m;j++){
ptr[n-k][j]=0;
for(i=0;i<n-k;i++)
ptr[n-k][j]+=ptr[j];}
cout<<setw(30)<<"Получена матрица:"<<endl;
for(i=0;i<=n-k;i++){
for(j=0;j<m;j++)cout<<setw(4)<<ptr[j];
cout<<endl;}
for(i=0;i<n-k;i++)
delete[]ptr;//освобождение динамической памяти
delete[]ptr;
cout<<endl<<"Конец программы.";
getch();
}

2) ЗАДАНИЕ 10. ПЕРЕЧИСЛЕНИЯ, СТРУКТУРЫ И ОБЪЕДИНЕНИЯ
В результате выполнения задания должны быть разработаны алгоритм
и программа, управляемая с помощью меню. Для организации меню
необходимо использовать тип-перечисление и переключатель switch, в
действиях с комплексными числами (первая часть задания) - тип-
структура, а для вычисления периметров, площадей и объемов фигур и тел
(вторая часть задания) – тип-объединение. Для фигуры вычисляются
периметр и площадь, для тела – площадь поверхности и объём.

1-Умножение равных чисел
2-Сегмент, прямоугольная труба

3)ЗАДАНИЕ 11. РАБОТА С ЭКРАНОМ В ТЕКСТОВОМ РЕЖИМЕ
Ниже дана программа, которая до нажатия Esc повторяет действия:
случайным образом выбирает размеры (соотношение 25х80) и положение
окна на экране, закрашивает его в случайный цвет, помещает в него
двойную рамку и текст “Привет!” со случайным цветом и включает
источник звука со случайной частотой. Все окна полностью размещаются
на экране. Задание: после нажатия Esc Направления движения окна и текста в окне противоположны., а при повторном нажатии Esc прекращает свою работу.
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
char text[]="Привет!";
unsigned int textlen=7, //размер текста
pause=500, //задержка в мсек
maxx=80, maxy=25, //гориз. и верт. размеры экрана
x1, y1, x2, y2, background, color, setblink, freq;
void doubleframe(); //функция формирования двойной рамки
void main()
{
unsigned int minlen;
minlen=textlen+6; //минимальный размер окна по горизонтали
textbackground(0);
clrscr();
do{ //формирование окна
x1=1+random(maxx-minlen); //координата левого верхнего угла
x2=minlen+random(maxx-x1-minlen);//горизонтальный размер окна
y2=x2*maxy/maxx; //вертикальный размер окна
y1=1+random(maxy-y2); //координата левого верхнего угла
window(x1,y1,x1+x2-1,y1+y2-1);
background=random(8); //цвет фона
color=random(16); //цвет символов
setblink=random(2); //мигание
textbackground(background);
clrscr();
textcolor(color+setblink*128);
gotoxy((x2-textlen)/2+1,(y2-1)/2+1);
cout<<text;
doubleframe();
switch (background){ //частота звука связывается с цветом фона
case 0: freq=262;break; //До
case 1: freq=294;break; //Ре
case 2: freq=330;break; //Ми
case 3: freq=349;break; //Фа
case 4: freq=392;break; //Соль
case 5: freq=440;break; //Ля
case 6: freq=494;break; //Си
case 7: freq=524;break;}//До
sound(freq);
delay(pause);
nosound();
}while(!kbhit()); //цикл до нажатия клавиши
window(1,1,80,25); //полный размер экрана
textbackground(0);
textcolor(7);
clrscr();
}
void doubleframe() //формирование двойной рамки
{
int i;
gotoxy(2,1);
cout<<'╔'; //левый верхний угол рамки
for(i=3;i<=x2-2;i++)cout<<'═'; //верхняя часть рамки
cout<<'╗'; //правый верхний угол рамки
for(i=2;i<=y2-1;i++){
gotoxy(2,i);cout<<'║'; //боковые
gotoxy(x2-1,i);cout<<'║';} //части рамки
gotoxy(2,y2);cout<<'╚'; //левый нижний угол рамки
for(i=3;i<=x2-2;i++)cout<<'═'; //нижняя часть рамки
cout<<'╝'; //правый нижний угол рамки
}

4) ЗАДАНИЕ 12. РАБОТА С ЭКРАНОМ В ГРАФИЧЕСКОМ РЕЖИМЕ
Написать программу, которая строит графики функции y=f(x,a) на
интервале c £ x £ d аргумента x при значениях параметра a, взятых из
интервала e £ a £ f, отрисовывает сетку и оси, обозначает и оцифровывает
оси, снабжает графики пояснениями (выражение для функции, значений
параметра с указанием связи с соответствующей кривой) и удовлетворяет
требованию наиболее полного использования экрана.

y = (1-exp(-x/a))cos(1.5x)
с=0
d=2пи
e=1
f=5

Пример
//Вывод на экран семейства кривых y=exp(-k*x)*sin(x),
//где 0 £x £ 4p, k=0.1*j, j=0,..,5;
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<dos.h>
#include<math.h>
#include<graphics.h>
void init_graph() //функция инициализации графического режима
{ int gr_driver, //графический драйвер
gr_mode, //графический режим
er_code; //переменная для значения ошибки
gr_driver=DETECT; //автораспознавание драйвера
initgraph(&gr_driver,&gr_mode,"c:\\bc31\\bgi");
er_code=graphresult();
if(er_code!=grOk) //.., то произошла ошибка
{cout<<"Ошибка инициализации графики:"<<grapherrormsg(er_code);
exit(1);}
}
void main()
{ int i,j,
x0,y0, //начало координат
dx,dy; //шаги для сетки и оцифровки по осям X и Y
double x,y, //текущие значения аргумента и функции
k=0.1; //коэффициент в экспоненте функции
clrscr();
init_graph();
x0=20; y0=getmaxy()/2; //инициализация начала координат
setbkcolor(0);
dx=(getmaxx()-40)/4;
dy=(y0-20)/2;
setcolor(15);
for(i=0;i<=4;i++) //отрисовка сетки
{line(x0,20+i*dy,getmaxx()-20,20+i*dy);
line(x0+i*dx,20,x0+i*dx,getmaxy()-20);}
setlinestyle(0,0,3); //отрисовка осей,
// линия рисования – сплошная, в 3 пикселя толщиной
setcolor(2);
line(x0,20,x0,getmaxy()-20);
line(x0,y0,getmaxx()-20,y0);
settextstyle(0,0,2);
moveto(getmaxx()-30,y0-5);
settextjustify(RIGHT_TEXT,BOTTOM_TEXT);
//обозначение оси X слева и выше от указанной выше точки
outtext("x");
moveto(x0+5,20);
settextjustify(LEFT_TEXT,TOP_TEXT);
//обозначение оси Y справа и ниже от указанной выше точки
outtext("y");
settextjustify(CENTER_TEXT,TOP_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
setcolor(15);
for(i=0;i<5;i++)
{moveto(x0+i*dx,getmaxy()-20);
//оцифровка оси X по центру и ниже указываемых точек
switch(i)
{case 0: {outtext("0"); break;}
case 1: {outtext("M_PI"); break;}
case 2: {outtext("2M_PI"); break;}
case 3: {outtext("3M_PI"); break;}
case 4: {outtext("4M_PI"); break;}}
}
settextjustify(RIGHT_TEXT,CENTER_TEXT);
//оцифровка оси Y слева по центру от указанных ниже точек
settextstyle(DEFAULT_FONT,VERT_DIR,1);
setcolor(15);
for(i=0;i<5;i++)
{moveto(x0-5,20+i*dy);
switch(i)
{case 0: {outtext("1.0"); break;}
case 1: {outtext("0.5"); break;}
case 2: {outtext("0.0"); break;}
case 3: {outtext("-0.5"); break;}
case 4: {outtext("-1.0"); break;}}
}
getch();
setlinestyle(0,0,3);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
for(j=0;j<=5;j++) //отрисовка семейства кривых
{moveto(x0,y0); //начальная точка кривых
setcolor(15-j); //установка цвета кривой
for(i=1;i<getmaxx()-40;i++) //отрисовка кривой
{x=i*4*M_PI/(getmaxx()-40);
y=exp(-k*j*x)*sin(x);
lineto(x0+i,y0-int(y*220));}
//вывод значения параметра функции на поле графиков
moveto(x0+dx/2,y0+20*(j+1));
switch(j)
{case 0: {outtext("k=0.0"); break;}
case 1: {outtext("k=0.1"); break;}
case 2: {outtext("k=0.2"); break;}
case 3: {outtext("k=0.3"); break;}
case 4: {outtext("k=0.4"); break;}
case 5: {outtext("k=0.5"); break;}}
getch();}
//вывод выражения функции на поле графиков
moveto(x0+3*dx/2,20+dy/2);
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtext("y=exp(-kx)*sin(x)");
getch();
closegraph(); //графический режим закрыт
}
5) ЗАДАНИЕ 13. ФАЙЛЫ
В файле находятся вещественные числа. Определить количество
элементов файла, величина которых меньше среднего арифметического всех
элементов данного файла.
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#2
Я бы с удовольствием помог, но к сожалению под Borland C++ 3.1 нет возможности написать и проверить...
P.S.: да и времени у меня последнее время маловато...