Динамический массив структур - найти ошибку в коде - C (СИ)

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

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

помогите создать динамический массив структур
#include <stdio.h>
#include <stdlib.h>
#define N 5
 
struct WORKER 
{
char name [15];
char initsialu [5];
char posada [15];
int data;
} 
s1;

void sort()
{
int j,k;
struct WORKER p;
 for(j=0; j<N; j++)
 {
   for(k=0; k<N; k++)
   {
     if(strcmp (s1[j].name, s1[k].name)<0)
     {
       p=s1[j];
       s1[j]=s1[k];
       s1[k]=p;
     }
   }
 }
}
void vyvid(int i){
 printf("%s ", s1[i].name);
 printf("%s ", s1[i].initsialu);
 printf("%s ", s1[i].posada);
 printf("%i\n", s1[i].data);
}
 
int main () 
{
    
 int i,r;
 
 for (i=0; i<N; i++){
    scanf ("%s", s1[i].name);
    scanf ("%s", s1[i].initsialu);
    scanf ("%s", s1[i].posada);
    scanf("%i", &s1[i].data);
 }
 
 sort();
 
 for (i=0; i<N; i++)
    vyvid(i);
    
 printf ("Stash\n");
 scanf ("%d",&r);
 
 printf ("\n");
 int f=1;
 for ( i = 0; i < N; i ++ )
       if ((2012-s1[i].data) > r){
          vyvid(i);
          f=0;
          }
 
 if (f)
    printf ("No\n");
 
system ("PAUSE");
return 0;
}

Решение задачи: «Динамический массив структур - найти ошибку в коде»

textual
Листинг программы
typedef struct 
{
char name [15];
char initsialu [5];
char posada [15];
int data;
}WORKER;

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

  1. Типизация данных: определен тип данных для структуры WORKER с полями name (строка до 15 символов), initsialu (строка до 5 символов), posada (строка до 15 символов) и data (целое число).
  2. Создание динамического массива структур: с помощью оператора new создается динамический массив структур WORKER с фиксированным размером 5 элементов.
  3. Инициализация элементов массива: каждый элемент массива инициализируется значениями полей структуры WORKER.
  4. Неявное приведение типов: значения полей структуры WORKER автоматически преобразуются в указатели на соответствующие типы данных (char, char, char, int) при приведении их к типу указателя void*.
  5. Присваивание значений: значениям указателей на поля структуры присваиваются адреса выделенных динамических массивов.
  6. Вывод значений на экран: с помощью цикла for и оператора printf выводятся значения полей каждой структуры в массиве.
  7. Освобождение памяти: после использования динамического массива структур, он освобождается с помощью оператора delete.

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


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

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

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