Контрольная работа по "Основам алгоритмов и программирования"

Автор работы: Пользователь скрыл имя, 18 Декабря 2012 в 14:42, практическая работа

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

Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.
Вводится строка, каждое слово которой отделяется от других слов одним или несколькими пробелами. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран полученный результат.
Создать массив структур, содержащий информацию согласно варианту индивидуального задания. Выполнить задание и вывести на экран полученный результат.

Файлы: 1 файл

ОАиП.doc

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

 

 

 

 

 

 

 

 

 

 

Контрольная работа №2

По основам алгоритмов и программирования

Студента ФЗО БГУИР

Специальность МСТК

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Лабораторная работа №5

Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.

3. Определить сумму отрицательных элементов, расположенных выше побочной диагонали матрицы.

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

int main()

{

int **a;

int m,n,i,j,s;

cout<<"Vvedite razmernost massiva N,M:"<<endl;

cin>>n>>m;

a= new int*[n];

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

a[i]= new int[m];

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

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

{

cout<<"Vvedite a["<<i<<"]["<<j<<"]:";

cin>>a[i][j];

}

cout<<"Massiv A:"<<endl;

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

{

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

cout<< setw(3)<<a[i][j]<<"";

cout<<endl;

}

s=0; 

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

{

for (j=0;j<n-1-i;j++)

if(a[i][j]<0)

s+=a[i][j];

}

    cout<<"Summa="<<s<<"";

cout<<endl;

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

delete [] a[i];

delete []a;

a=NULL;

return 0;

}

Лабораторная  работа №6

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

4. Найти слова с четным количеством символов.

#include <iostream.h>

#include <stdio.h>

#include <string.h>

  int main()

{

char st[100],sl[100];

int mass[100];

int k=0,i,z=0,e=0;

puts("Vvedite stroky");

gets(st);

strcat (st," ");

puts("Slova s chetnim koli4estvom bykv:");

int n=strlen(st);

if (n<2) return 1;

sl[0] ='\0';

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

{

if(st[i] !=' ')

{

k++;

}

else

{

mass[e]=k;

k=0;

e++;

}

}

k=0;

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

{z=mass[i]%2;

if (z==0){

k++;}

}

cout<<k<<endl;

   return 0;

}

Лабораторная работа №7

Создать массив  структур,  содержащий  информацию  согласно  варианту индивидуального  задания. Выполнить  задание и  вывести  на  экран полученный результат.

5. На междугородной АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона абонента. Вывести для заданного города общее время разговоров с ним и сумму.

#include <iostream.h>

#include <conio.h>

#include <string.h>

struct ats

{

double data; //для упрощения  вводиться как число, месяц (12.01)

int kod;

char name_gorod[100];

int time;

int tarif;

int nomer;

};

int main()

{

const int n=2;

ats mass[n+1];

int k=0,i,h=0;

double j=0;

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

{

cout<<"Vvedite daty:"<<endl;

cin>>mass[i].data;

cout<<"Vvedite kod:"<<endl;

cin>>mass[i].kod;

cout<<"Vvedite imya goroda:"<<endl;

cin>>mass[i].name_gorod;

cout<<"Vvedite vremya razgovora:"<<endl;

cin>>mass[i].time;

cout<<"Vvedite tarif:"<<endl;

cin>>mass[i].tarif;

cout<<"Vvedite nomer abonenta:"<<endl;

cin>>mass[i].nomer;

}

cout<<"Imya goroda:"<<endl;

cin>>mass[n+1].name_gorod;

for

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

{

if(!strcmp(mass[n+1].name_gorod,mass[i].name_gorod))

{k+=mass[i].time;

j+=k*mass[i].tarif;

h+=mass[i].time;

k=0;

}

}

cout<<"Vremya:"<<endl;

cout<<h<<endl;

cout<<"Stoimost:"<<endl;

cout<<j<<endl;

_getch();

return 0;

}

Лабораторная работа №8

Вывести на экран таблицу  значений функции y(x) для x, изменяющегося  от

a = 0,1 до b = 1,2 с шагом h = 0,1 (см. лабораторную  работу №3, табл. 3.1).

