Перестановка верхней и нижней строки в структуре - C (СИ)
Формулировка задачи:
Привет. Я вам тут покушать принес. В массиве структур нужно поменять местами верхнюю и нижнюю строки.
Вот весь код:
Вот моя гениальная реализация перестановки строк:
В консоли вот такая штука
Заранее спасибо
#define _CRT_SECURE_NO_WARNINGS #define _CRT_NONSTDC_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <locale> #include <Windows.h> void main() { setlocale(LC_ALL, "Russian"); SetConsoleCP(1251); SetConsoleOutputCP(1251); size_t length; struct date { char day; char month; short year; }; struct newspapers{ char name[25]; short number; struct date date1; char printingOffice[25]; }; struct newspapers newspaperslist[3]; for (int i = 0; i<2; i++){ printf("Введите название газеты %d: ", i+1); fgets(newspaperslist[i].name, sizeof newspaperslist[i].name, stdin); printf("Введите номер выпуска %d: ", i+1); scanf("%d", &newspaperslist[i].number); printf("Ввод даты выпуска %d \n", i+1); printf("Введите день: "); scanf("%d", &newspaperslist[i].date1.day); printf("Введите месяц: "); scanf("%d", &newspaperslist[i].date1.month); printf("Введите год: "); scanf("%d", &newspaperslist[i].date1.year); printf("Введите издательство %d: ", i+1); getchar(); fgets(newspaperslist[i].printingOffice, sizeof newspaperslist[i].printingOffice, stdin); } newspaperslist[3] = newspaperslist[2]; newspaperslist[2] = newspaperslist[1]; newspaperslist[1] = newspaperslist[3]; printf("_______________________________________________________________\n"); printf("| Газеты | | |\n"); printf("|____________________________| Дата выпуска | Издательство |\n"); printf("| Название | Номер | | |\n"); printf("|-----------------|----------|----------------|----------------|\n"); for (int i = 0; i<2; i++) { length = strlen(newspaperslist[i].name); if (length > 0 && newspaperslist[i].name[length - 1] == '\n') newspaperslist[i].name[length - 1] = '\0'; length = strlen(newspaperslist[i].printingOffice); if (length > 0 && newspaperslist[i].printingOffice[length - 1] == '\n') newspaperslist[i].printingOffice[length - 1] = '\0'; printf("| %-15s ", newspaperslist[i].name); printf("| %-8d ", newspaperslist[i].number); printf("| %2d.%2d.%4d ", newspaperslist[i].date1.day, newspaperslist[i].date1.month, newspaperslist[i].date1.year); printf("| %-15s|\n", newspaperslist[i].printingOffice); } printf("|--------------------------------------------------------------|"); getch(); }
newspaperslist[3] = newspaperslist[2]; newspaperslist[2] = newspaperslist[1]; newspaperslist[1] = newspaperslist[3];
Решение задачи: «Перестановка верхней и нижней строки в структуре»
textual
Листинг программы
#include <stdio.h> struct ARRAY { int arr[3]; }; void dump(const struct ARRAY * obj) { int i; for ( i = 0; i < 3; ++i ) printf("%d ", obj->arr[i]); printf("\n"); } int main(void) { struct ARRAY a = { .arr = { 1, 2, 3 } }, b = { .arr = { 9, 8, 7 } }, tmp; dump(&a); dump(&b); tmp = a; a = b; b = tmp; dump(&a); dump(&b); return 0; }
Объяснение кода листинга программы
- Подключение стандартной библиотеки ввода-вывода
- Объявление структуры ARRAY с массивом arr размером 3
- Функция вывода содержимого объекта типа ARRAY
- Объявление переменных a и b типа ARRAY с инициализацией массива arr
- Вывод содержимого объекта a
- Вывод содержимого объекта b
- Объявление переменной tmp типа ARRAY для временного хранения объекта
- Копирование объекта a в объект tmp
- Копирование объекта b в объект a
- Копирование объекта tmp в объект b
- Вывод содержимого объекта a
- Вывод содержимого объекта b
- Конец функции main
- Возврат 0 функцией main, что означает успешный конец работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д