Сгенерировать массив целых чисел и вывести на экран - 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копируйте этот код в свою среду разработки и запустите его, чтобы увидеть результаты.

  1. Объявлены переменные:
    • int *vector1; // первоначальные значения
    • int *vector2; // массив чисел больше среднего
    • int *vector3; // объединенный массив
    • int middle=0; // среднее арифметическое
    • int sum =0;
    • int count=0;
    • int size;
    • int i=0, j=0;
  2. Пользователю предлагается ввести размер массива:
    • printf (Input size of your vecors:);
    • scanf (%i,&size);
    • vector1=(int)malloc(sizesizeof(int));
  3. Массив vector1 инициализируется случайными числами от 0 до 100:
    • for (i=0; i<size; i++)
    • {
    • vector1[i]=rand(0,100);
    • }
  4. Выводится сгенерированный массив:
    • printf (Generated array: \n);
    • for (int i=0; i<size; i++)
    • {
    • printf (%4i,vector1[i]);
    • }
  5. Вычисляется среднее арифметическое массива vector1:
    • for (i=0; i<size; i++)
    • {
    • sum+=vector1[i];
    • }
    • middle = sum/size;
  6. Подсчитывается количество элементов в массиве vector2:
    • for (int i=0;i<size;i++)
    • {
    • if(vector1[i]>middle)
    • {
    • count++;
    • }
    • }
  7. Массив vector2 инициализируется элементами, которые больше среднего:
    • vector2=(int)malloc(countsizeof(int));
    • for (i=0;i<size;i++)
    • {
    • if(vector1[i]>middle)
    • {
    • vector2[j]=vector1[i];
    • j++;
    • }
    • }
  8. Массив 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++;
    • }
  9. Выводится измененный массив:
    • printf (Modified array: \n);
    • for (int i=0; i<(size+count); i++)
    • {
    • printf (%4i,vector3[i]);
    • }
  10. Программа ожидает нажатия любой клавиши перед завершением:
    • printf(\n);
    • system(pause);
  11. Программа завершается возвратом 0:
    • return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы