Динамические структуры данных. Ошибки в функциях - C (СИ)

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

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

Как я понял я запутался в указателях на типы данных при объявлении, или вызове функции. Помогите разобраться, всю голову сломал... Вот текст программы.
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
struct Note
{   
    char last_name[15];
    char first_name[15];
    int no;
    int data[3];
};
 
void  *Fill(int count);
void Print(float *box, int count);

int main(void)
{
    int count;
    printf ("Enter Size = ");
    scanf ("%d", &count);
       
   float *box = Fill(count);
   Print(box, count);
   system("PAUSE");
   free(box);       
}

void *Fill(int count)
{
    int i;
    struct Note* box = (struct Note*)malloc(sizeof(struct Note) * count);
    //struct Note tmp;
 
    for(i=0; i<count; i++)
    {
        printf("\n----------------");
        puts("\nEnter last and first name");
        scanf("%s %s", box[i].last_name, box[i].first_name);
        puts("\nEnter number phone");
        scanf("%d", &box[i].no);
        puts("\nEnter DOB (form:d.m.y)(3)");
        scanf("%d %d %d", &box[i].data[0], &box[i].data[1], &box[i].data[2]);
    }
    return box;
}   
 
void Print(float *box, int count)
{
    int i;
 
    printf("\n----------------");
    printf("\nSort!");
    for(i=0; i<count; i++)
    {
        printf("\n----------------");
        printf("\nName: %s %s\n", box[i].last_name, box[i].first_name);
        printf("Phone: %d\n", box[i].no);
        printf("Day:%d Month:%d Year:%d", &box[i].data[0], &box[i].data[1], &box[i].data[2]);
        printf("\n");
    }
 
}

Решение задачи: «Динамические структуры данных. Ошибки в функциях»

textual
Листинг программы
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
struct Note
{
    char last_name[15];
    char first_name[15];
    int no;
    int data[3];
};
 
struct Note *Fill(int);
void Print(struct Note*, int);
 
 
int main(void)
{
    int count;
    printf("Enter Size = ");
    scanf("%d", &count);
 
    struct Note *box = Fill(count);
    Print(box, count);
    system("PAUSE");
    free(box);
}
 
 
struct Note *Fill(int count)
{
    int i;
    struct Note* box = malloc(sizeof(struct Note) * count);
    //struct Note tmp;
 
    for (i = 0; i<count; i++)
    {
        printf("\n----------------");
        puts("\nEnter last and first name");
        scanf("%s %s", &box[i].last_name, &box[i].first_name);
        puts("\nEnter number phone");
        scanf("%d", &box[i].no);
        puts("\nEnter DOB (form:d.m.y)(3)");
        scanf("%d %d %d", &box[i].data[0], &box[i].data[1], &box[i].data[2]);
    }
    return box;
}
 
void Print(struct Note *box, int count)
{
    int i;
 
    printf("\n----------------");
    printf("\nSort!");
    for (i = 0; i<count; i++)
    {
        printf("\n----------------");
        printf("\nName: %s %s\n", box[i].last_name, box[i].first_name);
        printf("Phone: %d\n", box[i].no);
        printf("Day:%d Month:%d Year:%d", box[i].data[0], 
            box[i].data[1], box[i].data[2]);
        printf("\n");
    }
 
}

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

  1. Включаются необходимые заголовочные файлы: для работы со строками, для работы с памятью и для работы с вводом/выводом данных.
  2. Объявляется структура данных Note с полями: last_name (последняя фамилия) и first_name (имя) типа char (строка до 15 символов), а также поле no типа int (целое число) и массив data типа int на 3 элемента.
  3. В функции main() пользователю предлагается ввести размер массива.
  4. После ввода размера, функция Fill() вызывается для заполнения массива структурными данными.
  5. Для каждого элемента массива выводится приглашение для ввода данных.
  6. После ввода всех данных, функция Print() вызывается для вывода данных на экран в отсортированном виде.
  7. В конце программы вызывается функция system(PAUSE) для приостановки выполнения программы до нажатия клавиши Ввод.
  8. После этого, выделенная память освобождается с помощью функции free().

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


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

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

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