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

Русские символы при выводе массива структуры - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка матрицы методом пузырька http://www.cyberforum.ru/cpp-beginners/thread1175060.html
Чтобы не пересказывать, просто скопирую условие задачи: "Строки вещественной матрицы упорядочить по возрастанию ее последнего столбца и в качестве вектора Х принять главную диагональ преобразованной матрицы А. Вывести исходную матрицу, преобразованную матрицу и вектор Х", вот имеющийся на данный момент код, (используется сортировка методом "Пузырька"): #include "stdafx.h" #include...
C++ Отобразить главную и побочную диагонали симметрично относительно горизонтальной оси Заполнить матрицу случайными числами. Отобразить главную и побочную диагонали симметрично относительно горизонтальной оси. http://www.cyberforum.ru/cpp-beginners/thread1175056.html
Линейный список и функции обработки C++
Написать программу с функциями, которая: а)подсчитывает количество вхождений элемента C в список M ; б)удаляет со списка M все вхождения элемента C; в)печатает в обратном порядке элементы списка M. помогите.....
C++ Необработанное исключение в "0x776315de" в "c++1.exe": 0xC0000005: Нарушение прав доступа при записи "0x40e000
Здравствуйте. Только начал работать с динамическим массивом, но не могу понять почему появляется эта ошибка. Работаю с библиотекой sfml. Пришлось самому реализовывать функцию ввода через события нажатий различных клавиш. Реализован весь ввод русского алфавита. Если ничего не нажимать, а просто закрыть окно, то нет этой ошибки. Если что-нибудь вводить , а затем нажать Esc или "крестик" то...
C++ Стеки, функции добавления и удаления элементов http://www.cyberforum.ru/cpp-beginners/thread1175045.html
Программа на стеки выводит на экран 9876543210 ..помогите сделать так, чтобы можно было вводить вручную, удалять элементы из стека, добавлять,и в случае если эллементов не будет, высвечивалась надпись "Стек пуст" #include <iostream> using namespace std; struct List { int x;
C++ Ввести строку,переделать последовательности цифровых символов в числа и найти их сумму помогите пожалуйста,новичок в программировании,хочу решить эту задачу,спасибо заранее) ввести ряд,переделать последовательности цифровых символов на нем на числа и найти их сумму подробнее

Показать сообщение отдельно
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
18.05.2014, 17:53     Русские символы при выводе массива структуры
С учетом замены объявления char на wchar_t
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <cstdlib>          // для функции system
#include <iomanip>          // для функций отступов setw
#include <clocale>          // для функций настройки локали
#include <windows.h>
 
using namespace std;
///////////////////////////////////////////////////////////
struct workers
{
    wchar_t name [15];         // имя
    wchar_t lastname [15];     // фамилия
    int age;                // возраст
    int growth;             // рост
};
///////////////////////////////////////////////////////////
void InputMembers(workers *lrh, int len);
void ShowMembers(workers *lrh, int len);
void SortByGrowth(workers *lrh, int len);
void NameOfHigh(workers *lrh, int len);
void SameGrowth (workers *lrh, int len);
///////////////////////////////////////////////////////////
void InputMembers(workers *lrh, int len)
{
    for(int i = 0; i < len; ++i)
    {
        wcout <<L"Введите данные для "<<i+1<<L"-го сотрудника\n";
        wcout << setw(9) << setiosflags(ios::left) << L"Имя:";
        //_flushall(); cin.getline(lrh[i].name, 15);
        wcin >> lrh[i].name;
        wcout << setw(9) << L"Фамилия:"; wcin >> lrh[i].lastname;
        wcout << setw(9) << L"Возраст:"; wcin >> lrh[i].age;
        wcout << setw(9) << L"Рост:"; wcin >> lrh[i].growth;
        wcout << endl;
    }
}
void ShowMembers(workers *lrh, int len)
{
    wcout << setw(3) << setiosflags(ios::left) << L"№" << setw(12)
    << L"Фамилия" << setw(12) << L"Имя" << setw(10) << L"Возраст"
    << setw(5) << L"Рост" << endl;
    cout << "------------------------------------------\n";
    for(int i = 0; i < len; ++i)
    {
        wcout << setw(3) << i+1 << setw(12) << lrh[i].lastname
        << setw(12) << lrh[i].name << setw(10) << lrh[i].age << setw(5)
        << lrh[i].growth << endl;
    }
    wcout << "------------------------------------------\n";
}
void SortByGrowth(workers *lrh, int len)
{
    bool flag = false;
    int num = 0;
    float tmp = 0;
    for(int i = 0; i < len; ++i)
    {
        if( lrh[i].age >= 18 && lrh[i].age <=20)
        {
            flag = true;
            num++;
            tmp += lrh[i].growth;
        }
    }
    if(num != 0)
    wcout << L"\nСредний рост сотрудников в возрасте от 18 до 20 лет: "
    << (tmp / num) << L" см." << endl;
    else
        wcout << L"\nВ списке нет сотрудниеов в возрасте от 18 до 20 лет."
        << endl;
}
void NameOfHigh(workers *lrh, int len)
{
    int tmp = 0;
    workers worker;         // объявление структурной переменной
    for(int i = 0; i < len; ++i)
    {
        if(lrh[i].growth > tmp)
        {
            worker = lrh[i];
        }
    }
    wcout << worker.name << L" самый высокий работник. Его рост "
    << worker.growth << L" см" << endl;
}
void SameGrowth(workers *lrh, int len)
{
    bool same=false;
    wcout << L"У следующих работников одинаковый рост:\n";
    for( int i=0; i < len; ++i)
    {
        for(int j=i+1; j < len; j++)
            if(lrh[i].growth == lrh[j].growth)
            {
               same=true;
               wcout << lrh[i].name <<L" И "<<lrh[j].name << endl;
            }
    }
    if(!same)
        wcout << L"Работников с одинаковым ростом в списке нет.\n";
}
const int col = 4;          // количество работников
///////////////////////////////////////////////////////////
int main()
{
    setlocale(LC_CTYPE, ".866");
 
    workers Sheet[col];         // массив работников
    wcout <<L"\n1. Создание списка сотрудников:\n" << endl;
    InputMembers(Sheet, col);
    wcout << endl;
    wcout <<L"\n2. Список всех сотрудников:\n" << endl;
    ShowMembers(Sheet, col);
    wcout << endl;
    wcout <<L"\n3. Вывод среднего роста сотрудников, которые ";
    wcout <<L"находятся в возрасте от 18 до 20 лет:\n";
    SortByGrowth(Sheet, col);
    wcout<<endl;
    wcout<<L"\n4. Определение имени самого высокого сотрудника.\n" << endl;
    NameOfHigh(Sheet, col);
    wcout << endl;
    wcout <<L"\n5. Определение сотрудников с одинаковым ростом.\n" << endl;
    SameGrowth(Sheet, col);
    wcout<< endl;
    system("pause");
    return 0;
}
 
Текущее время: 07:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru