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

Исчезают значения в массиве символов в структуре - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Реализация класса http://www.cyberforum.ru/cpp-beginners/thread858383.html
Помогите понять пожалуйста. Пример из Дейтела: #include "stdafx.h" #include <iostream> #include "GradeBook.h" using namespace std; GradeBook::GradeBook(std::string name) {
C++ case -> if Надо переделать с си++ на си, т.е. case на if while(choice != 4) { switch(choice) { case 1: add_student(); break; case 2: http://www.cyberforum.ru/cpp-beginners/thread858374.html
C++ Составить функцию нахождения максимального элемента Мх в диагонали матрицы, параллельной главной диагонали
Пожалуйста помогите с решением задачи на С++ Составить функцию нахождения максимального элемента Мх в диагонали матрицы, параллельной главной диагонали. Используя эту функцию в матрице F. Найти сумму максимальных элементов Мх всей диагонали, лежащих выше побочной, а в матрице E - произведение минимальных элементов Мх всей диагонали, лежащих ниже побочной
Exception C++
Реализовать свой класс исключений zero, производный от std::exception (используется при попытке деления вектора на ноль). В классе zero должна быть перегружена функция what(). Функция должна возвращать строку "division_by_zero". помогите его реализовать
C++ Шифр перестановки "Скитала" http://www.cyberforum.ru/cpp-beginners/thread858334.html
Привет всем) помогите написать шифр перестановки "Скитала" на С++
C++ UTF8 To Char Помогите с задачкой! Мне надо сделать программу которая переводит строки из UTF8 в нормальный текст и обратно (норм текст это русские буквы и несколько символов) Пытался искать в интернете нечего не нашел чтобы помогло! (или плохо искал) Заранее спасибо! подробнее

Показать сообщение отдельно
Pirokar
4 / 4 / 0
Регистрация: 21.10.2012
Сообщений: 54
07.05.2013, 16:12     Исчезают значения в массиве символов в структуре
Доброго времени дня! Помогите, пожалуйста, уважаемые! Уже мозги сломал ((( Думал, что вроде бы все просто, но сейчас я просто в тупике (((
В общем есть массив структур. Каждая структура представляет собой русское слово и порядковый номер первой буквы этого слова в русском алфавите. В программе задается строка, затем подсчитывается, сколько всего слов в строке, создается массив структур на нужное количество элементов, и потом в поле каждой структуры посимвольно копируется слово из строки. Так вот здесь и проблема. Как только следующее слово посимвольно скопировалось, предыдущее слово в предыдущей структуре заменяется на какой-то мусор! И в итоге если у нас три слова копировались посимвольно, то на экран выводится только одно последнее (((
Очень на Вас рассчитываю! Вот код:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <stdio.h>
#include <string>
#include <locale>
typedef struct{
    int letter;
    char wrd[];
    } Word;
 
using namespace std;
 
void bubbleSort(Word* arr, int lng)
{
    int i, j;
    Word tmp;
 
    for(i = 0; i < lng - 1; ++i) // i - номер прохода
    {
        for(j = 0; j < lng - 1; ++j) // внутренний цикл прохода
        {
            if (arr[j + 1].letter < arr[j].letter)
            {
                tmp = arr[j + 1];
                arr[j + 1] = arr[j];
                arr[j] = tmp;
            }
        }
    }
 
}
int main()
{
    setlocale(LC_ALL,"Russian");
    int rus_count = 0;
    int j = 0;
    int i, k;
    bool russian = true;
    char str[] = "Это большая лаба";
    cout << "\nИсходная строка: " << str;
    char *st = str;
    for (; ; st++)
    {
        if (isalpha(*st))
        {
            while ((*st != ' ') && (*st != '\0'))
                st++;
            rus_count++;
        }
        if (*st == '\0') break;
    }
    Word mass[rus_count]; //Сортируемый массив
 
    for (i = 0, k = 0; str[k-1] != '\0' ; k++, i++)
    {
        if (isalpha(str[k]))
        {
            while ((str[k] != ' ') && (str[k] != '\0'))
            {
                mass[i].wrd[j++] = str[k];
                k++;
            }
         mass[i].wrd[j] = '\0';
         j = 0;
         if ((mass[i].wrd[0] == 'А') || (mass[i].wrd[0] == 'а')) mass[i].letter = 1;
         else if ((mass[i].wrd[0] == 'Б') || (mass[i].wrd[0] == 'б')) mass[i].letter = 2;
         else if ((mass[i].wrd[0] == 'В') || (mass[i].wrd[0] == 'в')) mass[i].letter = 3;
         else if ((mass[i].wrd[0] == 'Г') || (mass[i].wrd[0] == 'г')) mass[i].letter = 4;
         else if ((mass[i].wrd[0] == 'Д') || (mass[i].wrd[0] == 'д')) mass[i].letter = 5;
         else if ((mass[i].wrd[0] == 'Е') || (mass[i].wrd[0] == 'е')) mass[i].letter = 6;
         else if ((mass[i].wrd[0] == 'Ё') || (mass[i].wrd[0] == 'ё')) mass[i].letter = 7;
         else if ((mass[i].wrd[0] == 'Ж') || (mass[i].wrd[0] == 'ж')) mass[i].letter = 8;
         else if ((mass[i].wrd[0] == 'З') || (mass[i].wrd[0] == 'з')) mass[i].letter = 9;
         else if ((mass[i].wrd[0] == 'И') || (mass[i].wrd[0] == 'и')) mass[i].letter = 10;
         else if ((mass[i].wrd[0] == 'Й') || (mass[i].wrd[0] == 'й')) mass[i].letter = 11;
         else if ((mass[i].wrd[0] == 'К') || (mass[i].wrd[0] == 'к')) mass[i].letter = 12;
         else if ((mass[i].wrd[0] == 'Л') || (mass[i].wrd[0] == 'л')) mass[i].letter = 13;
         else if ((mass[i].wrd[0] == 'М') || (mass[i].wrd[0] == 'м')) mass[i].letter = 14;
         else if ((mass[i].wrd[0] == 'Н') || (mass[i].wrd[0] == 'н')) mass[i].letter = 15;
         else if ((mass[i].wrd[0] == 'О') || (mass[i].wrd[0] == 'о')) mass[i].letter = 16;
         else if ((mass[i].wrd[0] == 'П') || (mass[i].wrd[0] == 'п')) mass[i].letter = 17;
         else if ((mass[i].wrd[0] == 'Р') || (mass[i].wrd[0] == 'р')) mass[i].letter = 18;
         else if ((mass[i].wrd[0] == 'С') || (mass[i].wrd[0] == 'с')) mass[i].letter = 19;
         else if ((mass[i].wrd[0] == 'Т') || (mass[i].wrd[0] == 'т')) mass[i].letter = 20;
         else if ((mass[i].wrd[0] == 'У') || (mass[i].wrd[0] == 'у')) mass[i].letter = 21;
         else if ((mass[i].wrd[0] == 'Ф') || (mass[i].wrd[0] == 'ф')) mass[i].letter = 22;
         else if ((mass[i].wrd[0] == 'Х') || (mass[i].wrd[0] == 'х')) mass[i].letter = 23;
         else if ((mass[i].wrd[0] == 'Ц') || (mass[i].wrd[0] == 'ц')) mass[i].letter = 24;
         else if ((mass[i].wrd[0] == 'Ч') || (mass[i].wrd[0] == 'ч')) mass[i].letter = 25;
         else if ((mass[i].wrd[0] == 'Ш') || (mass[i].wrd[0] == 'ш')) mass[i].letter = 26;
         else if ((mass[i].wrd[0] == 'Щ') || (mass[i].wrd[0] == 'щ')) mass[i].letter = 27;
         else if ((mass[i].wrd[0] == 'Э') || (mass[i].wrd[0] == 'э')) mass[i].letter = 31;
         else if ((mass[i].wrd[0] == 'Ю') || (mass[i].wrd[0] == 'ю')) mass[i].letter = 32;
         else if ((mass[i].wrd[0] == 'Я') || (mass[i].wrd[0] == 'я')) mass[i].letter = 33;
        }
    }
 
 
    Word *mas = &mass[0];
    bubbleSort(mas, rus_count);
 
 
cout << "\nОтсортированный массив структур: ";
for(i = 0; i < rus_count; i++)
    cout << "\n" << mass[i].wrd << " Номер: " << mass[i].letter << endl;
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru