Реализовать выводы структуры в функции - 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; }
Объяснение кода листинга программы
- Подключаются необходимые заголовочные файлы: stdio.h и string.h
- Определяются константы: ITEM_SIZE, SHOP_SIZE, PRICE_SIZE. Они представляют собой размеры массивов в структуре Good.
- Объявляется структура Good.
- Реализуется функция Gprint, которая выводит значения полей структуры Good.
- Реализуется функция Gset, которая устанавливает значения полей структуры Good.
- Реализуется функция printgoods, которая выводит список товаров, используя функцию Gprint.
- В функции main создается массив структур Good, инициализируются две структуры с помощью функции Gset.
- Вызывается функция printgoods для вывода списка товаров.
- Программа возвращает 0, заканчивая свою работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д