Общий упорядоченный массив

Страницы работы

Содержание работы

Министерство образования Республики Беларусь

Белорусский государственный университет информатики и электроники

Факультет компьютерных систем и сетей

Кафедра электронных вычислительных машин

Отчёт по лабораторной работе № 1

            Выполнил студент                                                                                                           Проверила

            группы 950501                                                                                                            Павлёнок Н. А.

            Иванютенко А. А.                                                                                             _________________

Минск 2010

Условие поставленной задачи

В main() ввести 2 массива длинных целых чисел, рассортированных в порядке возрастания. В функции не используя сортировки, получить общий упорядоченный массив и вывести его в main().

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

#include<stdio.h>

#include <stdlib.h>

int main()

{

               long int *m1,*m2,*m3;

              int m,n,i,j,k;

               puts("vvedite razmernosti massivov: ");

               scanf("%d%d",&m,&n);

               m1=(long int*)malloc(m*sizeof(long int));

               m2=(long int*)malloc(n*sizeof(long int));

               m3=(long int*)malloc((n+m)*sizeof(long int));

               puts("Massiv 1:");

               for (i=0,j=-15;i<m;i++,j+=5){

                              m1[i]=rand()%5+j;

                              printf("%4d",m1[i]);

               }

               printf("\nMassiv 2:\n");

               for (i=0,j=-15;i<n;i++,j+=5){

                              m2[i]=rand()%5+j;

                              printf("%4d",m2[i]);

               }

               i=0; j=0; k=0;

               while(i<m&&j<n)

              {

                              while (m1[i]<=m2[j]&&i<m) m3[k++]=m1[i++];

                              while (m2[j]<=m1[i]&&j<n) m3[k++]=m2[j++];

               }

               while (i<m) m3[k++]=m1[i++];

               while( j< n) m3[k++]=m2[j++];

               printf("\nNoviy massiv\n");

               for (i=0;i<m+n;i++) printf("%4d",m3[i]);

               putchar('\n');

getch();

return 0;

}

Блок-схема                      

Пошаговый алгоритм выполнения программы

1)  Начало программы;

2)  Объявление переменных:

           long int *m1, *m2, *m3 – указатели на массив длинных целых чисел;

           int n,m – размерности массивов;

           int i,j,k – переменные циклов;

3)  Ввод размерностей массивов;

4)  Выделение памяти:

          Для m1 размерностью m;

          Для m2 размерностью n;

          Для m3 размерностью m+n;

5)  Начало цикла по i пока i<m;

6)  Ввод чисел в 1-ый массив, сгенерированных генератором случайных чисел;

7)  Конец цикла;

8)  Начало цикла по i пока i<n;

9)  Ввод чисел в 2-ой массив, сгенерированных генератором случайных чисел;

10)  Конец цикла;

11)  Начало цикла по i и j пока i<m, j<n;

12)  Начало цикла m1[i]<=m2[j]&&i<m;

13)  Присваивание элементов 1-ого массива элементам 3-его массива;

14)  Конец цикла;

15)  Начало цикла m2[i]<=m2[j]&&i<n;

16)  Присваивание элементов 2-ого массива элементам 3-его массива;

17)  Конец цикла;

18)  Конец цикла по i и j;

19)  Возможная дозапись остатка:

          Цикл пока i<m : Присваивание элементов 1-ого массива элементам 3-его массива;

          Цикл пока i<n : Присваивание элементов 2-ого массива элементам 3-его массива;

20)  Начало цикла по i пока i<n+m;

21)  Вывод на экран элементов 3-его массива;

22)  Конец цикла по i;

23)  Конец программы;

            Результат работы программы

Похожие материалы

Информация о работе