К вещественным типам данных языка С относятся:
Вещественный с одинарной точностью float – определяет численные значения с дробной частью обычной точности представления.
Вещественный с двойной точностью double longdouble – определяет численные значения с дробной частью высокой точности представления.
Long – длинный размер типа в байтах, используется для увеличения диапазона возможных значений.
Тип данных Размер памяти, бит Диапазон значений
float (вещественное) 32 от 3.4E–38 до 3.4E38
double (двойное вещественное) 64 от 1.7E–308 до 1.7E308
long double (длинное вещественное) 80 от 3.4E–4932 до 3.4E4932
Пример объявления переменных вещественного типа:
float f = 1,5;
long double a = 100,005698;
4. Составить блок-схему алгоритма и написать текст программы на языке программирования С++ решения циклической задачи по вычислению значения функции на заданном интервале переменной аргумента.
Вариант | Выражение расчёта значения функции |
![]() |
Данные:
Решение:
Начало |
Ввод Mn |
Ввод Mk |
Ввод Mh |
M=Mn |
Цикл ресчёта |
H=F(M) |
Вывод H, M |
M=M+Mh |
M>Mk |
Конец |
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main (int argc, char* argv[])
{float Mn; float Mk;
float Mh; float H, M;
cout << "\nMn="; cin >>Mn;
cout << "\nMk="; cin >>Mk;
cout << "\nMh="; cin >>Mh;
M=Mn;
do {H = -3.33 * pow(M,2) - 8.54 * M + 9.61;
cout << "\nM= " << M << " H= " << H;
M=M+Mh;
} while (M<=Mk);
getch();
return 0; }
Задание 5.
Составить блок-схему алгоритма и написать текст программы на языке программирования С для считывания из типизированного файла заданного типа long int из 25 элементов, с последующей сортировкой элементов массива по возрастанию. Результаты сортировки вывести в текстовый файл имя которого задаётся с клавиатуры.
Вариант | Размер и тип элементов массива | Имя файла результата |
25, long int | Ansver.asc |
Решение:
Начало |
Ввод Name |
Открытие файла F1 |
i от 0 до Size |
Чтение M[i] |
Закрытие файла F1 |
i от 1 до Size |
j от 1 до Size-1 |
M[j]<M[j-1] |
Min=M[j] M[j]=M[j-1] M[j-1]=Min |
Открытие файла F2 |
i от 0 до Size |
Запись M[i] |
Закрытие файла F2 |
Конец |
#include <conio.h>
#include <stdio.h>
#define SIZE 25
long int M[SIZE];
char Name [80];
FILE *F1;
FILE *F2;
int i,j;
short int Min;
int main (int arge,char* argv[])
{ printf("nViberete imya fayla:");
scanf("%s",Name);
F1=fopen(Name,"rb");
for (i=0; i<SIZE; i++)
fscanf(F1,"%hd",&M[i]);
fclose(F1);
for (i=0; i<SIZE; i++)
{for (j=1; j<SIZE; j++)
{if(M[j]<M[j-1])
{Min=M[j];
M[j]=M[j-1];
M[j-1]=Min;
}
}
}
F2=fopen("Ansver.asc","wt");
for (i=0; i<25; i++)
fprintf(F2,"\n%hd",M[i]);
fclose(F2);
getch();
return 0;
}
Задание 6.
Составить блок-схему головного алгоритма и написать текст программы на языке программирования С++ для вычисления значений матрицы-результата путем преобразования значений исходной матрицы согласно заданного выражения. Текст программы следует оформить в виде трёх отдельных подпрограмм-функций. Тип элементов матриц: вещественный (float).
Вариант | Расчётная формула | Размер матрицы |
![]() | 4х3 |
Данные:
Решение:
Начало |
Import (M1) |
Count (M1,M2) |
Outdata (M2) |
Конец |
#include <iostream.h>
#include <math.h>
#include <vcl.h>
#include <conio.h>
#include <iomanip.h>
#pragma hdrstop
//---------------------------------------------------------------------------
int entry(float M[3][4]);
int count(float M1[3][4],float M2[3][4]);
int outdata(float M[3][4]);
#pragma argsused
int main(int argc, char* argv[])
{ float A[3][4], B[3][4];
entry(A);
count(A,B);
outdata(B);
getch();
return 0;
}//----------------------------------------------------
int entry(float M[3][4])
{for(int i=0; i<3; i++)
for(int j=0; j<4; j++)
{ cout << "\nM[" << i << "." << j << "]=";
cin >> M[i][j]; }
return 0;
} //---------------------------------------------
int count(float M1[3][4], float M2[3][4])
{for(int i=0; i<3; i++)
for(int j=0; j<4; j++)
M2[i][j]=(pow(M1[i][j],2))-(pow(M1[i][i],2)*i);
return 0;
} //---------------------------------------------
int outdata(float M[3][4])
{for(int i=0; i<3; i++)
{ for(int j=0; j<4; j++)
cout << setw(8) << M[i][j] << " ";
cout << endl;
}
return 0;
}
Задание 7.
Написать программу для ввода данных с клавиатуры и последующей записи в текстовый файл устройств ПК. Написать модуль, содержащий часть дерева заданного класса, и вызывающую программу. Модуль должен содержать описание базового класса периферийного устройства, от которого наследованием создаются два класса-потомка.
Вариант | Класс-предка | Первый класс-потомок | Второй класс-потомок |
TChip | TCPU | TGPU |
описание структуры классов:
Имя класса | Назначение | Тип и имя поля | Описание поля класса |
TChip | Микросхема | char Name[80] | Наименование устройства |
int Pins | Число контактов корпуса | ||
int Tecnprocess | Технологический процесс в нм | ||
int TDP | Рассеиваемая мощность в Вт | ||
float NVT | Число миллионов транзисторов | ||
TCPU | Центральный процессор | Char Core[80] | Наименование ядра |
Float Hz | Частота системной шины в ГГц | ||
int NCore | Число ядер | ||
TGPU | Графический процессор | int NSP | Число потоковых процессов |
float NverVS | Версия вершинных шейдеров | ||
float NverPS | Версия пиксельных шейдеров |
Main.cpp
#pragma hdrstop
#pragma argsused
#include "MyClass.h"
#include <conio.h>
#include <iostream.h>
int main(int argc, char* argv[])
{ TCPU CPU;
TGPU GPU;
char Name[80];
cout << "\n Vvedite file name: ";
cin >> Name;
cout << "\n CPU: ";
CPU.InitKBDCPU();
CPU.Demo();
CPU.SaveFileCPU(Name);
cout << "\n\n GPU:";
GPU.InitKBDGPU();
GPU.Demo();
GPU.SaveFileGPU(Name);
cout << "\n End programm. Press any key...";
getch();
return 0; }
My class.cpp
#pragma hdrstop
#include "MyClass.h" // Свой класс
#include <fstream.h> // работа с файловыми потоками
#include <iostream.h> // работа с консолью
void TChip::InitKBD() // Ввод данных с клавиатуры 1
{ cout << "\n Naimenovanie ustroystva: ";
cin >> Name;
cout << "\n Chislo kontaktov korpusa: ";
cin >> Pins;
cout << "\n Tehnologich process v nm: ";
cin >> Tecnprocess;
cout << "\n Rasseiv moqnost tepla v Wt: ";
cin >> TDP;
cout << "\n Chislo millionov transitorov: ";
cin >> NVT; }
void TChip::SaveFileM(char *name) // Сохранение полей в указанный файл
{ ofstream fout(name, ios_base::app);
if (!fout)
cout << "\n Error open file!!!";
else {
fout << "Naimenovanie ustroystva: " << Name << endl;
fout << "Chislo kontaktov korpusa: " << Pins << endl;
fout << "Tehnologich process v nm: " << Tecnprocess << endl;
fout << "Rasseiv moqnost tepla v Wt: " << TDP << endl;
fout << "Chislo millionov transitorov: " << NVT << endl;
fout.close(); } }
void TChip::Demo() // Вывод полей класса на экран
{ cout << "Naimenovanie ustroystva: " << Name << endl;
cout << "Chislo kontaktov korpusa: " << Pins << endl;
cout << "Tehnologich process v nm: " << Tecnprocess << endl;
cout << "Rasseiv moqnost tepla v Wt: " << TDP << endl;
cout << "Chislo millionov transitorov: " << NVT << endl; }
void TCPU::InitKBDCPU() // Ввод полей с клавиатуры
{ TChip::InitKBD(); // вызов функции предка
cout << "\n Naimenovanie yadra: ";
cin >> Core;
cout << "\n Chastota sistemnoy shiny v GGz: ";
cin >> Hz;
cout << "\n Chislo yader: ";
cin >> NCore; }
void TCPU::SaveFileCPU(char name[80]) // Сохранение полей в файл
{ TChip::SaveFileM(name); // вызов функции предка
ofstream fout(name, ios_base::app);
if (!fout)
cout << "\n Error open file!!! \a";
else { fout << "\n Naimenovanie yadra: " << Core << endl;
fout << "\n Chastota sistemnoy shiny v GGz: " << Hz << endl;
fout << "\n Chislo yader: " << NCore << endl << "\n";
fout.close(); } }
void TCPU::Demo() // Вывод полей класса на экран
{ TChip::Demo(); // Вызов виртуальной функции из предка
cout << "\n Naimenovanie yadra: " << Core;
cout << "\n Chastota sistemnoy shiny v GGz: " << Hz;
cout << "\n Chislo yader: " << NCore; }
void TGPU::InitKBDGPU() // Ввод полей с клавиатуры
{ TChip::InitKBD();
cout << "\n Chislo potokovih processov: ";
cin >> NSP;
cout << "\n Versiya vershinnyh sheyderov: ";
cin >> NVerVS;
cout << "\n: Versiya pikselnyh sheyderov";
cin >> NVerPS; }
void TGPU::SaveFileGPU(char name[80]) // Сохранение полей в файл
{ TChip::SaveFileM(name);
ofstream fout(name, ios_base::app);
if (!fout)
cout << "\n Error open file!!!";
else {fout << "\n Chislo potokovih processov: " << NSP << endl;
fout << " Versiya vershinnyh sheyderov: " << NVerVS << endl;
fout << " Versiya pikselnyh sheyderov: " << NVerPS << endl;
fout.close(); } }
void TGPU::Demo() // Вывод полей класса на экран
{ TChip::Demo(); // Вызов виртуальной функции из предка
cout << "\n Chislo potokovih processov: " << NSP;
cout << "\n Versiya vershinnyh sheyderov: " << NVerVS;
cout << "\n Versiya pikselnyh sheyderov: " << NVerPS; }
#pragma package(smart_init)
Me class.h
#ifndef MyClassH
#define MyClassH
class TChip // Микросхема
{ protected:
char Name[80]; // Наименование устройства
int Pins; // Число контактов корпуса
int Tecnprocess; // Тех процесс в нм
int TDP; // Рассеиваемая мощность в ВТ
float NVT; // Число миллионов транзисторов
public: // Открытая секция
void InitKBD(); // Ввод данных с клавиатуры
void SaveFileM(char name[80]); // Сохранение полей в указанный файл
virtual void Demo(); // Вывод полей класса на экран }
class TCPU: protected TChip // Центральный процессор
{ protected:
char Core[80]; // Наименование ядра
float Hz; // Частота системной шины в ГГц
int NCore; // Число ядер
public:
void InitKBDCPU(); // Ввод полей с клавиатуры
void SaveFileCPU(char name[80]); // Сохранение полей в указанный файл
void Demo(); // Вывод полей класса на экран };
class TGPU: protected TChip // Графический процессор
{ protected:
int NSP; // Число потоковых процессоров
float NVerVS; // Версия вершинных шейдеров
float NVerPS; // Версия пиксельных шейдеров
public:
void InitKBDGPU(); // Ввод полей с клавиатуры
void SaveFileGPU(char fname[80]); // Сохранение полей в указанный файл
void Demo(); // Вывод полей класса на экран };
#endif
Министерство образования Республики Беларусь Государственное учреждение высшего профессионального образования
«Белорусско-Российский Университет»
Кафедра «Автоматизированные электроприводы»
Контрольная работа №1
По дисциплине «Информатика»
гр. АЭПЗ – 121
Шабловский А.А.
№ зачетной книжки 122853
Могилев 2013