bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [54]
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » СРРиТ / ИКТ (ЦТР) » Другое

Основы алгоритмизации и програмирования Вариант 1
Подробности о скачивании 21.09.2011, 01:48
Задание 1
Написать программу вычисления значения выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом.

Решение:
#include <iostream>
#include <math.h>
using namespace std;

int main()
{
double x, y, z, a, b, c, s;
cout <<"vvedite x:";
cin >> x;
cout <<"Vvedite y:";
cin >> y;
cout <<"Vvedite z:";
cin >> z;
a=2*cos(x-2/3.);
b=1/2.+pow(sin(y),2);
c=1+pow(z,2)/(3-pow(z,2)/5);
s=a/b*c;
cout <<"Result s="<<s<<endl;
return 0;
}



Задание 2
Составить программу вычисления выражения. Предусмотреть вывод информации о выбранной ветви вычислений.

Решение:

#include <iostream>
#include <math.h>
using namespace std;
int main()

{
double x, y, s;
cout <<"Vvedite x:";
cin >> x;
cout <<"Vvedite y:";
double xy=(x*y);
if(xy>0) {
s=pow((x+y),2)-pow(abs(x),1/3.);
cout<<"1 vetv.Result="<<s<<endl;
}
else if (xy<0){
s=pow((x+y),2)+sin(x);
cout<<"2 vetv.Result="<<s<<endl;
}
else {
s=pow((x+y),2)+pow(y,3);
cout<<"3Vetv.Result="<<s<<endl;
}
return 0;
}
Задание 3
Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1. Вычисление y(x) оформить в виде функции. Предусмотреть передачу параметров в функцию разными способами.
1.
Решение:
#include <iostream>
#include <math.h>
using namespace std;
#include <iomanip>
// Прототипы функций
double Summa(double,int); // Передача параметров по значению
void Summa(double*,int*,double*);// Передача параметров по указателю
void Summa(double&,int&,double&); // Передача параметров по ссылке
int main()
{
double s, x, a, b, h;
int n;
cout<<"Vvedite a, b, h, n:"<<endl;
cin>>a>>b>>h>>n; //Ввод значений: 0.1 1.2 0.1 20
// Вывод строки заголовка таблицы
cout<<"\n Value"<<setw(20)<<"Pointer"<<setw(24)<<"Reference\n";
x=a;
do //Начало цикла по x
{ // Вывод таблицы
// Передача параметров по значению
cout<<setw(5)<<x<<setw(10)<<Summa(x,n);

Summa(&x,&n,&s); // Передача параметров по указателю
cout<<setw(10)<<x<<setw(10)<<s ;

Summa(x,n,s); // Передача параметров по ссылке
cout<<setw(10)<<x<<setw(10)<<s<<endl;
x+=h; // Изменение значения x на величину шага h
}
while (x<=b+h/2); // Проверка условия продолжение цикла по x
cout<<endl; // Переход на новую строку
return 0;
}

double Summa(double x,int n) // Передача параметров по значению
{
double s;
int i;
s=1/3.; // Начальное значение при n=1

for(i=1;i<=n;i++) //Вычисление суммы

s+=pow(x,(i-1))/(2*i+1);
return s; // Передача результатов в главную функцию
}
// Передача параметров по указателю
void Summa(double *x,int *n,double *s)
{
int i;
*s=1/3.; // Начальное значение при n=1

for(i=1;i<=*n;i++) // Вычисление суммы

*s +=pow(*x,(i-1))/(2*i+1);
}
// Передача параметров по ссылке
void Summa (double &x, int &n, double &s)
{
int i;
s=1/3.; // Начальное значение при n=1

for(i=1;i<=n;i++) // Вычисление суммы
s+=pow(x,(i-1))/(2*i+1);
}

Задание 4
Ввести одномерный статический массив из k чисел. Найти произведение элементов массива, расположенных между максимальным и минимальным элементами. Вывести на экран исходные данные и полученный результат. Предусмотреть использование функции пользователя.
Решение:
#include <iostream.>
#include <iomanip.>
#include <math.h>
using namespace std;
void MinMax (int a[],int,int*,int*,int*,int*,int*); // прототип функции
int main()
{
int a[10], i, n, min, imin, max, imax, mus;

cout << "Vvedite razmer massiva: "; // Ввод размерности массива
cin >> n;
cout << "\nVvedite massiv:\n";
for (i=0; i<n; i++) // Ввод одномерного массива
{
cout << "Vvedite a[" << i << "]= " ;
cin >> a[i];
}

cout << "\nMassiv a:\n"; // Вывод одномерного массива
for (i=0; i<n; i++)
cout << setw(5) << a[i];
cout << endl;

MinMax (a, n, &min, &max, &imin, &imax, &mus); // Вызов функции

cout << "\nMin=" << min <<setw(8)<<"i="<<imin;
cout << "\nMax=" << max<< setw(8)<<"i="<<imax;
cout << "\nMus=" << mus << endl ;

return 0;
}
// Функция поиска минимального и максимального элементов
// однородного массива и их индексов
// Произведение элементов массива
void MinMax (int a[],int n,int *min,int *max,int *imin,int *imax,int *mus)
{
int i;
*min=*max=a[0]; // Инициализация значений
*mus=1;
int tmp=0;
for (i=1; i<n; i++)
if (a[i]<*min) { // Поиск минимального значения и его индекса
*imin=i;
*min=a[i];
}
else
if (a[i]>*max) { // Поиск максимального элемента и его индекса
*imax=i;
*max=a[i];
}
if (*imax<*imin)
{
tmp=*imax;
*imax=*imin;
*imin=tmp;
}
for (i=*imin+1;i<*imax-1;i++) {
*mus=*mus*a[i];
}
}