Вычисление y(x) оформить в виде функции.

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

typedef double(*was)(double, int);

void tabl(double,double,double,was);

double Y (double,int);

int main()

{

cout<<setw(5)<<"x"<<setw(12)<<"y(x)"<<setw(8)<<endl;

tabl(0.1,1.2,0.1,Y);

cout<<endl;

return 0;

}

void tabl(double a, double b,double h, was fun)

{

double summa;

for(double x=a;x<b+h/2;x+=h)

{

summa=fun(x,20);

cout<<setw(5)<<x<<setw(12)<<summa<<endl;

}

}

double Y(double x,int n)

{

double d=pow(x,2-2)/2+1;

for(int i=2;i<=n;i++)

d+=pow(x,2*i-2)/2*i+1;

return d;

}

Лабораторная работа №9

Написать программу  формирования файла, содержащего данные согласно варианту индивидуального  задания. В программе предусмотреть  сохранение вводимых данных в файл и возможность чтения из заранее  сохраненного файла.  Вывести результаты на экран и в текстовый файл.

7. На заводе производится  несколько наименований деталей.  Сведения о деталях, выпущенных  за последний месяц, включает  номер цеха, наименование детали, количество выпущенных деталей.  Вывести информацию о продукции, выпущенной заданным цехом.

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

 

FILE *fl;

 

typedef struct

{

char shop[20];

char name[20];

char number[5];

} TPart;

 

TPart part[30];

char name[20];

int nst = 0;

int Menu();

void Nnf();

void Newf();

void Spisok();

void Opf();

void Resc();

void Resf();

 

int main()

{

while (true)

{

switch (Menu())

{

case 1: Nnf(); break;

case 2: Newf(); break;

case 3: Spisok(); break;

case 4: Opf(); break;

case 5: Resc(); break;

case 6: Resf(); break;

case 7: return 0;

default: puts("Choose right!");

}

puts ("Press any key to continue");

getch ();

system ("cls");

}

}

 

int Menu()

 

{

cout << "Choose:" << endl;

cout << "1. Input file name" << endl;

cout << "2. New file" << endl;

cout << "3. Input data" << endl;

cout << "4. Open file" << endl;

cout << "5. Output result" << endl;

cout << "6. Output in file" << endl;

cout << "7. Exit" << endl;

int i;

cin >> i;

return i;

}

 

void Nnf()

{

cout << "Input file name" << endl;

cin >> name;

}

 

void Newf()

 

{

if ((fl = fopen(name,"wb")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

cout << "OK" << endl;

fclose(fl);

}

 

void Spisok()

{

if ((fl = fopen(name,"rb+")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

cout << "Input number of records" << endl;

cin >> nst;

for (int i=0; i<nst; i++)

{

cout << "Input name of shop: ";

cin >> part[i].shop;

cout << "Input name of part: ";

cin >> part[i].name;

cout << "Input number of parts: ";

cin >> part[i].number;

fwrite (&part[i], sizeof(TPart), 1, fl);

}

fclose (fl);

}

 

void Opf()

{

if ((fl = fopen (name,"rb")) == NULL)

{

cout << "Open error" << endl;

exit(1);

}

nst = 0;

TPart prt;

while (true)

{

int nwrt = fread (&prt, sizeof(TPart), 1, fl);

if (nwrt != 1) break;

part[nst] = prt;

cout << part[nst].shop << " " << part[nst].name << " " << part[nst].number << endl;

nst++;

}

fclose(fl);

}

 

void Resc()

{

cout << "Input name of shop: ";

char str[20];

cin  >> str;

for (int i=0; i<nst; i++)

if (strcmp(part[i].shop, str) == 0)

cout << part[i].shop << " " << part[i].name << " " << part[i].number << endl;

}

 

void Resf()

{

cout << "Input name of shop: ";

char str[20];

cin  >> str;

char namet[30];

FILE *ft;

cout << "Input file name" << endl;

cin >> namet;

if ((ft = fopen (namet,"w")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

char s[80];

for (int i=0; i<nst; i++)

if (strcmp(part[i].shop, str) == 0)

{

strcpy (s, part[i].shop);

strcat (s, " ");

strcat (s, part[i].name);

strcat (s, " ");

strcat (s, part[i].number);

strcat (s, "\n");

fputs (s, ft);

}

fclose(ft);

}

 

Лабораторная  работа №10

В программе, составленной при выполнении лабораторной работы №9, выполнить сортировку заданным методом по неубыванию массива структур по указанному в индивидуальному  задании ключу.

7. Ключ: код детали. Сортировка выбором.

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

 

FILE *fl;

 

typedef struct

{

char shop[20];

char name[20];

char kod[6];

char number[5];

} TPart;

 

TPart part[30];

char name[20];

int nst = 0;

int Menu();

void Nnf();

void Newf();

void Spisok();

void Opf();

void Resc();

void Resf();

void Sort();

int main()

{

while (true)

{

switch (Menu())

{

case 1: Nnf(); break;

case 2: Newf(); break;

case 3: Spisok(); break;

case 4: Opf(); break;

case 5: Resc(); break;

case 6: Resf(); break;

case 7: return 0;

default: puts("Choose right!");

}

puts ("Press any key to continue");

getch ();

system ("cls");

}

}

 

int Menu()

 

{

cout << "Choose:" << endl;

cout << "1. Input file name" << endl;

cout << "2. New file" << endl;

cout << "3. Input data" << endl;

cout << "4. Open file" << endl;

cout << "5. Sort and output result in screen" << endl;

cout << "6. Sort and output result in file" << endl;

cout << "7. Exit" << endl;

int i;

cin >> i;

return i;

}

 

void Nnf()

{

cout << "Input file name" << endl;

cin >> name;

}

 

void Newf()

 

{

if ((fl = fopen(name,"wb")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

cout << "OK" << endl;

fclose(fl);

}

 

void Spisok()

{

if ((fl = fopen(name,"rb+")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

cout << "Input number of records" << endl;

cin >> nst;

for (int i=0; i<nst; i++)

{

cout << "Input name of shop: ";

cin >> part[i].shop;

cout << "Input name of part: ";

cin >> part[i].name;

cout << "Input kod of part: ";

cin >> part[i].kod;

cout << "Input number of parts: ";

cin >> part[i].number;

fwrite (&part[i], sizeof(TPart), 1, fl);

}

fclose (fl);

}

 

void Opf()

{

if ((fl = fopen (name,"rb")) == NULL)

{

cout << "Open error" << endl;

exit(1);

}

nst = 0;

TPart prt;

while (true)

{

int nwrt = fread (&prt, sizeof(TPart), 1, fl);

if (nwrt != 1) break;

part[nst] = prt;

cout << part[nst].shop << " " << part[nst].name << " " << part[nst].kod << " " << part[nst].number << endl;

nst++;

}

fclose(fl);

}

 

void Resc()

{

Sort();

for (int i=0; i<nst; i++)

cout << part[i].shop << " " << part[i].name << " " << part[i].kod << " " << part[i].number << endl;

}

 

void Resf()

{

Sort();

char namet[30];

FILE *ft;

cout << "Input file name" << endl;

cin >> namet;

if ((ft = fopen (namet,"w")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

char s[80];

for (int i=0; i<nst; i++)

{

strcpy (s, part[i].shop);

strcat (s, " ");

strcat (s, part[i].name);

strcat (s, " ");

strcat (s, part[i].kod);

strcat (s, " ");

strcat (s, part[i].number);

strcat (s, "\n");

fputs (s, ft);

}

fclose(ft);

}

 

void Sort()

{

int imin, i, j;

TPart t;

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

{

imin = i;

for (j = i+1; j < nst; j++)

if (atoi (part[imin].kod) > atoi (part[j].kod))

imin = j;

if (imin != i)

{

t = part[imin];

part[imin] = part[i];

part[i] = t;

}

}  

}

 

Лабораторная  работа №11

В программе, составленной при выполнении лабораторной работы №10, найти в отсортированном массиве  структур заданный элемент методами полного перебора, и двоичного  поиска(для упрощения предположить наличие только одного элемента в  массиве с заданными характеристиками).

7. Найти деталь с  кодом 89383.

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

 

FILE *fl;

 

typedef struct

{

char shop[20];

char name[20];

char kod[6];

char number[5];

} TPart;

 

TPart part[30];

char name[20];

int nst = 0;

int Menu();

void Nnf();

void Newf();

void Spisok();

void Opf();

void Resc_s();

void Resf_s();

void Resc_b();

void Resf_b();

int Find_b();

int Find_b();

void Sort();

 

int main()

{

while (true)

{

switch (Menu())

{

case 1: Nnf(); break;

case 2: Newf(); break;

case 3: Spisok(); break;

case 4: Opf(); break;

case 5: Resc_s(); break;

case 6: Resf_s(); break;

case 7: Resc_b(); break;

case 8: Resf_b(); break;   

case 9: return 0;

default: puts("Choose right!");

}

puts ("Press any key to continue");

getch ();

system ("cls");

}

}

 

int Menu()

 

{

cout << "Choose:" << endl;

cout << "1. Input file name" << endl;

cout << "2. New file" << endl;

cout << "3. Input data" << endl;

cout << "4. Open file" << endl;

cout << "5. Find simple and output result in screen" << endl;

cout << "6. Find simple and output result in file" << endl;

cout << "7. Find binary and output result in screen" << endl;

cout << "8. Find binary and output result in file" << endl; 

cout << "9. Exit" << endl;

int i;

cin >> i;

return i;

}

 

void Nnf()

{

cout << "Input file name" << endl;

cin >> name;

}

 

void Newf()

 

{

if ((fl = fopen(name,"wb")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

cout << "OK" << endl;

fclose(fl);

}

 

void Spisok()

{

if ((fl = fopen(name,"rb+")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

cout << "Input number of records" << endl;

cin >> nst;

for (int i=0; i<nst; i++)

{

cout << "Input name of shop: ";

cin >> part[i].shop;

cout << "Input name of part: ";

cin >> part[i].name;

cout << "Input kod of part: ";

cin >> part[i].kod;

cout << "Input number of parts: ";

cin >> part[i].number;

fwrite (&part[i], sizeof(TPart), 1, fl);

}

fclose (fl);

}

 

void Opf()

{

if ((fl = fopen (name,"rb")) == NULL)

{

cout << "Open error" << endl;

exit(1);

}

nst = 0;

TPart prt;

while (true)

{

int nwrt = fread (&prt, sizeof(TPart), 1, fl);

if (nwrt != 1) break;

part[nst] = prt;

cout << part[nst].shop << " " << part[nst].name << " " << part[nst].kod << " " << part[nst].number << endl;

nst++;

}

fclose(fl);

}

 

 

int Find_s()

{

for (int i=0; i<nst; i++)

if ( atoi (part[i].kod) == 89383 )

return i;

}

 

int Find_b()

{

int i = 0, j = nst-1, m;

while (i<j)

{

 

m = (i+j)/2;

if (89383 > atoi (part[m].kod))

i = m+1;

else

j = m;

}

if (atoi (part[i].kod) == 89383 )

return i;

}

 

 

void Resc_s()

{

Sort();

int i=Find_s();

cout << part[i].shop << " " << part[i].name << " " << part[i].kod << " " << part[i].number << endl;

}

 

void Resf_s()

{

Sort();  

char namet[30];

FILE *ft;

cout << "Input file name" << endl;

cin >> namet;

if ((ft = fopen (namet,"w")) == NULL)

{

cout << "Create error" << endl;

exit(1);

}

char s[80];

int i=Find_s();

strcpy (s, part[i].shop);

strcat (s, " ");

strcat (s, part[i].name);

strcat (s, " ");

strcat (s, part[i].kod);

strcat (s, " ");

strcat (s, part[i].number);

strcat (s, "\n");

fputs (s, ft);

fclose(ft);

}

 

void Resc_b()

{

Sort();

int i=Find_b();

cout << part[i].shop << " " << part[i].name << " " << part[i].kod << " " << part[i].number << endl;

}

Информация о работе Контрольная работа по "Основам алгоритмов и программирования"