Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
23 вариант / Курсовая / Курсовая АиП (отчет).docx
Скачиваний:
168
Добавлен:
16.11.2018
Размер:
320.94 Кб
Скачать

1.3 Схема алгоритма:

Рис. 1

Блок-схема алгоритма главной функции

НАЧАЛО

Вывод сообщения о запросе ответа

Ввод ответа (answer)

Ответ = 1

Да

i=0;i<4;i++

j=0;j<7;j++

Ввод элемента массива

Ответ = 2

Чтение массива из файла

Да

Нет

КОНЕЦ

Рис. 2

Блок-схема алгоритма функции определения способа заполнения массива

НАЧАЛО

НАЧАЛО

sum=0 - сумма, row – переданное значение строки

res – перед. знач. результата, row – перед. знач. строки

i=0;i<4;1

i=0;i<4;1

Запись в файл arr[row-1][i], и res

sum=arr[row-1][i]+sum

КОНЕЦ

КОНЕЦ

Рис. 3

Блок-схема алгоритма функции подсчета суммы в строке

Рис. 4

Блок-схема алгоритма записи результата в файл

НАЧАЛО

i=0;i<4;1

Запись в файл arr[i][j]

КОНЕЦ

j=0;j<4;1

Рис. 5

Блок-схема алгоритма записи массива в файл

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

#include <iostream> // библиотека ввода вывода

#include <Windows.h> // библиотека для корректного отображения кириллицы

#include <cstdlib> // библиотека для вызова функции очистки консоли

#include <fstream> // библиотека для чтения из файла и вывода в файл

using namespace std; // именное пространство std

int answer, sum,row, result, i, j,arr[4][7];

ofstream postIn("output_result.txt"); // создание оператора записи в файл

void firstAnswer(); // функция определения способа заполнения массива

int returnSum(int row){ // функция подсчета суммы в строке

sum = 0;

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

sum = arr[row-1][i] + sum;

}

return sum;

}

void writeTheArrayDown(); // функция записи массива в файл

void writeTheResultDown(int res, int row); // функция записи суммы в файл

int main()

{

SetConsoleCP(1251); // определение кодировки для консоли

SetConsoleOutputCP(1251);

firstAnswer();

start:

system("cls"); //очистка консоли

cout <<"Массив: " << endl; // вывод массива

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

cout << "[\t";

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

if(j==6){

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

}

else{

cout <<arr[i][j] << ", \t";

}

}

cout << "]" << endl;

}

cout << endl;

cout << "Добро пожаловать в программу! Пожалуйста, выберите действие: " << endl << "1 - посчитать сумму элементов в строке" << endl << "2 - выход" << endl;

cin >> answer;

switch(answer){ // перехватываем значение ответа

case 1: // если 1

askRowAgain:

cout << "Введите строку, в которой вы хотите посчитать сумму (от 1 до 4): "; cin >> row;

if((row < 1) || (row > 4)){

cout <<"Номер строки вне диапазона!" << endl;

goto askRowAgain;

}

result = returnSum(row);

cout << "Сумма " << row << "-й строки = " << result << endl;

writeTheResultDown(result, row); // функция записывает результат и строку в файл

askAgain:

cout << "1 - вернуться в меню" << endl <<

"2 - выйти из программы" << endl; cin >> answer;

switch(answer){

case 1:

goto start;

break;

case 2:

goto endProgram;

break;

default:

cout << "Ошибка! Выбранный пункт меню отсутствует!" << endl;

goto askAgain;

break;

}

break;

case 2:

goto endProgram;

break;

default:

cout << "Ошибка! Выбранный пункт меню отсутствует!" << endl;

system("pause");

goto start;

break;

break;

}

endProgram:

writeTheArrayDown();

return 0;

}

void firstAnswer(){

askAgain:

cout << "Желаете ввести массив вручную, или предпочитаете, чтобы массив считался из файла?" << endl << "1 - ввести массив самостоятельно" << endl << "2 - заполнить массив из файла" << endl;

cin >> answer;

switch(answer){

case 1:{

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

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

cout << "ARR[" << i << "][" << j << "]: ";

cin>> arr[i][j];

}

}

break;

}

case 2:{

fstream readFrom("data.txt"); //организация чтения из файла data.txt

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

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

readFrom >> arr[i][j];

}

}

readFrom.close();

break;

}

default:{

cout << "Ошибка! Выбранный пункт меню отсутствует!" << endl;

goto askAgain;

break;

}

}

}

void writeTheArrayDown(){

ofstream postIn("output_array.txt"); //запись в файл output_array.txt

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

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

postIn << arr[i][j] << "\t";

}

postIn << "\n";

}

postIn.close();

}

void writeTheResultDown(int res, int row){

postIn <<"Строка " << row << " : ";

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

postIn<<arr[row-1][i] << "\t";

}

postIn << "Сумма: " << res << "\n";

}

Соседние файлы в папке Курсовая