2014 dxdy logo

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

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




 
 Блок схема
Сообщение24.02.2011, 13:43 
по данному коду нужно составить блок схему алгоритма помогите пожалуйста
#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 
Аватара пользователя
Не понятно в чём конкретно затруднение?
printf обозначаете оторванной бумажкой внтури пишете что выводится,
scanf параллелограмом, внутри что вводится,
if ромбиком с ветвлением, внутри условие,
for начинаете овалом с записью условий цикла, там где он кончается ставите кружок и ведёте линию на овал,
вызов функции обозначаете прямоугольником с дополнительными вертикальными линиями,
вычисления и присваивания - просто пишете в прямоугольники.

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

 
 
 
 Re: Блок схема
Сообщение27.02.2011, 01:13 
profrotter в сообщении #417780 писал(а):
printf обозначаете оторванной бумажкой внтури пишете что выводится,
Неправда. Тоже параллелограммом!

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

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

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

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

 
 
 
 Re: Блок схема
Сообщение27.02.2011, 20:18 
arseniiv в сообщении #417831 писал(а):
Не знаю, сильно ли они помогают в обучении; а на практике вместо такого ведь обычно пишут какой-нибудь свой (удобный для своего понимания) псевдокод (имею ввиду, когда собираются понять, что делать в функции, когда сразу не ясно).

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

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

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

Изображение


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

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

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group