Задание 5
Ввести матрицу размером NxM. Память для массива выделить динами-чески. Определить количество положительных элементов, расположенных ни-же побочной диагонали матрицы вывести на экран исходные данные и полученный результат. Предусмотреть в программе функцию пользователя.
Решение:
#include <iostream>
#include <iomanip>

using namespace std;

void main()
{
int i, j;
int nCount = 0;
int nSize, nRow, nColumn, *a;
cout << "chislo strok:";
cin >> nRow;
cout << "Chislo stolbcov:";
cin >> nColumn;
nSize = nColumn * nRow;
//ввод массива
a = new int [nSize];
for (i = 0; i < nRow; ++i)
for(j = 0; j < nColumn; ++j)
{
cout << "A[" << i << "," << j << "]=";
cin >> *(a+i*nColumn + j);
}
//подсчёт элементов
for (i = 0; i < nRow; ++i)
{
for(j = 0; j < nColumn; ++j)
if (( nColumn - j - 1 ) < ( i ))
if ((*(a+i*nColumn + j)) > 0)
nCount++;
}
//вывод массива на экран
for (i = 0; i < nRow; ++i)
{
for(j = 0; j < nColumn; ++j)
cout << setw(5) << *(a+i*nColumn + j);
cout << endl;
}
cout << "chislo polozitelnix elementov nize pobochnoj diogonali=" <<nCount << endl;
}

Задание 6
Написать программу формирования файла, содержащего данные: Список товаров, имеющихся на складе, включает в себя наименование товара, количество единиц товара, цену единицы товара. Вывести список това-ров, стоимость которых превышает 1 000 000 рублей. В программе предусмотреть сохранение вводимых данных в файл и возможность чтения из ранее сохраненного файла. Вывести результаты на экран и в текстовой файл.
Решение:
#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;
typedef struct
{
char szName[100];
int nCount;
double dblCost;
} Ware;
int SelectMenu()
{
cout << "pokozat vse zapisi. Nazmite 1 " << endl;
cout << "pokozat zapisi dla kotorih stoimost > 1000000. Nazmite 2" << endl;
cout << "dobavit novuju zapis. Nazmite 3" << endl;
cout << "Exit iz programi. Nazmite 0" << endl;
return _getch() - '0';
}

void RunMenuItem(int nSelMenu)
{
if (nSelMenu == 1)
{
FILE *fl = fopen("datafile.txt", "rb");
if (!fl)
{
cout << "file s dannimi ne najden." << endl;
return;
}
Ware ware;
while (fread(&ware, sizeof(Ware), 1, fl) == 1)
cout << ware.szName << " " << ware.nCount << " " << ware.dblCost << endl;
fclose(fl);
}else if (nSelMenu == 2)
{

FILE *fl = fopen("datafile.txt", "rb");
if (!fl)
{
cout << "file s dannimi ne najden Ôàéë." << endl;
return;
}
Ware ware;
int a,b;
char filename[100], data[256], chVal[10];
cout << "vvedite imja file dlja vivoda" << endl;
cin >> filename;
FILE *flout = fopen(filename, "w");
while (fread(&ware, sizeof(Ware), 1, fl) == 1)
if (ware.nCount * ware.dblCost > 1000000)
{
cout << ware.szName << " " << ware.nCount << " " << ware.dblCost << endl;
strcpy(data, ware.szName);
strcat(data, " ");
strcat(data, itoa(ware.nCount, chVal, 10));
strcat(data, " ");
strcat(data, fcvt(ware.dblCost, 3, &a, &b));
strcat(data, "\n");
fputs(data, flout);
}
fclose(fl);
fclose(flout);

}else if (nSelMenu == 3)
{
FILE *fl = fopen("datafile.txt", "rb+");
if (!fl)
{
fl = fopen("datafile.txt", "wb");
if (!fl)
{
cout << "nevozmozno sozdat file." << endl;
return;
}
}
Ware ware;
cout << "Vvedite naimenovanie tovara:";
cin >> ware.szName;
cout << "Vvedite kolichestvo tovara:";
cin >> ware.nCount;
cout << "Vvedite stoimost:";
cin >> ware.dblCost;
fseek(fl, 0, SEEK_END);
fwrite(&ware, sizeof(Ware), 1, fl);
fclose(fl);
}else
{
cout << "error vvoda." << endl;
}
}
void main()
{
int nSelMenu;
while (nSelMenu = SelectMenu())
{
RunMenuItem(nSelMenu);
cout << "Press any key to continue" << endl;
_getch();
system("cls");
}
}

Список используемой литературы:
1. М.И. Болски. Язык программирования Си. 1988г.
2. Б.И. Березин. Начальный курс С и С++. М.,2001г.
3. Бьерн Страуструп. Язык программирования С++
4. Интернет ресурсы
Категория: Другое | Добавил: sergej1984
Просмотров: 1545 | Загрузок: 19
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]