Структура и сортировка: программа выводит нули - C (СИ)
Формулировка задачи:
Написал программу, ввожу значения а они выдаются нулями, помогите...
Должно вывести как на фото, и потом сортировку по численности в порядке убывания, спасибо
#include <stdio.h>// Визначення бібліотеки функцій для використання scanf та printf
#include <conio.h>// Визначення бібліотеки функцій для використання getch
struct system // опис структурного типу system
{
char spclass[2]; //специфікація поля opersystem
float prmassa[6]; //специфікація поля sybd
float proc[9]; //специфікація поля vnpam
int chicl[15]; //специфікація поля operpam
};
int main(void) //визначення головної функції
{
struct system a[3],x; //ініціалізація масиву a з трьох елементів, та змінної х структурного типу system
int i,k=1; //ініціалізація змінних i,k
for (i=0;i<3;i++) //оголошення циклу з параметром
{
printf("spclass, prmassa, proc, chicl\n"); //запрошення на введення даних
scanf("%s%f%f%d",&a[i].spclass,&a[i].prmassa,&a[i].proc,&a[i].chicl); //зчитування змінних
};
printf("\n\n");
printf("spclass prmassa proc chicl\n");
for (i=0;i<3;i++)
{
printf("%2s %6.4f %9.6f %14d\n",&a[i].spclass,&a[i].prmassa,&a[i].proc,&a[i].chicl);
};
while (k!=0) //оголошення циклу з передумовою, для сортування масиву методом бульбашки
{
k=0; //присвоєння змінній k значення 0
for(i=0; i<2; i++) //оголошення циклу з параметром
{
if (a[i].chicl>a[i+1].chicl) //порівняння елементів масиву
{
x=a[i]; //обмін значеннями двома сусідніми елементами масиву
a[i]=a[i+1];
a[i+1]=x;
k=1;
};
};
};
printf("\n\n");
printf("spclass prmassa proc chicl\n");
for (i=0;i<3;i++)
{
printf("%2s %6.4f %9.6f %14d\n",&a[i].spclass,&a[i].prmassa,&a[i].proc,&a[i].chicl);//Виведення впорядкованої таблиці
};
getch();//функція для затримки консолі
}Решение задачи: «Структура и сортировка: программа выводит нули»
textual
Листинг программы
#include <stdio.h> // Визначення бібліотеки функцій для використання scanf та printf
#include <conio.h> // Визначення бібліотеки функцій для використання getch
struct system // опис структурного типу system
{
char spclass[2]; //специфікація поля opersystem
float prmassa; //специфікація поля sybd
float proc; //специфікація поля vnpam
int chicl; //специфікація поля operpam
};
int main(void) //визначення головної функції
{
struct system a[3], x; //ініціалізація масиву a з трьох елементів, та змінної х структурного типу system
int i, k=1; //ініціалізація змінних i,k
for (i = 0; i < 3; i++) //оголошення циклу з параметром
{
printf("spclass, prmassa, proc, chicl\n"); //запрошення на введення даних
scanf("%s%f%f%d", &a[i].spclass, &a[i].prmassa, &a[i].proc, &a[i].chicl); //зчитування змінних
}
printf("\n\n");
printf("spclass prmassa proc chicl\n");
for (i = 0; i < 3; i++)
{
printf("%2s %6.4f %9.6f %14d\n", a[i].spclass, a[i].prmassa, a[i].proc, a[i].chicl); // & в printf --> error
}
while (k != 0) //оголошення циклу з передумовою, для сортування масиву методом бульбашки
{
k = 0; //присвоєння змінній k значення 0
for(i = 0; i < 2; i++) //оголошення циклу з параметром
{
if (a[i].chicl > a[i + 1].chicl) //порівняння елементів масиву
{
x = a[i]; //обмін значеннями двома сусідніми елементами масиву
a[i] = a[i + 1];
a[i + 1] = x;
k = 1;
};
};
};
printf("\n\n");
printf("spclass prmassa proc chicl\n");
for (i = 0; i < 3; i++)
{
printf("%2s %6.4f %9.6f %14d\n", a[i].spclass, a[i].prmassa, a[i].proc, a[i].chicl); //Виведення впорядкованої таблиці // & в printf --> error
};
//getch(); //функція для затримки консолі
getchar();
getchar();
}
Объяснение кода листинга программы
Список элементов кода:
- #include
- Подключение библиотеки функций для использования scanf и printf - #include
- Подключение библиотеки функций для использования getch - struct system - Описание структурного типа system
- int main(void) - Определение главной функции
- struct system a[3], x; - Инициализация массива a из трех элементов и переменной x структурного типа system
- int i, k=1; - Инициализация переменных i и k
- for (i = 0; i < 3; i++) - Ограничение цикла для ввода данных
- printf(
spclass, prmassa, proc, chicl\n); - Запрос на ввод данных - scanf(
%s%f%f%d, &a[i].spclass, &a[i].prmassa, &a[i].proc, &a[i].chicl); - Считывание переменных - printf(
\n\n); - Вывод символа новой строки - printf(
spclass prmassa proc chicl\n); - Вывод заголовка таблицы - for (i = 0; i < 3; i++) - Ограничение цикла для вывода данных
- printf(
%2s %6.4f %9.6f %14d\n, a[i].spclass, a[i].prmassa, a[i].proc, a[i].chicl); - Вывод данных в таблицу - while (k != 0) - Ограничение цикла для сортировки массива методом пузырька
- { - Начало блока кода
- k = 0; - Присваивание переменной k значение 0
- for(i = 0; i < 2; i++) - Ограничение цикла для сравнения элементов массива
- if (a[i].chicl > a[i + 1].chicl) - Сравнение элементов массива
- { - Начало блока кода
- x = a[i]; - Обмен значениями двух соседними элементами массива
- a[i] = a[i + 1]; - Перестановка элементов массива
- a[i + 1] = x; - Возврат элементов на исходные места
- k = 1; - Присваивание переменной k значение 1
- }; - Конец блока кода
- printf(
\n\n); - Вывод символа новой строки - printf(
spclass prmassa proc chicl\n); - Вывод заголовка таблицы - for (i = 0; i < 3; i++) - Ограничение цикла для вывода данных
- printf(
%2s %6.4f %9.6f %14d\n, a[i].spclass, a[i].prmassa, a[i].proc, a[i].chicl); - Вывод данных в таблицу - getchar(); - Функция для задержки консоли
- getchar(); - Функция для задержки консоли
- getchar(); - Функция для задержки консоли