Разместить в массиве 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы.
- Устанавливается кодировка консоли.
- Задаются начальные значения переменных: — M = 100 (количество новобранцев). — i = 0 (счетчик для циклов). — kol = 0 (количество новобранцев с ростом меньше 180 см). — nom = 0 (номер новобранца, с которым работает программа).
- Инициализируется генератор случайных чисел.
- В массив GROWTH (рост новобранцев) записываются случайные числа от 100 до 150.
- Выводится сообщение
Количество новобранцеви выводится список ростовок новобранцев. - Увеличивается счетчик kol на единицу для каждого новобранца с ростом меньше 180 см.
- Выводится сообщение
Колличество новобранцев ниже 180 = %d, kol (количество новобранцев с ростом меньше 180 см). - Инициализируется массив KID (номера новобранцев с ростом меньше 180 см).
- В цикле перебираются ростовок новобранцев.
- Если рост меньше 180 см, то к массиву KID добавляется номер новобранца и увеличивается счетчик nom на единицу.
- Выводится список номеров новобранцев с ростом меньше 180 см.
- Программа ожидает нажатия клавиши.
- Программа завершается.