Объединить два отсортированных массива - C (СИ) (151993)
Формулировка задачи:
Даны два отсортированы по возрастанию значений массивы вещественных чисел. Сформировать из них один общий отсортированный массив. Подсказка: в алгоритме обязательно учесть, что начальные массивы уже отсортированы.
только начал разбираться в Си, прошу помощи
#include <conio.h> #include <stdio.h> #include <stdlib.h> int main (void) { clrscr(); double mas1[5]={1.2312,12.234,34.45,53.47,57.56}; double mas2[10]={2.34,4.45,35.34,45.234,46.64,51.0,65.23,73.99,78.34,94.9}; double mas3[15]; double *v1, *v2, *v3, n; n=0; for(v2=&mas2[0]; v2<&mas2[10], n<5; v2++) { v1=&mas1[n]; while(*v1<*v2) { *v3=*v1; v3++; n++; v1++; } if(*v1>*v2) { *v3=*v2; v3++; } } for(v3=&mas3[0]; v3<&mas3[15]; v3++) { printf("%.3f\n", *v3); } system("pause"); return 0; }
Решение задачи: «Объединить два отсортированных массива»
textual
Листинг программы
#include <conio.h> #include <stdio.h> #include <stdlib.h> int main (void) { double mas1[5]={1.2312,12.234,34.45,53.47,57.56}; double mas2[10]={2.34,4.45,35.34,45.234,46.64,51.0,65.23,73.99,78.34,94.9}; double mas3[15]; int i=0, j=0, k=0; while(k<15) { if(i<5) { if(j<10) { if(mas1[i]<mas2[j]) { mas3[k]=mas1[i]; i++; } else { mas3[k]=mas2[j]; j++; } } else { mas3[k]=mas1[i]; i++; } } else { mas3[k]=mas2[j]; j++; } k++; } for(i=0;i<15;i++) { printf("%.3f\n", mas3[i]); } system("pause"); return 0; }
Объяснение кода листинга программы
- #include
- подключает библиотеку для работы с консолью, необходимую для функции getch() - #include
- подключает библиотеку для работы с файлами, необходимую для функции printf() - #include
- подключает библиотеку для работы с массивами, необходимую для функции malloc() - int main (void) - определяет основную функцию программы, в которой происходит объединение массивов
- double mas1[5]={1.2312,12.234,34.45,53.47,57.56}; - объявляет первый массив из 5 элементов с начальными значениями
- double mas2[10]={2.34,4.45,35.34,45.234,46.64,51.0,65.23,73.99,78.34,94.9}; - объявляет второй массив из 10 элементов с начальными значениями
- double mas3[15]; - объявляет третий массив из 15 элементов, в который будут объединены элементы из первых двух массивов
- int i=0, j=0, k=0; - объявляет три переменные для контроля индексов массивов
- while(k<15) - начинает цикл, который будет выполняться пока значение переменной k меньше 15
- if(i<5) - проверяет, что значение переменной i меньше 5, и выполняет следующий блок кода, если это условие выполняется
- if(j<10) - проверяет, что значение переменной j меньше 10, и выполняет следующий блок кода, если это условие выполняется
- if(mas1[i]<mas2[j]) - проверяет, что значение элемента в первом массиве меньше значения элемента во втором массиве, и выполняет следующий блок кода, если это условие выполняется
- mas3[k]=mas1[i]; - записывает значение элемента из первого массива в третий массив
- i++; - увеличивает значение переменной i на 1
- else - если предыдущее условие не выполнилось, то выполняется следующий блок кода
- mas3[k]=mas2[j]; - записывает значение элемента из второго массива в третий массив
- j++; - увеличивает значение переменной j на 1
- else - если предыдущее условие не выполнилось, то выполняется следующий блок кода
- mas3[k]=mas1[i]; - записывает значение элемента из первого массива в третий массив
- i++; - увеличивает значение переменной i на 1
- k++; - увеличивает значение переменной k на 1
- for(i=0;i<15;i++) - начинает цикл, который будет выполняться 15 раз
- printf(
%.3f\n
, mas3[i]); - выводит значение элемента из третьего массива с точностью до трех знаков после запятой - system(
pause
); - приостанавливает выполнение программы до нажатия клавиши - return 0; - завершает работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д