Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

10.10.2015, 21:00. Просмотров 207. Ответов 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"); // Останавливаем программу, ждем нажатия любой клавиши
}
0
Миниатюры
Вывод строки в неверной кодировке  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 21:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод строки в неверной кодировке (C++):

Форматный вывод из файла в программе тестирования в неверной кодировке - C++
Нужна Ваша помощь. Есть файл(test), имеющий структуру Нужно сделать так, чтобы выводилась первая строка (До знака &quot;?&quot;), затем еще 4...

Чтение файла в кодировке utf-8 и вывод в консоль - C++
Здорова! Пытаюсь прочитать файл в кодировке utf-8 (вот он ) и вывожу его в консоль, ничего не получается. Вот код: #include...

Формат строки в кодировке Unicode? - C++
Какой формат соответствует строке в кодировке UNICODE?

Вывод на экран чётных слов строки исправить на вывод нечётных слов - C++
#include&lt;conio.h&gt; #include&lt;iostream.h&gt; #include&lt;string.h&gt; #include&lt;stdio.h&gt; int i,l,j,k,p,n; char txt; char a,b; main() { ...

Вывод строки - C++
Всем привет! Такой вот вопрос: почему при выводе строки в конце печатаются какие-то непонятные знаки? И как это убрать? #include...

Строки(вывод) - C++
такая проблема... дана задача Вывести на экран последние 5 символов заданной строки. Длина строки должна быть не менее 10. ...

5
zss
Модератор
Эксперт С++
6516 / 6078 / 2001
Регистрация: 18.12.2011
Сообщений: 15,805
Завершенные тесты: 1
10.10.2015, 21:31 #2
Все distir Вы ввели в pG[0]
а в pG[1] их нет. Вот и выводится белиберда.
0
warword
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 13
10.10.2015, 21:49  [ТС] #3
То есть как можно исправить?

Добавлено через 52 секунды
То есть как можно исправить?
0
nmcf
5517 / 4827 / 1634
Регистрация: 14.04.2014
Сообщений: 19,603
10.10.2015, 21:59 #4
Скопировать дисциплины первого студента всем остальным. Только если они у всех одинаковые, зачем их вообще включать в структуру для каждого студента?
0
warword
0 / 0 / 0
Регистрация: 10.09.2015
Сообщений: 13
10.10.2015, 22:23  [ТС] #5
Не понял. Можно по-подробней?
0
zss
Модератор
Эксперт С++
6516 / 6078 / 2001
Регистрация: 18.12.2011
Сообщений: 15,805
Завершенные тесты: 1
10.10.2015, 22:45 #6
Ознакомьтесь где-нибудь с принципами оптимизации Баз Данных.
В частности, поняли бы, что нужно создать отдельную таблицу со списком дисциплин.
А в таблицу студентов записывать только пары Код дисциплины-Оценка.

Грубо исправить Вашу программу можно поставив 32-35 строки вместо 49
0
10.10.2015, 22:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2015, 22:45
Привет! Вот еще темы с ответами:

Вывод из строки в файл - C++
Уважаемые знатоки у меня к вам несколько вопросов по программе.. #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; using...

Вывод строки в файл - C++
Препод задал объяснить задал объяснить программу: #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; /* * */ int main(int argc,...

Вывод части строки - C++
c++ Есть ли простая команда для вывода части строки(ну или n первых символов)? Может я перегрелся или еще что, но сколько не искал не...

Вывод строки в printf - C++
Есть варианты кода, пытающиеся вывести строку &quot;abc&quot; в stdout. #include &lt;stdio.h&gt; int main () { printf (&quot;%s&quot;, &quot;abc&quot;); ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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