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

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

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

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

30.11.2013, 15:05. Просмотров 293. Ответов 14
Метки нет (Все метки)

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++):

Где и почему используют ту или иную строку std::string, char[], System::String^ ? - C++
Где и почему используют ту или иную строку std::string, char, System::String^ ? Объясните пожалуйста где нужно использовать...

Позиция элемента в контейнере STL кон. SET, поиск контейнер set словарь позиция - C++
Есть код №1. Он выводить на экран позицию нужного мне слова (только если в середине 1 слово а не 2 и больше например только &quot;privet&quot;. А...

Ошибка в типе данных 'String' and 'System::String' - C++
Всем привет. помогите, выдает ошибку File1.cpp(40): E2015 Ambiguity between 'String' and 'System::String' ...

где РЕАЛИЗАЦИЯ класса string? - C++
объявление нашёл, а реализацию нет..

Где посмотреть исходники типа string - C++
Подскажите плиз где посмотреть исходники типа string. Тоесть интересует методы работы со строками, а точнее как они устроены. Допустим...

Вывести на экран количество слов где первая и последняя буквы одинаковы (не понимаю где ошибка) - C++
задан текст нужно вывести на экран количество слов где первая и последняя буквы одинаковы #include &lt;iostream&gt; #include &lt;conio.h&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
30.11.2013, 15:08 #2
Цитата Сообщение от w0nder Посмотреть сообщение
for (int j =1; j <= tekst.length(); j++) {
Что за индексация с единицы?
Остальную логику не смотрел.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.11.2013, 15:19 #3
C++
1
for (int j = 0; j < tekst.length(); j++)
w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 15:56  [ТС] #4
alsav22, теперь скомпилировалось без ошибок, но не работает, все время просит ввести текст
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.11.2013, 15:59 #5
Что это за инклуд: #include <cstring>? Нужно #include <string>.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
30.11.2013, 15:59 #6
Цитата Сообщение от w0nder Посмотреть сообщение
все время просит ввести текст
Потому что ввод в цикле, не?
w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:01  [ТС] #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
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.11.2013, 16:01 #8
Код что должен делать?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
30.11.2013, 16:02 #9
Цитата Сообщение от w0nder Посмотреть сообщение
но не работает, все время просит ввести текст
ну допустим не все время а только столько сколько длинна строки
Цитата Сообщение от w0nder Посмотреть сообщение
for (int i=1; i <= alfa.length(); i++)
* * {
* * * * cout << "Enter text";
* * * * cin >> tekst;
* * }
что сделать то надо?
w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:04  [ТС] #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
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
30.11.2013, 16:13 #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
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:22  [ТС] #12
ValeryS,
потом два перевода строк
а зачем два?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
30.11.2013, 16:23 #13
Цитата Сообщение от w0nder Посмотреть сообщение
а зачем два?
а я знаю?
спроси у того кто это писал
наверно хотел отделить на экране алфавит от вводимой строки
w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
30.11.2013, 16:30  [ТС] #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;
}
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
30.11.2013, 16:39 #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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 16:39
Привет! Вот еще темы с ответами:

Подскажите, где может быть ошибка (структуры)? (скорее всего где-то амперсенд нужен, все вроде проверил) - C++
написать универсальный тип, который представляет точку на плоскости в координатах (х, у) и в полярных координатах. Написать функцию для...

Поле типа string в классе, как и где лежит? - C++
Всем привет! Возник теоретический вопрос. Когда я создаю свой класс и в нем добавляю поле типа string(из стандартной библиотеки) и хочу...

Доступ к паре в map<string, vector<pair<string, string>>>Temp - C++
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string, string&gt;&gt;&gt;Temp) { ...

Подскажите литературу где хорошо расписаны способы работы с типом string - C++
Всем доброго времени суток. Ребят нужна помощь подскажите литературу где хорошо расписаны способы работы с типом string ну или так...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
30.11.2013, 16:39
Ответ Создать тему
Опции темы

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