Перестановка верхней и нижней строки в структуре - 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;
}

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

  1. Подключение стандартной библиотеки ввода-вывода
  2. Объявление структуры ARRAY с массивом arr размером 3
  3. Функция вывода содержимого объекта типа ARRAY
  4. Объявление переменных a и b типа ARRAY с инициализацией массива arr
  5. Вывод содержимого объекта a
  6. Вывод содержимого объекта b
  7. Объявление переменной tmp типа ARRAY для временного хранения объекта
  8. Копирование объекта a в объект tmp
  9. Копирование объекта b в объект a
  10. Копирование объекта tmp в объект b
  11. Вывод содержимого объекта a
  12. Вывод содержимого объекта b
  13. Конец функции main
  14. Возврат 0 функцией main, что означает успешный конец работы программы

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


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

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

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