Основы алгоритмизации и программирования

Автор работы: Пользователь скрыл имя, 11 Января 2014 в 16:34, контрольная работа

Описание работы

Создать программу вычисления указанной величины.
При x = 3.981´10-2, y = –1.625 ´ ´103, z = 0.512 ® a = 1.26185.
Текст программы
#include <vcl.h>
#include <iostream.h>
#include <conio.h>

Файлы: 1 файл

Сашкин отчет.doc

— 214.50 Кб (Скачать файл)

Министерство  образования республики Беларусь

Учреждение  образования

«БЕЛОРУССКИЙ  ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ  И РАДИОЭЛЕКТРОНИКИ»

Институт  информационных технологий

 

 

Специальность Промышленная электроника

 

КОНТРОЛЬНАЯ РАБОТА

 

По курсу основы алгоритмизации и программирования

 

Вариант № 10

 

 

Студент-заочник 1 курса

Группы № 983124

ФИО Горбунов Александр Сергеевич

Адрес г. Минск, пер. Козлова д.16б кв.19

Тел. (033) 6636182

 

 

 

Минск, 2009

 

 

Задание 1. Создать программу вычисления указанной величины.

 

При x = 3.981´10-2, y = –1.625 ´ ´103, z = 0.512  ® a = 1.26185.


 

Блок  схема алгоритма программы

Текст программы

 

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#include <math.h>

 

#pragma hdrstop

 

#pragma argsused

int main(int argc, char* argv[])

{

double x, y, z, a, b, c, rez;

cout << "\n\t x,y,z = " << endl;  

cin >> x >> y >> z;

 

a = pow(2,-x);                                

b = sqrt(pow(fabs(y),1/4)+x);

c = pow(exp(x-1/sin(z)),1/3);

 

rez = a*b*c;

 

cout << "\n x = " << x << "\n y = " << y << "\n z = " << z

<< "\nRezult = " << rez<< endl;

cout << "Press any key ... " << endl;

getch();

 

        return 0;

}

 

Экранные  формы

 

 

 

 

Задание 2. Составить программу для вычисления значения rez в зависимости от поставленного условия. Обратите внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий. 

 rez  =  .

 

 

 

Блок  схема алгоритма программы.

 

 

 Текст программы

 

#include <vcl.h>

#include <iostream.h>

#include <stdio.h>

#include <math.h>

#include <conio.h>

#pragma hdrstop

 

#pragma argsused

int main(int argc, char* argv[])

{

double s, n, e, u,a;

cout  << "\n Input s, n" << endl;         \\ вводим значения s, n

cin >> s >> n ;                                      \\ читаем значения  

 

 if ((fabs(n)/2<s)&&(s<=fabs(n)))               \\ проверка первого условия  

{

u = sqrt(fabs(s*exp(2)- n*exp(-2)));                  \\ вычисление

      cout << " |n|/2 < s <= |n|" << endl;

      cout << "\n\t Rezult U = " << u;              \\ вывод результата

 }

 

  else if    (s>fabs(n))                       \\ проверка второго условия

{

    u = sqrt(fabs(s-n)*pow(sin(s+n),3));           \\ вычисление

    cout << "\n s > |n|" << endl;

    cout << "\n\t Rezult U = " << u;                  \\ вывод результата

}

 

else                                                   \\ вывод сообщения о неверных значениях

cout << "\n Znacheniya ne podxodyat dla ysloviy" << endl;    

 

cout <<"\n Press any key ... " << endl ;

 getch ();

return 0;

}

 

 

Экранные  формы

Если 

 

 

 

Если S  > | N |

 

 

Если значения не подходят под условия

 

 

 

Задание 3. Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.

                          ,    .

Блок  схема алгоритма программы

 

Текст программы

 

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#include <math.h>

#pragma hdrstop

 

#pragma argsused

void fak( double v,double fak);

int main(int argc, char* argv[])

{

double Factorial (int v);

double a, b, x, h, r, s, y, f;

int n, k;

 

cout << " a = 0,1 ,b = 1,h = 0,1,n = 10" << endl;

     cin >> a >> b >> h >> n;

 

for(x = a; x<=b; x+=h) {

                r = s = 0;

 

                for(k = 1; k<=n; k++) {

                        r=pow(x,2*k)/Factorial(2*k);

                        s+=r;

              }

                y=(exp(x)-exp(-x))/2;

                f = fabs(y - s);

 

cout << "\n x= " << x << "  sum= " << s <<"   y= "<< y<<"    f= "<<f;

}

cout << "\nPress any key ... " << endl;

getch();

}

  double Factorial (int v)

