Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
warword
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 13
#1

Вывод строки в неверной кодировке - C++

10.10.2015, 21:00. Просмотров 179. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Lab4_Seravin(UC8-31).cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
struct Dis //Структура "Дисциплина"
{
    char Name[64]; //Название дисциплины
    int Score; // Оценка
};
 
struct student //Структура "Студент"
{
    char FIO[64]; //Имя студента
    Dis Distip[4]; //Дисциплины (массив)
};
 
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "rus");
    student *pG; // Указатель на массив структур
    int n; // Число элементов массива
    printf_s("n=");
    scanf_s("%d", &n); // Вводим число элементов массива
    pG = (student *)malloc(n*sizeof(student)); // Выделяем память под массив структур
    printf("Введите названия дисциплин(до 4-х): \n");
    for (int j = 0,i=0; j < 4; j++)
        {
            printf_s("Дисциплина №%d: ", j + 1);
            fflush(stdin);
            gets_s(pG[i].Distip[j].Name);
            OemToAnsi(pG[i].Distip[j].Name, pG[i].Distip[j].Name);
        }
  
    for (int i = 0; i < n; i++) // Цикл ввода данных с клавиатуры
    {
        printf_s("Студент #%d", i + 1);
        printf_s("\nFIO: ");
        _flushall(); // Сброс всех буферов ввода- вывода
        gets_s(pG[i].FIO);
        OemToAnsi(pG[i].FIO, pG[i].FIO);
        printf_s("\tОценки\n"); 
        for (int j = 0; j < 4; j++)
        {
            fflush(stdin);
            printf_s("По дисциплине %s: ", pG[i].Distip[j].Name);
            scanf_s("%d", &pG[i].Distip[j].Score);
        }
    }
 
    for (int i = 0; i < n; i++) // Цикл печати введенных данных
    {
        printf("\nСтудент №%d %s\n", i + 1, pG[i].FIO);
        for (int j = 0; j < 4; j++)
            printf("%s: %d; ", pG[i].Distip[j].Name, pG[i].Distip[j].Score);
    }
    int k = 0;
    printf("\nСколько студентов имеют неудовлетворительную оценку по заданному предмету\n");
 
    for (int j = 0; j < 4; j++)//Находим неудовлетворительную оценку
    {
        for (int i = 0; i < n; i++)
        {
            printf("По дисциплине %s: ", pG[i].Distip[j].Name);
            for (i = 0; i < n; i++)
                if (pG[i].Distip[j].Score == 2) k++;
                printf("%d\n", k); k = 0; //Выводим результат (количество 2)
        }
    }
    free(pG); // Освобождаем память
    system("pause"); // Останавливаем программу, ждем нажатия любой клавиши
}
Миниатюры
Вывод строки в неверной кодировке  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 21:00     Вывод строки в неверной кодировке
Посмотрите здесь:

Строки(вывод) C++
Вывод части строки C++
C++ Вывод строки
C++ Вывод строки в файл
C++ Вывод числа из строки
C++ Вывод строки символов
C++ Вывод командной строки
Вывод на экран чётных слов строки исправить на вывод нечётных слов C++
C++ Строки. вывод не получается
C++ Форматный вывод из файла в программе тестирования в неверной кодировке
C++ Чтение файла в кодировке utf-8 и вывод в консоль
C++ Формат строки в кодировке Unicode?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6244 / 5847 / 1891
Регистрация: 18.12.2011
Сообщений: 14,980
Завершенные тесты: 1
10.10.2015, 21:31     Вывод строки в неверной кодировке #2
Все distir Вы ввели в pG[0]
а в pG[1] их нет. Вот и выводится белиберда.
warword
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 13
10.10.2015, 21:49  [ТС]     Вывод строки в неверной кодировке #3
То есть как можно исправить?

Добавлено через 52 секунды
То есть как можно исправить?
nmcf
4919 / 4257 / 1425
Регистрация: 14.04.2014
Сообщений: 16,737
10.10.2015, 21:59     Вывод строки в неверной кодировке #4
Скопировать дисциплины первого студента всем остальным. Только если они у всех одинаковые, зачем их вообще включать в структуру для каждого студента?
warword
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 13
10.10.2015, 22:23  [ТС]     Вывод строки в неверной кодировке #5
Не понял. Можно по-подробней?
zss
Модератор
Эксперт С++
6244 / 5847 / 1891
Регистрация: 18.12.2011
Сообщений: 14,980
Завершенные тесты: 1
10.10.2015, 22:45     Вывод строки в неверной кодировке #6
Ознакомьтесь где-нибудь с принципами оптимизации Баз Данных.
В частности, поняли бы, что нужно создать отдельную таблицу со списком дисциплин.
А в таблицу студентов записывать только пары Код дисциплины-Оценка.

Грубо исправить Вашу программу можно поставив 32-35 строки вместо 49
Yandex
Объявления
10.10.2015, 22:45     Вывод строки в неверной кодировке
Ответ Создать тему
Опции темы

Текущее время: 23:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru