Сгенерировать массив целых чисел и вывести на экран - C (СИ)
Формулировка задачи:
задача звучит так: прога должна рандомом вводить массив заданного размера, выводить его на екран, а потом должна вывести на экран этот же массив, но с добавленными к нему его элементами которые больше среднего арифметического его элементов
вот на этом месте я стал. Не могу вывести массив с добавленными к нему элементами больше среднего арифметического...
#include<stdio.h> #include<stdlib.h> #include<conio.h> void main() { float*q; int i,k,n; int a,b; //размер массива int e,e1; float sum,sr; printf("vvidite chislo elementov massiva\n"); scanf("%d",&n); printf("vvdite a i b\n"); scanf("%d%d",&a,&b); q=(float*)calloc(n,sizeof(float)); if(q!=NULL) { for (int i = 0; i < n; ++i) { q[i] = a + rand() % (a - b+1); } for(i=0;i<n;i++) printf("\nq[%d]=%f",i,q[i]); } e=0;sum=0; for(i=0;i<n;i++) { e=e+1; sum=sum+q[i]; sr=sum/e; } printf("\ne=%d",e); printf("\nsum=%f",sum); printf("\nsr=%f",sr); e1=0; for(i=0;i<n;i++) { //считаем размер массива который нужно выделить if(q[i]>sr) e1++; } q=(float*)realloc(q,(n+e1)*sizeof(float)); if(q!=NULL) {
Решение задачи: «Сгенерировать массив целых чисел и вывести на экран»
textual
Листинг программы
/* прога должна рандомом вводить массив заданного размера, * выводить его на екран, а потом должна вывести на экран * этот же массив, но с добавленными к нему его элементами * которые больше среднего арифметического его элементов */ #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<math.h> #include <conio.h> #include <time.h> int rand(int a, int b) { return rand()%(b-a)+a; } int main () { int *vector1; //первоначальные значения int *vector2; //массив чисел больше среднего int *vector3; //обьединенный массив int middle=0; //среднее арифметическое int sum =0; int count=0; int size; int i=0, j=0; printf ("Input size of your vecors: "); scanf ("%i",&size); vector1=(int*)malloc(size*sizeof(int)); for (i=0; i<size; i++) vector1[i]=rand(0,100); printf ("Generated array: \n"); for (int i=0; i<size; i++) printf ("%4i",vector1[i]); for (i=0; i<size; i++) { sum+=vector1[i]; } middle = sum/size; for (int i=0; i<size; i++) { if(vector1[i]>middle) count++; } vector2=(int*)malloc(count*sizeof(int)); for (i=0;i<size;i++) { if(vector1[i]>middle) { vector2[j]=vector1[i]; j++; } } vector3=(int*)malloc((size+count)*sizeof(int)); for (i=0;i<size;i++) vector3[i]=vector1[i]; j=0; for (i=size; i<(count+size); i++) { vector3[i]=vector2[j]; j++; } printf ("Modified array: \n"); for (int i=0; i<(size+count); i++) printf ("%4i",vector3[i]); printf("\n"); system("pause"); return 0; }
Объяснение кода листинга программы
Cкопируйте этот код в свою среду разработки и запустите его, чтобы увидеть результаты.
- Объявлены переменные:
- int *vector1; // первоначальные значения
- int *vector2; // массив чисел больше среднего
- int *vector3; // объединенный массив
- int middle=0; // среднее арифметическое
- int sum =0;
- int count=0;
- int size;
- int i=0, j=0;
- Пользователю предлагается ввести размер массива:
- printf (
Input size of your vecors:
); - scanf (
%i
,&size); - vector1=(int)malloc(sizesizeof(int));
- printf (
- Массив vector1 инициализируется случайными числами от 0 до 100:
- for (i=0; i<size; i++)
- {
- vector1[i]=rand(0,100);
- }
- Выводится сгенерированный массив:
- printf (
Generated array: \n
); - for (int i=0; i<size; i++)
- {
- printf (
%4i
,vector1[i]); - }
- printf (
- Вычисляется среднее арифметическое массива vector1:
- for (i=0; i<size; i++)
- {
- sum+=vector1[i];
- }
- middle = sum/size;
- Подсчитывается количество элементов в массиве vector2:
- for (int i=0;i<size;i++)
- {
- if(vector1[i]>middle)
- {
- count++;
- }
- }
- Массив vector2 инициализируется элементами, которые больше среднего:
- vector2=(int)malloc(countsizeof(int));
- for (i=0;i<size;i++)
- {
- if(vector1[i]>middle)
- {
- vector2[j]=vector1[i];
- j++;
- }
- }
- Массив vector3 инициализируется объединенным массивом из vector1 и vector2:
- vector3=(int)malloc((size+count)sizeof(int));
- for (i=0;i<size;i++)
- {
- vector3[i]=vector1[i];
- }
- j=0;
- for (i=size; i<(count+size); i++)
- {
- vector3[i]=vector2[j];
- j++;
- }
- Выводится измененный массив:
- printf (
Modified array: \n
); - for (int i=0; i<(size+count); i++)
- {
- printf (
%4i
,vector3[i]); - }
- printf (
- Программа ожидает нажатия любой клавиши перед завершением:
- printf(
\n
); - system(
pause
);
- printf(
- Программа завершается возвратом 0:
- return 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д