Неверная кодировка в выдаче переменных - 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;
}

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

  1. В коде представлен программа на языке C, которая запрашивает у пользователя ввод данных о трех сельскохозяйственных предприятиях и выводит эти данные в виде таблицы.
  2. Переменные name1, name2, name3 содержат названия предприятий (максимальное количество символов в названии — 9).
  3. Переменные vs1, vs2, vs3 содержат виды собственности предприятий (максимальное количество символов в виде собственности — 1).
  4. Переменные pl1, pl2, pl3 содержат площади земли предприятий (максимальное количество цифр в площади — 4).
  5. Переменные kl1, kl2, kl3 содержат количество работников предприятий (максимальное количество цифр в количестве работников — 5).
  6. Ввод данных осуществляется с помощью функции scanf.
  7. Вывод данных осуществляется с помощью функции printf.
  8. Код содержит блоки вывода заголовков таблицы, ввода данных и вывода примечаний.
  9. Значения переменных name1, vs1, pl1, kl1 присваиваются после ввода пользователем данных о первом предприятии.
  10. Значения переменных name2, vs2, pl2, kl2 присваиваются после ввода пользователем данных о втором предприятии.
  11. Значения переменных name3, vs3, pl3, kl3 присваиваются после ввода пользователем данных о третьем предприятии.
  12. Значения переменных vs1, vs2, vs3 используются для формирования столбца Вид собственности таблицы.
  13. Значения переменных pl1, pl2, pl3 используются для формирования столбца Площадь земли таблицы.
  14. Значения переменных kl1, kl2, kl3 используются для формирования столбца Колличество работников таблицы.
  15. Значения переменных name1, name2, name3 используются для формирования строк таблицы.
  16. Значения переменных vs1, vs2, vs3 используются для формирования строк таблицы.
  17. Значения переменных pl1, pl2, pl3 используются для формирования строк таблицы.
  18. Значения переменных kl1, kl2, kl3 используются для формирования строк таблицы.
  19. Значения переменных name1, name2, name3 не используются для формирования примечаний.
  20. Значения переменных vs1, vs2, vs3 не используются для формирования примечаний.
  21. Значения переменных pl1, pl2, pl3 не используются для формирования примечаний.
  22. Значения переменных kl1, kl2, kl3 не используются для формирования примечаний.

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


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

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

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