Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
1

Постоянное добавление в символьный массив новых символов

05.05.2017, 10:56. Показов 1164. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
не могу понять что натворил
массив strr[256] заполнялся нормально, постоянно при новой генерации у него были новые значения, но после добавления кода в case 2 перестал принимать новые значения, а стал просто прибавлять к старым

вот код, отладчик в dev C++ отказывается работать, пишет что нет zlib1.dll

upd я не понял что случилось на форуме с русскими буквами кода, но при работе программы они не мешают и оторбажаются адекватно
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <stdio.h>
#include <limits>
 
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int i, j, k, a, n, change,val=1,prov=1;
    char strrr;
    char strr[256]="";
    
    while (val==1){
        if (prov==1){cout << "Ýëåìåíòû äëÿ ðàáîòû åù¸ íå ñãåíåðèðîâàíû\n";
        } else cout << "Ýëåìåíòû äëÿ ðàáîòû ñãåíåðèðîâàíû\n";
            cout << "Âûáåðèòå äåéñòâèå: \n1. Ñãåíåðèðîâàòü íîâóþ ñòðîêó ýëåìåíòîâ \n2. Ïðîèçâåñòè âîçäåéñòâèå íà ýëåìåíò\n3. Óçíàòü ýëåìåíò íà ïîçèöèè\n4. Âûõîä\n";
            vvod:
            cout << "Ââåäèòå íîìåð äåéñèòâèÿ è íàæìèòå Enter: ";
        while(!(cin>>change) || cin.get() != '\n') //  çàùèòà îò ââîäà áóêâ èëè ÷èñåë íå integer
    {
        cout<<"Ââåä¸í íåêîððåêòíûé ñèìâîë\n";
        cin.clear(); // î÷èñòêà ïîòîêà ââîäà
        cin.sync(); // î÷èçàåò ïîòîê ââîäà îò èìåþùèõñÿ ñèìâîëîâ
        cout<<"Ââåäèòå íîìåð äåéñòâèÿ è íàæìèòå Enter: ";
    }
            switch (change){
            case 1:{i=NULL;
    j=NULL;
    k=NULL;
    a=NULL;
    n=NULL;
    change=NULL;
    again:
    system("cls");
    cout << "Ââåäèòå êîëè÷åñòâî ýëåìåíòîâ ";
    cin >> n;
    if (n>255 || n<1){
        cout << "Íåâåðíî ââåäåííî êîëè÷åñòâî ýëåìåíòîâ" << endl;
        system("pause");
        goto again;
    }
    char strs[2]="";
    srand((unsigned int)time(NULL));
   do {
        a = (rand()%3); //ñëó÷àéíàÿ ãåíåðàöèÿ ÷èñëà äëÿ îïðåäåëåíèÿ ñèìâîëà
        if (a==0) 
        { 
            strcpy(strs, "x");
        }
        if (a==1)
        {
            strcpy(strs, "y");
        }
        if (a==2)
        {
           strcpy(strs, "z");
        }
        strcat(strr,strs); // ïðèáàâëåíèå ê ñòðîêå ýëåìåíòîâ ñëó÷àéíî ñãåíåðèðîâàííîãî ñèìâîëà
        i=i+1;
    } while (i<n);
    system("cls");
    cout << "Ñãåíåðèðîâàííûå ýëåìåíòû \n" << strr << endl;
    prov=prov+1;
                break;
            }
            case 2:{
                break;
                system("cls");
                if (prov==1) {
                    cout << "Ýëåìåíòû äëÿ ðàáîòû åù¸ íå ñãåíåðèðîâàíû" << endl;
                    system("pause");
                    system("cls");
                    break;
                }
                again2:
                    system("cls");
            cout << "Ñãåíåðèðîâàííûå ýëåìåíòû \n" << strr << endl;
            cout << "Ââåäèòå íîìåð ýëåìåíòà, íà êîòîðûé áóäåò îêàçàíî âîçäåéñòâèå: ";
            while(!(cin>>a) || cin.get() != '\n') //  çàùèòà îò ââîäà áóêâ èëè ÷èñåë íå integer
    {
        cout<<"Ââåä¸í íåêîððåêòíûé ñèìâîë\n";
        cin.clear(); // î÷èñòêà ïîòîêà ââîäà
        cin.sync(); // î÷èçàåò ïîòîê ââîäà îò èìåþùèõñÿ ñèìâîëîâ
        cout << "Ââåäèòå íîìåð ýëåìåíòà, íà êîòîðûé áóäåò îêàçàíî âîçäåéñòâèå: ";
    }
        if (a>n || a<1){
        cout << "Íåâåðííî ââåä¸í íîìåð ýëåìåíòà" << endl;
        system("pause");
        goto again2;
    }
            char buff1[255]="";
            char buff2[255]="";
            char buff3[1]="";
            char bufft[255]="";
            strncpy(buff1,strr,a);
            cout << buff1 << endl;
            strcpy(bufft,&strr[a-1]);
            cout << bufft << endl;
            a=strlen(bufft);
            strcpy(buff2,&bufft[a]);
            cout << buff2 << endl;
            strncpy(buff3,bufft,1);
            cout << buff3 << endl;
            strcat (buff1, buff2);
            strcat (buff1, buff3);
            cout << buff1 << endl;
            system("pause");
            system("cls"); 
                break;
            }
            case 3:{
                system("cls");
                if (prov==1) {
                    cout << "Ýëåìåíòû äëÿ ðàáîòû åù¸ íå ñãåíåðèðîâàíû" << endl;
                    system("pause");
                    system("cls");
                    break;
                }
                again1:
                system("cls");
                cout << "Ñãåíåðèðîâàííûå ýëåìåíòû \n" << strr << endl;
                cout << "Íîìåð ïîçèöèè èíòåðåñóþùåãî ýëåìåíòà ";
    while(!(cin>>k) || cin.get() != '\n') //  çàùèòà îò ââîäà áóêâ èëè ÷èñåë íå integer
    {
        system("cls");
        cout<<"Ââåä¸í íåêîððåêòíûé ñèìâîë\n";
        cin.clear(); // î÷èñòêà ïîòîêà ââîäà
        cin.sync(); // î÷èçàåò ïîòîê ââîäà îò èìåþùèõñÿ ñèìâîëîâ
        cout << "Ñãåíåðèðîâàííûå ýëåìåíòû \n" << strr << endl;
        cout << "Íîìåð ïîçèöèè èíòåðåñóþùåãî ýëåìåíòà ";
    }
        if (k>n || k<1){
        cout << "Íåâåðííî ââåä¸í íîìåð ýëåìåíòà" << endl;
        system("pause");
        goto again1;
    }
    char out1[256]="";
    char out[1]="";
    strncpy(out1,strr,k); // ìàññèâ out1 ïîëó÷àåò ïåðâûå k ñèìâîëîâ - 0 ïðèìåð +xyz+|x
    strcpy(out,&out1[k-1]); // ìàññèâ out ïîëó÷àåò âñå ñèìâîëû ìàññèâà out1 íà÷èíàÿ ñ ïîçèöèè k-1, íà÷àëî ñòðîêè - 0 xy|+z+
    cout << "Ýëåìåíò ñòîÿùèé íà ïîçèöèè "<< k << " " << out << endl;
    system("pause");
    system("cls");
                break;
            }
            case 4:{
                val+=1;
                break;
            }
            default:{
                system("cls");
                cout << "Îøèáêà ââîäà" << endl;
                break;
            }
        }
}
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2017, 10:56
Ответы с готовыми решениями:

