Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <stdlib.h>
- // #include < windows.h >
- #include <conio.h>
- #include <fstream>
- #include <iostream>
- #include <string>
- #include <cstdio>
- using namespace std;
- void print_mass(int* mass, int m) {
- cout << endl << "№" << "\t";
- for (int i = 1; i <= m; i++)
- {
- cout << i << "\t";
- }
- cout << endl << "Эл." << "\t";
- for (int i = 0; i < m; i++)
- {
- cout << mass[i] << "\t";
- }
- cout << endl;
- }
- int main() {
- setlocale(LC_ALL, "rus");
- int * mass;
- int case_num, check = 0, t;
- char a;
- char file_name_out[40];
- char file_name_in[40];
- int n=0; // количество элементов в массиве
- float S1, S2, Smax_znachenie;
- string Smax;
- while (true) {
- cout << "Введите номер команды\n";
- cin >> case_num;
- switch (case_num) {
- case 1: //записывает введенный с клавиатура массив в бинарный файл
- {
- fstream fout;
- cout << "Введите количество эл\n";
- cin >> n;
- mass = new int[n]; //изменение динамического массива
- cout << "Введите сами элементы\n";
- try
- {
- for (int i = 0; i < n; i++) cin >> mass[i];
- }
- catch (int err)
- {
- cout << "Вы вводите неправильные значения";
- break;
- }
- while (!fout.is_open()) {
- cout << "Введите название файла, если файл уже существует, то он будет перезаписан\n";
- cin >> file_name_out;
- fout.open(file_name_out, ios::out | ios::binary);
- }
- for (int i = 0; i < n; i++)
- {
- fout.write((char*)&mass[i], sizeof(mass[i])); //переводим в строку байтов, потом указываем количество байтов, сколько будем записывать
- }
- print_mass(mass, n);
- //проверка если файл уже существует
- fout.close();
- _getch();
- system("cls");
- break;
- }
- case 2:
- {
- fstream fin;
- while (check == 0) {
- cout << "Введите название файла\n";
- cin >> file_name_in;
- fin.open(file_name_in, ios::in | ios::binary);
- if (!fin.is_open()) check = 0;
- else check = 1;
- }
- int *buf = new int;
- n = 0;
- while (!fin.eof()) {
- fin.read((char*)&buf, sizeof(*buf)); // (char*)&buf - адрес переменной buf в памяти | sizeof(*buf) - количество байт которые будет записывать
- //cout << "Считалось: " << (int)buf << endl;
- n++;
- }
- fin.clear();
- fin.seekg(0);
- mass = new int[n]; //изменение динамического массива
- // try catch
- for (int i = 0; i < n; i++)
- {
- fin.read((char*)&buf, sizeof(*buf)); // (char*)&buf - адрес переменной buf в памяти | sizeof(*buf) - количество байт которые будет записывать
- mass[i] = (int)buf;
- }
- n = n - 1;
- cout << "Количество элементов: " << n << endl;
- cout << "Размер массива:" << n*sizeof(int) << endl;
- print_mass(mass, n);
- fin.close();
- _getch();
- system("cls");
- break;
- }
- case 3: {
- print_mass(mass, n);
- _getch();
- system("cls");
- break;
- }
- case 4: {
- S1 = 0; S2 = 0;
- for (int i = 1; i < n - 1; i++)
- {
- S1 = S1 + float(mass[i - 1]) / float(pow(i, 2));
- }
- for (int i = 1; i < n + 1; i++)
- {
- S2 = S2 + float(pow(mass[i - 1], 2));
- }
- if (S1 < S2) {
- Smax = 'S2';
- Smax_znachenie = S2;
- }
- else
- {
- Smax = 'S1';
- Smax_znachenie = S1;
- }
- cout << "Считаем сумму S1 = " << S1 << endl;
- cout << "Считаем сумму S2 = " << S2 << endl;
- cout << "Определяем какая из сумм наибольшая Smax = " << "S" << Smax << " = " << Smax_znachenie;
- _getch();
- system("cls");
- break;
- }
- case 5:
- delete [] mass;
- return 0;
- default: {
- _getch();
- system("cls");
- cout << "Вы ввели неправильный номер команды\n";
- }
- }
- }
- _getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement