Реализовать выводы структуры в функции - C (СИ)

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

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

Всем привет! Помогите, пожалуйста, запихнуть выводы моей структуры в функцию, типо:
void PrintPriceList(int j, int p, char goods[j].item, char goods[j].shop, char goods[j].price)
{
    for(j = 0; j < p; j++)
        {
            printf("%d.", j + 1);
            printf("  %s",goods[j].item);
            printf("           %s",goods[j].shop);
            printf("           %s",goods[j].price);
            printf("\n");
        }
}
Вот код:
int main()
{
    int i, j, k, p, choose, F, NewN, m;
    bool f;
    setlocale(LC_ALL, "Russian");
    struct Price
    {
        char item[20];
        char shop[20];
        char price[20];
    } goods[n], tmp;
    i = 0;
    FILE *file;
    file = fopen("c:\\1text.txt","r");
    printf("Меню:\n");
    printf("\t1.Дополнить прайс-лист (Файл) и отсортировать\n\t2.Отсортировать исходный прайс-лист (Файл)\n");
    printf("\nВведите пункт меню: ");
    scanf("%d", &choose);
    system("cls");
    switch(choose)
    {
    case 1:
        printf("Введите количество добавляемых позиций: ");
        scanf("%d", &F);
        while(!(feof(file)))
        {
            fscanf(file, "%s %s %s", goods[i].item, goods[i].shop, goods[i].price);
            i++;
        }
        i--;
        p = i;
        printf("\nВ файле имеется %d позиции(ий)", p + 1);
        printf("\n\nВведите:");
        for(k = p + 1; k < F + p + 1; k++)
        {
            printf("\nНазвание товара № %d: ", k + 1);
            scanf("%s", &goods[k].item);
            printf("\nМагазин № %d: ", k + 1);
            scanf("%s", &goods[k].shop);
            printf("\nСтоимость № %d: ", k + 1);
            scanf("%s", &goods[k].price);
        }
        system("cls");
        printf("Новый прайс-лист:\n");
        printf("\n");
        printf("  Товар        Магазин        Цена\n");
        printf("\n");
        for(j = 0; j < F + p + 1; j++)
        {
            printf("%d.", j + 1);
            printf("  %s",goods[j].item);
            printf("           %s",goods[j].shop);
            printf("           %s",goods[j].price);
            printf("\n");
        }
        m = F + p + 1;
        printf("\n");
        printf("Данные с клавиатуры введены для следующих товаров:\n");
        printf("\n");
        printf("  Товар        Магазин        Цена\n");
        printf("\n");
        for(j = p + 1; j < F + p + 1; j++)
        {
            printf("%d.", j - p);
            printf("  %s",goods[j].item);
            printf("           %s",goods[j].shop);
            printf("           %s",goods[j].price);
            printf("\n");
        }
        do 
        {
            f = false;
            for (int j = 0; j < m - 1; j++)
            {
                if(goods[j].item[0] > goods[j+1].item[0])
                {
                    f = true;
                    tmp = goods[j]; 
                    goods[j]= goods[j+1];
                    goods[j+1] = tmp;
                } 
            }
        } while(f==true);
        printf("\n");
        printf("Прайс-лист после сортировки:\n");
        printf("\n");
        printf("  Товар        Магазин        Цена\n");
        printf("\n");
        for(j = 0; j < F + p + 1; j++)
        {
            printf("%d.", j + 1);
            printf("  %s",goods[j].item);
            printf("           %s",goods[j].shop);
            printf("           %s",goods[j].price);
            printf("\n");
        }
        fclose(file);
        file = fopen("c:\\1text.txt","w");
        for(i = 0; i < F + p + 1; i++)//Запись в файл
        {
            fprintf(file, "%s %s %s\n", goods[i].item, goods[i].shop, goods[i].price);
        }
        break;
    case 2:
        while(!(feof(file)))
        {
            fscanf(file, "%s %s %s", goods[i].item, goods[i].shop, goods[i].price);
            i++;
        }
        i--;
        p = i;
        printf("\nВ файле имеется %d позиции(ий)", p + 1);
        printf("Исходный прайс-лист:\n");
        printf("\n");
        printf("  Товар        Магазин        Цена\n");
        printf("\n");
        for(j = 0; j < p; j++)
        {
            printf("%d.", j + 1);
            printf("  %s",goods[j].item);
            printf("           %s",goods[j].shop);
            printf("           %s",goods[j].price);
            printf("\n");
        }
        do 
        {
            f = false;
            for (int j = 0; j < p - 1; j++)
            {
                if(goods[j].item[0] > goods[j+1].item[0])
                {
                    f = true;
                    tmp = goods[j]; 
                    goods[j]= goods[j+1];
                    goods[j+1] = tmp;
                } 
            }
        } while(f==true);
        printf("\n");
        printf("Прайс-лист после сортировки:\n");
        printf("\n");
        printf("  Товар        Магазин        Цена\n");
        printf("\n");
        for(j = 0; j < p; j++)
        {
            printf("%d.", j + 1);
            printf("  %s",goods[j].item);
            printf("           %s",goods[j].shop);
            printf("           %s",goods[j].price);
            printf("\n");
        }
        fclose(file);
        file = fopen("c:\\1text.txt","w");
        for(j = 0; j < p; j++)
        {
            fprintf(file, "%s %s %s\n", goods[j].item, goods[j].shop, goods[j].price);
        }
        break;
    }
    getch();
    return 0;
}
Спасибо!

Решение задачи: «Реализовать выводы структуры в функции»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define ITEM_SIZE  20
#define SHOP_SIZE  20
#define PRICE_SIZE 20
 
typedef struct Good Good;
struct Good
{
    char item[ITEM_SIZE];
    char shop[SHOP_SIZE];
    char price[PRICE_SIZE];
};
 
void
Gprint(Good *g)
{
    printf("\t%s", g->item);
    printf("\t%s", g->shop);
    printf("\t%s", g->price);
}
 
void
Gset(Good *g, char *item, char *shop, char *price)
{
    strncpy(g->item,  item,  ITEM_SIZE - 1);
    strncpy(g->shop,  shop,  SHOP_SIZE - 1);
    strncpy(g->price, price, PRICE_SIZE - 1);
}
 
void
printgoods(Good *g, int n)
{
    int i;
    for (i = 0; i < n; i++, g++) {
        printf("%d.", i);
        Gprint(g);
        printf("\n");
    }
}
 
int
main(void)
{
    Good goods[2];
    Gset(goods,   "Item 0", "Shop 0", "$0.99");
    Gset(goods+1, "Item 1", "Shop 1", "$1.99");
    printgoods(goods, 2);
    return 0;
}

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

  1. Подключаются необходимые заголовочные файлы: stdio.h и string.h
  2. Определяются константы: ITEM_SIZE, SHOP_SIZE, PRICE_SIZE. Они представляют собой размеры массивов в структуре Good.
  3. Объявляется структура Good.
  4. Реализуется функция Gprint, которая выводит значения полей структуры Good.
  5. Реализуется функция Gset, которая устанавливает значения полей структуры Good.
  6. Реализуется функция printgoods, которая выводит список товаров, используя функцию Gprint.
  7. В функции main создается массив структур Good, инициализируются две структуры с помощью функции Gset.
  8. Вызывается функция printgoods для вывода списка товаров.
  9. Программа возвращает 0, заканчивая свою работу.

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


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

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

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