Неверная кодировка в выдаче переменных - C (СИ)
Формулировка задачи:
Здравствуйте! У меня такая проблема - когда ввожу данные для заполнения таблицы, в самой таблице появляются кракозябры:
Подскажите, пожалуйста, как исправить?
#include <stdio.h> #include <stdafx.h> #include <locale> int main(void) { setlocale(LC_ALL, "Russian"); char name1[9], name2[9], name3[9]; char vs1, vs2, vs3; int pl1, pl2, pl3; float kl1, kl2, kl3; /* Введение фактических данных*/ printf("1. Введите название, вид собственности, площадь, колличество работников >"); scanf("%s %c %d %f",name1, &vs1, &pl1, &kl1); printf("2. Введите название, вид собственности, площадь, колличество работников >"); scanf("%s %c %d %f",name2, &vs2, &pl2, &kl2); printf("3. Введите название, вид собственности, площадь, колличество работников >"); scanf("%s %c %d %f",name3, &vs3, &pl3, &kl3); /* Вывод таблицы */ /* вывод заголовков */ printf("-------------------------------------------------------------\n"); printf("| Сельскохозяйственные предприятия |\n"); printf("|-----------------------------------------------------------|\n"); printf("| Название | Вид собственности | Площадь земли | Колличество|\n"); printf("| | | (га) | работников |\n"); printf("|----------|-------------------|---------------|------------|\n"); /* вывод строк фактических данных */ printf("|%9s | %1c | %4d | %-5.0f |\n", name1, vs1, pl1, kl1); printf("|%9s | %1c | %4d | %-5.0f |\n", name2, vs2, pl2, kl2); printf("|%9s | %1c | %4d | %-5.0f |\n", name3, vs3, pl3, kl3); /* вывод примечаний */ printf("|-----------------------------------------------------------|\n"); printf("| Вид собственности: Д - государственная, Ч - частная, |\n"); printf("| К - кооперативная |\n"); printf("-------------------------------------------------------------\n"); return 0; }
Решение задачи: «Неверная кодировка в выдаче переменных»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main(void) { system("chcp 1251"); char name1[9], name2[9], name3[9]; char vs1, vs2, vs3; int pl1, pl2, pl3; float kl1, kl2, kl3; /* Введение фактических данных*/ printf("1. Введите название, вид собственности, площадь, колличество работников >"); scanf("%s %c %d %f",name1, &vs1, &pl1, &kl1); printf("2. Введите название, вид собственности, площадь, колличество работников >"); scanf("%s %c %d %f",name2, &vs2, &pl2, &kl2); printf("3. Введите название, вид собственности, площадь, колличество работников >"); scanf("%s %c %d %f",name3, &vs3, &pl3, &kl3); /* Вывод таблицы */ /* вывод заголовков */ printf("-------------------------------------------------------------\n"); printf("| Сельскохозяйственные предприятия |\n"); printf("|-----------------------------------------------------------|\n"); printf("| Название | Вид собственности | Площадь земли | Колличество|\n"); printf("| | | (га) | работников |\n"); printf("|----------|-------------------|---------------|------------|\n"); /* вывод строк фактических данных */ printf("|%s | %1c | %4d | %-5.0f |\n", name1, vs1, pl1, kl1); printf("|%s | %1c | %4d | %-5.0f |\n", name2, vs2, pl2, kl2); printf("|%s | %1c | %4d | %-5.0f |\n", name3, vs3, pl3, kl3); /* вывод примечаний */ printf("|-----------------------------------------------------------|\n"); printf("| Вид собственности: Д - государственная, Ч - частная, |\n"); printf("| К - кооперативная |\n"); printf("-------------------------------------------------------------\n"); system("pause"); return 0; }
Объяснение кода листинга программы
- В коде представлен программа на языке C, которая запрашивает у пользователя ввод данных о трех сельскохозяйственных предприятиях и выводит эти данные в виде таблицы.
- Переменные name1, name2, name3 содержат названия предприятий (максимальное количество символов в названии — 9).
- Переменные vs1, vs2, vs3 содержат виды собственности предприятий (максимальное количество символов в виде собственности — 1).
- Переменные pl1, pl2, pl3 содержат площади земли предприятий (максимальное количество цифр в площади — 4).
- Переменные kl1, kl2, kl3 содержат количество работников предприятий (максимальное количество цифр в количестве работников — 5).
- Ввод данных осуществляется с помощью функции scanf.
- Вывод данных осуществляется с помощью функции printf.
- Код содержит блоки вывода заголовков таблицы, ввода данных и вывода примечаний.
- Значения переменных name1, vs1, pl1, kl1 присваиваются после ввода пользователем данных о первом предприятии.
- Значения переменных name2, vs2, pl2, kl2 присваиваются после ввода пользователем данных о втором предприятии.
- Значения переменных name3, vs3, pl3, kl3 присваиваются после ввода пользователем данных о третьем предприятии.
- Значения переменных vs1, vs2, vs3 используются для формирования столбца
Вид собственности
таблицы. - Значения переменных pl1, pl2, pl3 используются для формирования столбца
Площадь земли
таблицы. - Значения переменных kl1, kl2, kl3 используются для формирования столбца
Колличество работников
таблицы. - Значения переменных name1, name2, name3 используются для формирования строк таблицы.
- Значения переменных vs1, vs2, vs3 используются для формирования строк таблицы.
- Значения переменных pl1, pl2, pl3 используются для формирования строк таблицы.
- Значения переменных kl1, kl2, kl3 используются для формирования строк таблицы.
- Значения переменных name1, name2, name3 не используются для формирования примечаний.
- Значения переменных vs1, vs2, vs3 не используются для формирования примечаний.
- Значения переменных pl1, pl2, pl3 не используются для формирования примечаний.
- Значения переменных kl1, kl2, kl3 не используются для формирования примечаний.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д