Разместить в массиве NR номера тех студентов, чей рост меньше 180 см - C (СИ)

Узнай цену своей работы

Формулировка задачи:

. Проведено измерение роста 70 студентов. Данные записаны в массиве ROST. Разместить в массиве NR номера тех студентов, чей рост меньше 180 см, и подсчитать число таких студентов.
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include<stdlib.h>
#define N 11
void main()
{
    int *ROST,i,*NR,nr=1,kol=0;
    ROST=(int*)malloc(N*sizeof(int));
    for(i=0;i<N;i++)
        ROST[i]=rand()%180+130;
    printf("ROST STUDENTOV");
    for(i=0;i<N;i++)
        printf("%4d",ROST[i]);
    puts("\n");
    for(i=0 ; i<N; i++)
        {
            if(ROST[i]<180)
                kol++;
        }
    printf(" Kolichestvo studentov c rostom < 180 = %d",kol);
    puts("\n");
    NR=(int*)malloc(kol*sizeof(int));
    for(i=0;i<N;i++)
        if(ROST[i]<180)
            {
                NR[nr]=i;
                nr++;
            }
        printf("Nomera studentov s rostom < 180 ");
        puts("\n");
    for(nr=0;nr<kol;nr++)
        printf("%4d", NR[nr]);
    puts("\n");
    getch();
}
в целом работает правильно,только номера студентов выдает не все (один выдает адресом)

Решение задачи: «Разместить в массиве NR номера тех студентов, чей рост меньше 180 см»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
int main()
{
    SetConsoleCP(1251);
    system("chcp 1251");
    int *GROWTH, *KID, M, i=0,kol=0, nom=0;
     srand(time(NULL));
        M=rand()%100;
    GROWTH= (int*) malloc(M*sizeof(int));
 
        for (i=0;i<M;i++)
    {
        GROWTH[i]=rand()%150+100;
    }
 
    printf("Количество новобранцев");
 
      for (i=0; i<M; i++)
      {
        printf("%d\n",GROWTH[i]);
        if(GROWTH[i]<180)
        kol ++;
      }
      printf("Колличество новобранцев ниже 180 = %d", kol);
 
      KID=(int*)malloc(kol*sizeof(int));
      for (i=0;i<M;i++)
        if (GROWTH[i]<180)
      {
          KID[nom]=i;
          nom++;
      }
        printf("\nНомера новобранцев ниже 180:   \t");
        for (nom=0;nom<kol;nom++)
            printf("%d\t",KID[nom]);
 
         getchar();
 
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы.
  2. Устанавливается кодировка консоли.
  3. Задаются начальные значения переменных: — M = 100 (количество новобранцев). — i = 0 (счетчик для циклов). — kol = 0 (количество новобранцев с ростом меньше 180 см). — nom = 0 (номер новобранца, с которым работает программа).
  4. Инициализируется генератор случайных чисел.
  5. В массив GROWTH (рост новобранцев) записываются случайные числа от 100 до 150.
  6. Выводится сообщение Количество новобранцев и выводится список ростовок новобранцев.
  7. Увеличивается счетчик kol на единицу для каждого новобранца с ростом меньше 180 см.
  8. Выводится сообщение Колличество новобранцев ниже 180 = %d, kol (количество новобранцев с ростом меньше 180 см).
  9. Инициализируется массив KID (номера новобранцев с ростом меньше 180 см).
  10. В цикле перебираются ростовок новобранцев.
  11. Если рост меньше 180 см, то к массиву KID добавляется номер новобранца и увеличивается счетчик nom на единицу.
  12. Выводится список номеров новобранцев с ростом меньше 180 см.
  13. Программа ожидает нажатия клавиши.
  14. Программа завершается.

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

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