Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2014, 21:01   #1
vecto
 
Регистрация: 29.05.2014
Сообщений: 6
Восклицание Написать детализированную блок-схему

Пожалуйста, понимаю, что я такой тут не один. Нужно создать детализированную блок-схему. Естественно, горю, завтра сдавать

Код не маленький, но вроде простой. Прошу скорой помощи

Писал сам, знаю, что можно сделать лучше, но не стал заморачиваться. Дело не в том, что сам не хочу сделать схему, просто времени в обрез, хочется попросить кого-то более опытного в этом деле

Всем заранее огромное спасибо!

Код:
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <climits>
#include <iomanip>
using namespace std;

float keybard_enter(float matrix[4][5])     // Ввод массива с клавиатуры
{
    int i,j;
    for(i=0; i<4; i++)
    {
        for(j=0; j<5; j++)
        {
            cout<<"\nВведите элемент массива:"<<" X["<<i<<"]["<<j<<"] = ";
            cin>>matrix[i][j];
        }
    }
        return matrix[4][5];

}

float file_enter(float matrix[4][5])        //Функция ввода массива из файла
{
     int i,j;
     ifstream F("matrix.txt",ios::in);
        for(i=0; i<4; i++)
        for(j=0; j<5; j++)
        F>>(matrix[i][j]);                  //Записываю элементы из файла в массив
        F.close();                          //Закрываю файл

           cout<<endl;
		   return matrix[4][5];
}

void out_matrix_display(float matrix[4][5])
{
    int i,j;
    cout<<"Массив:\n";
    for(i=0; i<4; i++)
    {
        for(j=0; j<5; j++)
        {
            cout<<fixed<<setprecision(4)<<matrix[i][j]<<" ";
        }
        cout<<endl;
    }
}

void out_matrix_file(float matrix[4][5])
{
    int i,j;
    ofstream F("end_matrix.txt",ios::app);  //открываю файл для записи
             F<<"Конечная матрица: \n";
	    for(i=0; i<4; i++)
	    {
             F<<"\n";
		for(j=0; j<5; j++)
            {
             F<<fixed<<setprecision(4)<<matrix[i][j]<<"  "; //обеспечиваю запись в виде матрицы [4x5]
            }
	    }
	    F<<endl<<endl;
        F.close ();                         //Закрываю файл
	cout<<"\nФайлы успешно созданы!\n\n";
}

void min_el_matrix(float matrix[4][5])
{
	int i,j;
	for(;;)
    {
    float min=INT_MAX;
    int N=0;
	cout<<"Введите номер строки, в которой нужно найти минимальный элемент:\n";
	cin>>N;

	    if (N>0 && N<=4)
{
        for(i=0; i<4; i++)
    {
        for (j=0; j<5; j++)
            {
                if(matrix[N-1][j]<min)
                    min=matrix[N-1][j];
            }
    }
ofstream F("min_max.txt",ios::app);
	F<<"Минимальный элемент "<<fixed<<setprecision(4)<<N<<" строки:\n\n"<<min<<"\n";
	F.close();

cout<<"Минимальный элемент "<<N<<" строки:\n\n";
    cout<<min<<endl;

cout<<"\nНайти минимальный элемент в другой строке? (Y/N)\n\n";
    char ch;
    cin>>ch;
    if (ch!='Y')
    {
    break;
    }

}
    else

    {
        cout << "Ошибка! Такой строки нет. Повторите ввод.\n\n";
    }
    }
}

void max_el_matrix(float matrix[4][5])
{
	int i,j;
	for(;;)
    {
    float max=0;
    int N=0;
	cout<<"\nВведите номер строки, в которой нужно найти максимальный элемент:\n";
	cin>>N;

	    if (N>0 && N<=4)
{
        for(i=0; i<4; i++)
    {
        for (j=0; j<5; j++)
            {
                if(matrix[N-1][j]>max)
                    max=matrix[N-1][j];
            }
    }
ofstream F("min_max.txt",ios::app);
	F<<"Максимальный элемент "<<fixed<<setprecision(4)<<N<<" строки:\n\n"<<max<<"\n";
	F.close();

cout<<"Максимальный элемент "<<N<<" строки:\n\n";
    cout<<max<<endl;

cout<<"\nНайти максимальный элемент в другой строке? (Y/N)\n\n";
    char ch;
    cin>>ch;
    if (ch!='Y')
    {
    break;
    }

}
    else

    {
        cout << "Ошибка! Такой строки нет. Повторите ввод.\n\n";
    }
    }
}

int main()                                          //Главная функция, выполнение программы
{
    float matrix[4][5];
    char answer_1, answer_2;
    setlocale(LC_ALL,"russian");
    for(;;)
    {
        cout<<"Программа вычисления максимального или минимального элемента матрицы в заданной строке"<<endl<<endl;
        cout<<"1. Загрузить массив из файла\n2. Ввести вручную\n\n"<<endl;
        cin>>answer_1;

        if(answer_1=='1') file_enter(matrix);
        if(answer_1=='2') keybard_enter(matrix);
        if((answer_1=='1')||(answer_1=='2')) break;
    }
    out_matrix_display(matrix);

    cout<<"\n\n";

   for(;;)
    {
    cout<<"\n\n1. Найти минимальный элемент в строке\
           \n2. Найти максимальный элемент в строке\
           \n3. Записать конечные файлы\
           \n4. Выйти из программы\n"<<endl;
    cin>>answer_2;
    if(answer_2=='4') break;

    switch(answer_2)
        {
        case '1': min_el_matrix(matrix);  break;
        case '2': max_el_matrix(matrix); break;
        case '3': out_matrix_file(matrix); break;
        default: cout<<"\nВыберите 1, 2, 3 или 4!\n"; break;
        }
    }
return 0;
}
vecto вне форума Ответить с цитированием
Старый 29.05.2014, 23:17   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Спасибо в карман не положишь.
_Bers вне форума Ответить с цитированием
Старый 29.05.2014, 23:18   #3
vecto
 
