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

Тема в разделе "C/C++/C#", создана пользователем Miller85, 7 июн 2011.

  1. Miller85

    Miller85 Гость

    День добрый. Ребят помогите за деньги с задачками... Не успеваю по времени... Надо что бы компилировались в 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. ФАЙЛЫ
    В файле находятся вещественные числа. Определить количество
    элементов файла, величина которых меньше среднего арифметического всех
    элементов данного файла.
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Я бы с удовольствием помог, но к сожалению под Borland C++ 3.1 нет возможности написать и проверить...
    P.S.: да и времени у меня последнее время маловато...
     
Загрузка...
Похожие Темы - Решение задач за
  1. Даниил
    Ответов:
    0
    Просмотров:
    815
  2. sonia2000
    Ответов:
    0
    Просмотров:
    958
  3. Statussrg
    Ответов:
    1
    Просмотров:
    1.066
  4. talon
    Ответов:
    0
    Просмотров:
    1.279
  5. Nataliaw
    Ответов:
    0
    Просмотров:
    915

Поделиться этой страницей