Подскажите как переделать программу в динамическую память - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <locale.h> #include <stdlib.h> #include <string.h> int main(void) {setlocale(LC_ALL,"RU"); int flag=1,Demon,god; typedef struct{ char prois[11]; char model[16]; int chastota ; int KschD; int KschK; int str; unsigned num; } PROZESOSOR; unsigned int num = 0; printf("Введите число процесоров: "); scanf("%u",&num);// PROZESOSOR Pr[num]; for(int i=0;i<num;i++){ fflush(stdin); strcpy(Pr[i].prois,""); strcpy(Pr[i].model,""); char str[150]; gets(str);//sscanf(str,"%s %s (%d ,%d ,%d)",Pr[i].prois,Pr[i].model,&Pr[i].chastota,&Pr[i].KschD ,&Pr[i].KschK,&Pr[i].str); sscanf(str,"%s %s (%d ,%d ,%d)",&Pr[i].prois[i],&Pr[i].model[i],&Pr[i].chastota,&Pr[i].KschD ,&Pr[i].KschK,&Pr[i].str);// if(Pr[i].KschK>32000 || Pr[i].KschD>32000 || Pr[i].chastota>10000){printf("Введено не верное значение");return 0;}} puts("-----------------------------------------"); while(flag){ flag=0; printf("ВВедите частоту процесоров"); fflush(stdin); scanf("%d %d",&Demon,&god);// if(Demon>god || Demon>32000 || god>32000) {printf("Неверно введина частота \n"); flag=1;} } fflush(stdin); while(flag){ flag = 0; for(int i=0;i<num-1;i++){ int res = strcmp(Pr[i].prois,Pr[i+1].prois); if(res>0){ PROZESOSOR vr = Pr[i]; Pr[i] = Pr[i+1]; Pr[i+1] = vr; flag = 1; } else if(res==0) if(Pr[i].str>Pr[i+1].str){ PROZESOSOR vr = Pr[i]; Pr[i] = Pr[i+1]; Pr[i+1] = vr; flag = 1; } } } puts("Список процесоров "); for(int i=0;i<num;i++){ if(Pr[i].chastota>=Demon && Pr[i].chastota<=god) printf("%s %s (%d ,%d ,%d)",Pr[i].prois,Pr[i].model,Pr[i].chastota,Pr[i].KschD,Pr[i].KschK,Pr[i].str); } puts("---------------------------------------------"); return 0;}
Решение задачи: «Подскажите как переделать программу в динамическую память»
textual
Листинг программы
PROZESOSOR *Pr; Pr = (PROZESOSOR *)malloc(num*sizeof(PROZESOSOR));
Объяснение кода листинга программы
- Объявляется указатель на структуру PROZESOSOR типа *Pr.
- С помощью функции malloc() выделяется память под массив структур PROZESOSOR, размер которого определяется переменной num.
- В операторе присваивания (assign) указателю Pr присваивается адрес начала массива структур PROZESOSOR.
- Полученный указатель на массив структур PROZESOSOR приводится к типу PROZESOSOR *.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д