2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Блок схема
Сообщение24.02.2011, 13:43 


14/12/10
13
по данному коду нужно составить блок схему алгоритма помогите пожалуйста
#include <stdio.h>
#include <stdlib.h>

void Print(int* arr, size_t size)
{
for(size_t i = 0; i < size; i++)
printf( "%d ", *(arr+i) );
printf("\n");
}

void Sort(int* arr, size_t size)
{
int temp;
size_t j;
for (size_t i=0; i < size; i++)
{
temp = arr[ i ];
for ( j = i-1; j >= 0 && arr[ j ] > temp; j--)
arr[ j+1 ] = arr[ j ];
arr[ j+1 ] = temp;
}
}

int main()
{
size_t size_a, size_b = 0;
bool flag = true;
printf("A array size > ");
scanf("%d", &size_a);
if(size_a>20)
size_a = 20; //так как размер максимум 20, ставлю лимит
int* arr_a = (int*)malloc(size_a*sizeof(int));
int* arr_b = NULL, *temp = NULL;
printf("Filling A array...\n");
for(size_t i = 0; i < size_a; i++)
{
printf("%d > ",i);
scanf("%d", (arr_a + i));
}
Print(arr_a,size_a);
arr_b = (int*)malloc(size_a*sizeof(int));
for(size_t i = 2; i < size_a; i+=2)
{
if( arr_a[ i-1 ] % 2 )
{
arr_b[size_b] = arr_a[ i ];
size_b++;
}
}
if(!size_b)
{
free(arr_a);
free(arr_b);
printf("Nothing to copy...");
return 0;
}
temp = (int*)realloc(arr_b, size_b*sizeof(int));
if(!temp)
{
free(arr_a);
free(arr_b);
perror("Error occured while rellocating B array");
return 0;
}
arr_b = temp;
temp = NULL;
Print(arr_b, size_b);
Sort(arr_b, size_b);
Print(arr_b, size_b);
printf("Done...");
free(arr_b);
free(arr_a);
return 0;
}

 Профиль  
                  
 
 Re: Блок схема
Сообщение26.02.2011, 23:22 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Не понятно в чём конкретно затруднение?
printf обозначаете оторванной бумажкой внтури пишете что выводится,
scanf параллелограмом, внутри что вводится,
if ромбиком с ветвлением, внутри условие,
for начинаете овалом с записью условий цикла, там где он кончается ставите кружок и ведёте линию на овал,
вызов функции обозначаете прямоугольником с дополнительными вертикальными линиями,
вычисления и присваивания - просто пишете в прямоугольники.

А вообще, блок-схемы для функциональных и ООП кодов - это просто моветон какой-то и музейность, простите.

 Профиль  
                  
 
 Re: Блок схема
Сообщение27.02.2011, 01:13 
Заслуженный участник


27/04/09
28128
profrotter в сообщении #417780 писал(а):
printf обозначаете оторванной бумажкой внтури пишете что выводится,
Неправда. Тоже параллелограммом!

profrotter в сообщении #417780 писал(а):
for начинаете овалом с записью условий цикла, там где он кончается ставите кружок и ведёте линию на овал
Часто раскладывают на ветвление и безусловный переход.

Соглашусь про моветон. Не знаю, сильно ли они помогают в обучении; а на практике вместо такого ведь обычно пишут какой-нибудь свой (удобный для своего понимания) псевдокод (имею ввиду, когда собираются понять, что делать в функции, когда сразу не ясно).

-- Вс фев 27, 2011 04:26:38 --

А бумажка ведь для комментариев.

 Профиль  
                  
 
 Re: Блок схема
Сообщение27.02.2011, 20:18 
Заслуженный участник


11/05/08
32166
arseniiv в сообщении #417831 писал(а):
Не знаю, сильно ли они помогают в обучении; а на практике вместо такого ведь обычно пишут какой-нибудь свой (удобный для своего понимания) псевдокод (имею ввиду, когда собираются понять, что делать в функции, когда сразу не ясно).

Когда-то, много, много лет назад я пытался рассчитывать что-то про рассеяние нейтронов методом Монте-Карло. Там куча всяких возможных вторичных частиц и реакций между ними. И там блок-схемы были реально полезны (псевдокоды же бесполезны).

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

 Профиль  
                  
 
 Re: Блок схема
Сообщение27.02.2011, 22:49 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
Кстати, цикл не овалом положено:

Изображение


У автора zmei89 уже была тема про составление блок-схемы и там ему дали ссылку на викепедию, где все ГОСТы изложены.

Оторванной бумажкой вывод на бумагу. А так да ввод-вывод параллелограмом. А ещё ручной ввод трапецией оказывается. Век живи - век учись.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group