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

Где ошибка? Позиция в string - C++

Восстановить пароль Регистрация
 
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 15:05     Где ошибка? Позиция в string #1
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    int nr;
    string alfa, tekst, kod;
    alfa = "ABCDEFGHIKLMNOPQRSTVXYZ";
    for (int i=1; i <= alfa.length(); i++)
    {
        cout << "Enter text";
        cin >> tekst;
    }
 
    for (int j =1; j <= tekst.length(); j++) {
        nr = alfa.find(tekst[j]);
 
        if (nr>20) {
            nr=nr-23;
        }
 
        else if (tekst[j] == ' ') {
            kod = kod + ' ';
        }
 
        else {
            kod = kod+alfa[nr+3];
        }
        cout << kod;
    }
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 15:05     Где ошибка? Позиция в string
Посмотрите здесь:

C++ где РЕАЛИЗАЦИЯ класса string?
C++ Где посмотреть исходники типа string
C++ Подскажите литературу где хорошо расписаны способы работы с типом string
C++ Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция
Ошибка: string subscript out of range C++
Ошибка String subscript out of range C++
C++ Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
30.11.2013, 15:08     Где ошибка? Позиция в string #2
Цитата Сообщение от w0nder Посмотреть сообщение
for (int j =1; j <= tekst.length(); j++) {
Что за индексация с единицы?
Остальную логику не смотрел.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.11.2013, 15:19     Где ошибка? Позиция в string #3
C++
1
for (int j = 0; j < tekst.length(); j++)
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 15:56  [ТС]     Где ошибка? Позиция в string #4
alsav22, теперь скомпилировалось без ошибок, но не работает, все время просит ввести текст
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.11.2013, 15:59     Где ошибка? Позиция в string #5
Что это за инклуд: #include <cstring>? Нужно #include <string>.
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
30.11.2013, 15:59     Где ошибка? Позиция в string #6
Цитата Сообщение от w0nder Посмотреть сообщение
все время просит ввести текст
Потому что ввод в цикле, не?
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:01  [ТС]     Где ошибка? Позиция в string #7
alsav22,
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int nr;
    string alfa, tekst, kod;
    alfa = "ABCDEFGHIKLMNOPQRSTVXYZ";
    for (int i = 0; i < alfa.length(); i++)
    {
        cout << "Enter text";
        cin >> tekst;
 
 
    for (int j = 0; j < tekst.length(); j++) {
        nr = alfa.find(tekst[j]);
 
        if (nr>20) {
            nr=nr-23;
        }
 
        else if (tekst[j] == ' ') {
            kod = kod + ' ';
        }
 
        else {
            kod = kod+alfa[nr+3];
        }
        cout << kod;
    }
    }
    return 0;
}
Ситуация немного изменилась, но ерунду какую-то выдает
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.11.2013, 16:01     Где ошибка? Позиция в string #8
Код что должен делать?
ValeryS
Модератор
6403 / 4869 / 447
Регистрация: 14.02.2011
Сообщений: 16,159
30.11.2013, 16:02     Где ошибка? Позиция в string #9
Цитата Сообщение от w0nder Посмотреть сообщение
но не работает, все время просит ввести текст
ну допустим не все время а только столько сколько длинна строки
Цитата Сообщение от w0nder Посмотреть сообщение
for (int i=1; i <= alfa.length(); i++)
* * {
* * * * cout << "Enter text";
* * * * cin >> tekst;
* * }
что сделать то надо?
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:04  [ТС]     Где ошибка? Позиция в string #10
alsav22, понятия не имею, если честно.
Нужно было просто переписать с паскаля:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uses crt; 
var i,nr:integer; alfa,teksts,kods:string; 
BEGIN 
clrscr; 
alfa:='ABCDEFGHIKLMNOPQRSTVXYZ'; 
for i:=1 to length(alfa) do write(alfa[i],'  '); 
writeln;writeln; 
Write('Enter text for coding  '); readln(teksts); 
for i:=1 to length(teksts) do 
  BEGIN 
     nr:=pos(teksts[i],alfa);  IF nr>20 then nr:=nr-23; 
     IF teksts[i]=' ' then kods:=kods+' ' else kods:=kods+alfa[nr+3]; 
    END; 