Организовать символьный массив с поэлементным сравнением символов
Здравствуйте! Подскажите пожалуйста, как можно организовать символьный массив с поэлементным...

Добавление новых элементов в массив
Подскажите пожалуйста как в С# добавить новые элементы в массив наиболее простым способом.Работала...

Массив символов. Графическое исследования функций (символьный экран дисплея)
Задав конкретную функцию F(x), построить на символьном экране дисплея ее график и графически найти...

Сравнение массивов и добавление новых элементов в массив
Добрый день! На данный момент столкнулся с двумя задачами, возникли определенные трудности. 1)...

9
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
05.05.2017, 11:34 2
Какие значения? Опиши внятно проблему.
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
05.05.2017, 12:10  [ТС] 3
Проблема такая.
Стоит генерация рандомно буквы (из пула x,y,z), после чего эта буква приписывается к тому массиву.
До какого-то момента, пока я тестил само заполнение массива, и поик буквы по номеру в массиве, всё было нормально, при повторной генерации, массив заполнялся с полного нуля
Затем, я добавил какие-то строки, точно не скажу, потому что не помню, но не работы с этим массивом точно (может нечайно не заметил и удалил их), после чего, массив перестал переписываться и стал просто заполняться при повторной генерации этих букв
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
05.05.2017, 12:20 4
Ну добавь очистку strr в начало case 1.
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
05.05.2017, 14:09  [ТС] 5
а как оно делается?
Читал, и на этом же форуме писалось, что символьные массивы не чистят
якобы нет такой операции с массивом
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
05.05.2017, 14:30 6
'\0' по нулевому индексу запиши.
0
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
05.05.2017, 14:39  [ТС] 7
а как это сделать с символьным массивом?
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
05.05.2017, 14:41 8
Лучший ответ Сообщение было отмечено Solaris5000 как решение

Решение

Solaris5000, ну ты чего? Это примитивно.
C++
1
strr[0] = '\0';
1
4 / 4 / 2
Регистрация: 29.04.2017
Сообщений: 226
05.05.2017, 14:52  [ТС] 9
аааа, так у массивов ' ' используются
я просто пихал всё "", и он ошибку выдавал
спасибо
блин... столько кода у меня теперь можно выкинуть на помойку
0
7792 / 6559 / 2984
Регистрация: 14.04.2014
Сообщений: 28,668
05.05.2017, 14:55 10
Цитата Сообщение от Solaris5000 Посмотреть сообщение
аааа, так у массивов ' ' используются
Когда один символ.
1
05.05.2017, 14:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2017, 14:55
Помогаю со студенческими работами здесь

Скопировать одномерный символьный массив в двумерный символьный массив
Здравствуйте, учусь программировать на Си. Столкнулся с проблемой: не могу скопировать одномерный...

Задан массив из k символов. Создать два новых массива
Ребят! Помогите пожалуйста Задан массив из k символов. Создать два новых массива: в первый...

Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в массиве.
Помогите решить лабораторные: 1,Задан символьный массив. Ввести с клавиатуры символ и вывести...

Дан символьный массив или строка. Найдите количество различных символов в нём, используя структуру данных стек
напишите программу решения задачи. Дан символьный массив или строка. найдите количество различных...

Добавление новых записей и новых полей
Есть одна проблемка: Делаю программку тут одну, в основе лежит БД(Access 2007). У меня есть...

Создать два новых файла: строковый и символьный
Помогите, пожалуйста, написать программку на Паскаль. Дано целое число K (K&gt;0) и строковый файл....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru