Перестановка верхней и нижней строки в структуре - 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, что означает успешный конец работы программы