Регистрация: 29.05.2014
Сообщений: 6
По умолчанию

И сколько положить нужно
vecto вне форума Ответить с цитированием
Старый 30.05.2014, 05:58   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

за 2500р мой карман нарисует блок-схему.
rrrFer вне форума Ответить с цитированием
Старый 30.05.2014, 08:53   #5
vecto
 
Регистрация: 29.05.2014
Сообщений: 6
По умолчанию

мой карман тихо застонал и сделал всё сам
vecto вне форума Ответить с цитированием
Старый 30.05.2014, 11:43   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Раз сделал сам - выкладывай поделки, так и быть, расскажем где ты сделал неправильно xD.
rrrFer вне форума Ответить с цитированием
Старый 31.05.2014, 10:08   #7
vecto
 
Регистрация: 29.05.2014
Сообщений: 6
По умолчанию

Выкладываю чисто для ознакомления, т.к. всё уже сдано. Замечания учту на будущее.
Вложения
Тип файла: rar Схема.rar (223.7 Кб, 15 просмотров)
vecto вне форума Ответить с цитированием
Старый 31.05.2014, 13:57   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Дак она неправильная вообще во всем.
Стрелка - это поток управления. Поток управления не может вот так взять и разделиться как у вас после cin >> answer. Разделиться может, но это будет означать, что запущено 3 потока. А запуск потока в блоксхеме по ГОСТу отображается маленьким треугольником на дуге.
Что-то мне подсказывает, что вы не хотели потоки описывать. Есть в стандарте блок оператора выбора, вот его вы неправильно используете. У вас не разделение потока, а выбор одной из альтернатив по условию.

Выходы из условного оператора (который ромбик) подписываются "да", "нет". Не может быть один выход из ромбика, как у вас.

Вы неправильно описали циклы. Наставили лишних стрелок (направление стрелок слева направо подразумевается, стрелка на линии не ставится).

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

С точки зрения алгоритма не важно откуда поступают данные и как называется файл. Открывать файлы в блоксхемах тоже не надо.

Нет с схемах оператора case. Разберитесь с блоком выбора уже наконец.

Вы пишите в оператрном блоке "int [i][j]", "float max = 0" и т.п., что это значит? - если что, объявлять переменные в блоксхемах не надо.

Блоксхема неправильная. А кроме того, с кодом программы она никак не связана. В программе используются функции, например, в блоксхеме у вас функций нет.

Большие блоксхемы (у вас она явно на лист А4 не влазит) разделяются оператором межстраничного перехода.

Если все уже сдано - препода пора списать )
Суть задрачивания студентов на блоксхемы состоит только в том, что блоксхемы требуются обязательно при защите диплома. По новым требованиям, даже бакалаврские работы проходят нормокнотроль (соответствие ГОСТу), поэтому очень желательно студенту узнать о ГОСТе на первом курсе. Если же не требовать выполнение по ГОСТ, то лучше вообще не требовать, какой смысл время у студентов впустую отнимать?

99% схема сгенерирована программно каким-нибудь ДиаграмДизайнер.

Последний раз редактировалось rrrFer; 31.05.2014 в 13:59.
rrrFer вне форума Ответить с цитированием
Старый 31.05.2014, 14:17   #9
vecto
 
Регистрация: 29.05.2014
Сообщений: 6
По умолчанию

Мдаа, много нового узнал и даже не всё понял)) Тогда можно сказать, что нас вообще блок схемы не учили делать. Похоже так и есть.

Делал всё-таки сам, в gliffy (можете сайт найти - онлайн). Походу, препод сам не очень-то понимает в схемах алгоритма.

Не понял, что имеется ввиду под сгенерировать. По уму как и в какой программе их вообще нужно делать?

Последний раз редактировалось vecto; 31.05.2014 в 14:22.
vecto вне форума Ответить с цитированием
Старый 31.05.2014, 16:25   #10
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Не понял, что имеется ввиду под сгенерировать. По уму как и в какой программе их вообще нужно делать?
Да в любой. Под windows удобно делать в визио, под linux - в yEd (под windows он тоже имеется).

Препод может не понимать, есть на каждой кафедре человек, отвечающий за нормоконтроль, вот он будет заворачивать массово студентов с дипломами из за ГОСТов (на блок-схемы в частности).

Кроме как для диплома они вобще не нужны. Поэтому можно не напрягаться.
rrrFer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
написать блок схему. Rus18 Помощь студентам 1 29.05.2013 07:46
Написать блок-схему Life4Win C++ Builder 1 30.11.2012 10:13
не могу написать блок-схему Rusik1992 Помощь студентам 0 19.04.2012 11:46
помогите написать блок-схему Конга Паскаль, Turbo Pascal, PascalABC.NET 2 03.04.2009 11:56