{

double f;

if (v<=1)

f = 1 ;

else

f =Factorial(v-1)*v;

return f;

}

Экранные  формы

  
Задание 4. В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:

Сумму модулей  элементов массива, расположенных  после минимального по модулю элемента.

 

Блок схема алгоритма программы.

 

 

 

Текст программы

 

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#include <math.h>

#pragma hdrstop

 

#pragma argsused

int main(int argc, char* argv[])

   {

       int a[20], n, i,i_min, s ;

       cout << "\t Input N (<=20) ";

       cin >> n;

       cout <<"\n\t Massiv A" << endl;

       for(i = 0; i < n; i++) {

                cout << "\t a[ " << i+1 << " ] = ";

                cin >> a[i];

        }

 

          i_min=0;             /* Берем первый элемент за мин*/

           s=0;                     /* Обнуляем сумму */

 

        for(i=1; i<n;i++)           /* Перебираем элементы*/

 

            if(fabs(a[i])>fabs(a[i_min]))  /*Если стоит после минимального прибавить к сумме */

                     s += fabs(a[i]);

            else

                {

                 s=0;

                a[i_min]=fabs(a[i]); }    /*Присваиваем значение минимального*/

 

        cout << "\n min po mod = " << a[i_min] << "\t Summa = " << s << endl;

        cout << "\n Press any key ... " << endl;

        getch();

 

 

        return 0;

}

 

Экранные  формы

 

 

Задание 5. В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение.

Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.

 

Найти число элементов массива > Т и их произведение. Значение Т вводится с клавиатуры.

 

 

Блок  схема алгоритма программы                                              

 

 

 

Текст программы

 

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

 

#pragma hdrstop

#pragma argsused

 

int main(int argc, char* argv[])

{   int Fun_Pr_Kol(int, int,int, int**, int*);     // Описание прототипа функции

 

int **a, i, j, n, m, pr,t, kol;

cout << "\t Input N, M, t : ";

cin >> n >> m >> t;

a = new int*[n];      // Захват памяти под указатели

for(i=0; i<n;i++)

                a[i] = new int[m];   // Захват памяти под элементы

cout <<"\n Input A" << endl;

for(i=0; i<n; i++)

                for(j=0; j<m; j++){

                        cout << "\t a[" << i+1 << "][" << j+1 << "] = ";

                        cin >> a[i][j];

                }

cout <<"\n Matrix A:" << endl;

for(i=0; i<n; i++) {

                for(j=0; j<m; j++)

                        cout << "\t" << a[i][j];

                cout << endl;

}

// Обращение к функции  с указанием фактических аргументов

pr = Fun_Pr_Kol(n, m, t, a, &kol);

cout << "\n Kol-vo = " << kol << "\t Proizv = " << pr << endl;

       delete []a;       // Освобождение памяти

cout << "\n\t Delete !" << endl;

cout << " Press any key ... " << endl;

getch();

 

}

int Fun_Pr_Kol(int a, int b, int t, int **x, int *k)

{

int i, j, p = 1;

*k = 0;

for(i=0; i<a;i++)

         for(j=0; j<b;j++)

                  if(x[i][j]>t ){

                                (*k)++;    // Скобки обязательны

                                p*=x[i][j];

                  }

return p;        }

 

Экранные формы

 

 
Задание 6. Написать программу обработки файла типа запись, содержащую следующие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального задания».

Каждая запись должна содержать следующую информацию о студентах:

– фамилия и  инициалы;

– номер группы;

– оценки за семестр: по физике, математике, информатике, химии;

– средний балл.

Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.

Содержимое  всего файла и результаты решения  индивидуального задания записать в текстовый файл.

Распечатать анкетные данные студентов интересующей вас  группы, имеющих неудовлетворительную оценку (меньше 4).

Текст программы

#include <vcl.h>

#pragma hdrstop

#include <stdio.h>

#include <io.h>

 

struct TZap{

     char FIO[20];

     char group[7];

     double s_b;

     double mat;

     double fiz;

     double inf;

     double xim;

     } Zap;

int size = sizeof(TZap);

FILE *Fz, *Ft;

char File_Zap[] = "zapisi.dat";

char File_Rez[] = "rezult.txt";

void Out(TZap);

 

#pragma argsused

int main(int argc, char* argv[])

{

 

int kod, D_f, i=0, j, kol;

long len;

TZap st, *mas_Z;

Ft = fopen(File_Rez, "w");

while(true) {

         puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0");

         scanf("%d", &kod);

         switch(kod) {

             case 1:

                  if ((Fz=fopen(File_Zap,"wb"))==NULL)  {

                          puts("\n Create ERROR!");

                          return 0;

                  }

              fclose(Fz);

              printf("\n Create New File %s !\n",File_Zap);

             break;

             case 2:

                  Fz = fopen(File_Zap,"ab");

                  printf("\n F.I.O. - ");

                  fflush(stdin);

gets(Zap.FIO);

                                printf("\n Gruppa - ");

                                fflush(stdin);

gets(Zap.group);

                  printf(" Matematika - ");

scanf("%lf", &Zap.mat);

                                printf(" Fizika - ");

scanf("%lf", &Zap.fiz);

                                printf(" Ximiya -  ");

scanf("%lf", &Zap.xim);

                                printf(" Informatika - ");

scanf("%lf", &Zap.inf);

                  fwrite(&Zap, size, 1, Fz);

                  fclose(Fz);

             break;

             case 3:

                 if ((Fz=fopen(File_Zap,"rb"))==NULL)  {

                          puts("\n Open ERROR!");

                          return 0;

                  }

 

                              Fz = fopen(File_Zap,"rb");

                  D_f = fileno(Fz);

len = filelength(D_f);

kol = len/size;

mas_Z = new TZap[kol];

// Считываем записи из файла в динамический массив

           for (i=0; i < kol; i++)

                   fread((mas_Z+i), size, 1, Fz);

           fclose(Fz);

 

// Вывод на экран

                                       printf("\n\t--------- Informations ---------");

                                       printf(" \n\t");

                                       printf("\n\      ------FIO ---------Group---Matematika--Fizika--Ximiya--Informatika--S_bal");

                                       printf("\n\t ");

  // Запись такой же информации в текстовый файл Ft

                                          fprintf(Ft,"\n\t--------- Informations ---------");

                                          fprintf(Ft,"\n ");

                                          fprintf(Ft,"\n\      ------FIO ---------Group---Matematika--Fizika--Ximiya--Informatika--S_bal");

 

             for (i=0; i<kol; i++)

                                                 { mas_Z[i].s_b = (mas_Z[i].mat+mas_Z[i].fiz+mas_Z[i].xim+mas_Z[i].inf)/4;

                                                  Out(mas_Z[i]);  }

              delete []mas_Z;

                                   

                  while(1) {

                      if(!fread(&Zap,size,1,Fz)) break;

                    Out(Zap);

                  }

                  fclose(Fz);

             break;

             case 4:

                  Fz = fopen(File_Zap,"rb");

                  D_f = fileno(Fz);

len = filelength(D_f);

kol = len/size;

mas_Z = new TZap[kol];

// Считываем записи из файла в динамический массив

           for (i=0; i < kol; i++)

                   fread((mas_Z+i), size, 1, Fz);

           fclose(Fz);

//Вывод на  экран 

                  printf("\n\t-----BAL NIGE SREDNEGO-----\n");

                                    printf("\n\     -------FIO ---------Group---Matematika--Fizika--Ximiya--Informatika--S_bal");

                                printf("\n\t ");

// Запись такой  же информации в файл

                                        fprintf(Ft,"\n");

                   fprintf(Ft,"\n\t----- BAL NIGE SREDNEGO -----\n");

                                          fprintf(Ft,"\n\     -------FIO ---------Group---Matematika--Fizika--Ximiya--Informatika--S_bal");

             for (i=0; i<kol; i++)

                                                 { mas_Z[i].s_b = (mas_Z[i].mat+mas_Z[i].fiz+mas_Z[i].xim+mas_Z[i].inf)/4;

                                                      if (mas_Z[i].s_b < 4)

Out(mas_Z[i]);  }

              delete []mas_Z;

                  break;

             case 0:

                  fclose(Ft);

                  return 0;

            }

  }

        return 0;

}

 

//----------------- Функция вывода на экран и в файл --------------------

void Out(TZap z)

{

     printf("\n %20s|%10s| %6.2lf  | %6.2lf | %6.2lf  | %6.2lf | %6.2lf ", z.FIO, z.group, z.mat, z.fiz, z.xim, z.inf, z.s_b);

     fprintf(Ft, "\n %20s|%10s| %6.2lf  | %6.2lf | %6.2lf  | %6.2lf | %6.2lf ", z.FIO, z.group, z.mat, z.fiz, z.xim, z.inf, z.s_b);

}

 

 

Экранные формы

Информация  в текстовом файле 

 


Информация о работе Основы алгоритмизации и программирования