write(kods); readln; 
END.
ValeryS
Модератор
6403 / 4869 / 447
Регистрация: 14.02.2011
Сообщений: 16,159
30.11.2013, 16:13     Где ошибка? Позиция в string #11
w0nder,
пойдем по шагам
Цитата Сообщение от w0nder Посмотреть сообщение
for i:=1 to length(alfa) do write(alfa[i],' *');
выводит на экран латинский алфавит( зачем не знаю)
Цитата Сообщение от w0nder Посмотреть сообщение
writeln;writeln;
потом два перевода строк
Цитата Сообщение от w0nder Посмотреть сообщение
Write('Enter text for coding *'); readln(teksts);
просит ввести текст
потом в цикле кодировка этого текста
Цитата Сообщение от w0nder Посмотреть сообщение
nr:=pos(teksts[i],alfa);
дословно не знаю но предпологаю взять символ
Цитата Сообщение от w0nder Посмотреть сообщение
IF nr>20 then nr:=nr-23;
рассчитать код новой буквы
Цитата Сообщение от w0nder Посмотреть сообщение
IF teksts[i]=' ' then kods:=kods+' '
если в тексте пробел то записать пробел в результирующую строку
Цитата Сообщение от w0nder Посмотреть сообщение
else kods:=kods+alfa[nr+3];
иначе букву из алфавита

так понятней?
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:22  [ТС]     Где ошибка? Позиция в string #12
ValeryS,
потом два перевода строк
а зачем два?
ValeryS
Модератор
6403 / 4869 / 447
Регистрация: 14.02.2011
Сообщений: 16,159
30.11.2013, 16:23     Где ошибка? Позиция в string #13
Цитата Сообщение от w0nder Посмотреть сообщение
а зачем два?
а я знаю?
спроси у того кто это писал
наверно хотел отделить на экране алфавит от вводимой строки
w0nder
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:30  [ТС]     Где ошибка? Позиция в string #14
ValeryS, не заметила изначально 7 и 8 строчку
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int nr;
    string alfa, tekst, kod;
    alfa = "ABCDEFGHIKLMNOPQRSTVXYZ";
    for (int i = 0; i < alfa.length(); i++)
    {   cout << alfa[i], ' ';
        cout; cout;
        cout << endl << "Enter text";
        cin >> tekst;
 
 
    for (int j = 0; j < tekst.length(); j++) {
        nr = alfa.find(tekst[j]);
 
        if (nr>20) {
            nr=nr-23;
        }
 
        else if (tekst[j] == ' ') {
            kod = kod + ' ';
        }
 
        else {
            kod = kod+alfa[nr+3];
        }
        cout << kod;
    }
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 16:39     Где ошибка? Позиция в string
Еще ссылки по теме:

C++ Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил)
Ошибка iostream и string C++
Ошибка связанная с string C++
C++ Ошибка в типе данных 'String' and 'System::String'
C++ Поле типа string в классе, как и где лежит?

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6403 / 4869 / 447
Регистрация: 14.02.2011
Сообщений: 16,159
30.11.2013, 16:39     Где ошибка? Позиция в string #15
Цитата Сообщение от w0nder Посмотреть сообщение
cout; cout;
не понятно
перевод строки в Плюсах
cout << endl
второе со скобками запуталась
Цитата Сообщение от w0nder Посмотреть сообщение
for (int i = 0; i < alfa.length(); i++)
* * {
и все выведет одну букву и будет просить текст и все остальное прочее
третье
Цитата Сообщение от w0nder Посмотреть сообщение
cout << alfa[i], ' ';
не так
вот как должен выглядеть первый цикл
или так
C++
1
2
3
4
5
for (int i = 0; i < alfa.length(); i++)
  {
      cout << alfa[i]<<' ';
  }
cout << endl << endl;
или так
C++
1
2
3
4
for (int i = 0; i < alfa.length(); i++)
        cout << alfa[i]<<' ';
  
cout << endl << endl;
Yandex
Объявления
30.11.2013, 16:39     Где ошибка? Позиция в string
Ответ Создать тему
Опции темы

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