С++ Строки. В чем проблема?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
С++ Строки. В чем проблема? - 2010-10-28 18:34:37.540000
|
|
|
udde
Сообщений: 6
Оценки: 0
Присоединился: 2010-10-21 14:35:57.566666
|
Задание: С клавиатуры вводится строка состоящая из слов.Удалить из строки все слова которые заканчиваются на букву <<a>>. #include <stdio.h> #include <conio.h> #include <iostream.h> #include <string.h> void main() { int i,j; char str; clrscr(); cout<<"\nVvedite text \n"; gets(str); for (i=0; i<strlen(str); i++) if (str == 'a' && str !=' ') { i=j; break; } else cout<<str; getch(); } В чем проблема? У меня когда вводишь несколько слов в которых есть буква <<а>> удаляет все слова кроме одного где убирается <<а>> и все. А нужно "Удалить из строки все слова которые заканчиваются на букву <<a>"
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-28 19:10:39.926666
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
Проблема в том, что написан откровенный бред. Распиши сам для себя алгоритм и только потом уже берись за реализацию. Если хочешь помощи именно со своим кодом - используй тэг для вставки кода и прокомментируй, что ты делаешь в каждой строке. Без этого нет смысла что-то тут исправлять.
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-28 21:26:42.503333
|
|
|
Sрam
Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
|
Заюзай strtok разбивай сначала на лексемы а там в цикле уже смотри свою букву а
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-31 13:24:21.506666
|
|
|
iselga
Сообщений: 5
Оценки: 0
Присоединился: 2010-10-31 13:21:58.983333
|
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int main() {
int i=0, j=0;
char str2[256];
// Заданная строка
char str[256] = "rrrrra Wewddf Tttattka Rrirrrrrrfra";
for (i=0; i < strlen(str); i++)
if(str[i] == 'a' && str[i+1] == ' ')
cout << "";
else if (str[i]==str[strlen(str)-1] && str[i] == 'a')
cout << "";
else cout << str[i];
//Вводим строку сами
cout << "\nEnter text: ";
gets(str2);
for (i=0; i < strlen(str2); i++)
if(str2[i] == 'a' && str2[i+1] == ' ')
cout << "";
else if (str2[i]==str2[strlen(str2)-1] && str2[i] == 'a')
cout << "";
else cout << str2[i];
getch();
return 0;
}
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-31 14:44:17.013333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
iselga, ты бы описал что не так. А мы бы подумали, как это исправить.
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-31 22:16:43.350000
|
|
|
iselga
Сообщений: 5
Оценки: 0
Присоединился: 2010-10-31 13:21:58.983333
|
у меня не то оказывается ща заметил…….у меня удаляются все буквы "а" на концах слов а надо сами слова…..сорри не дочиткал до конца…..а так полностью согласен с Spam……объяви массив char str[256] ну и с функцией strtok…. char * pch; cout << "\n " << str; pch = strtok (str," "); while (pch != NULL) { cout << "\n " << pch; pch = strtok (NULL, " "); }
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-31 22:37:13.166666
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Надо примерно так:for (i=0; i < strlen(str); i++) {
if (str[i] == ' ' && str[i] == 'a') {
word_start = i+1;
}
if (str[i+1] == ' ') {
if (str[i] != 'a') {
/* выводим на экран символы начиная с word_start до i */
}
}
} Надо искать начало слова, сохранять его позицию. Потом искать конец слова, и если конец – не 'а', то выводить. Но это не законченный код. Лишь набросок. Надо определиться с начальным значением word_start (тем что будет до цикла), и надо повтыкать внимательно в то что будет происходить: во-первых у меня есть сомнения, что это будет работать если стоит два пробела подряд; во-вторых, я вообще не уверен, что это будет работать – это лишь набросок.
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-31 23:47:54.510000
|
|
|
iselga
Сообщений: 5
Оценки: 0
Присоединился: 2010-10-31 13:21:58.983333
|
#include <iostream> #include <conio.h> #include <string.h> #include <stdio.h> using namespace std; int main() { int i=0, j=0; char str2[256]; // Заданная строка char str[256] = "rrrrra Wewddf Tttattka Rrirrrrrrfr wera"; int d=0; char * pch; cout << "\n" << str; pch = strtok (str," "); // берем первую лексему(rrrrra) cout << endl; while (pch != NULL) { d += strlen(pch); //индекс конца лексемы if(str[d-1] != 'a') // проверяем cout << pch << " "; // если ок то выводим pch = strtok (NULL, " "); d++; // добавляем единицу с пробелов } cout << endl; //———-Вводим строку сами но только через 1 пробел ——— // комментарии те же cout << "\nEnter text: "; gets(str2); cout <<"\nVvedennaia stroka: " << str2 << endl; int n=0; char * pch1; pch1 = strtok (str2," "); cout << endl; while (pch1 != NULL) { n += strlen(pch1); if(str2[n-1] != 'a') cout << pch1 << " "; pch1 = strtok (NULL, " "); n++; } getch(); return 0; }
|
|
|
RE: С++ Строки. В чем проблема? - 2010-10-31 23:56:29.133333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
=) Можно и так.
|
|
|
RE: С++ Строки. В чем проблема? - 2010-11-08 09:15:46.680000
|
|
|
dimonix6
Сообщений: 11
Оценки: 0
Присоединился: 2010-11-08 08:44:44.413333
|
quote:
Проблема в том, что написан откровенный бред. Да-да, по-моему проблема именно в этом))
|
|
|
RE: С++ Строки. В чем проблема? - 2010-11-08 09:28:41.606666
|
|
|
Sрam
Сообщений: 2863
Оценки: 372
Присоединился: 2009-01-16 15:23:43.276666
|
quote:
ORIGINAL: dimonix6 quote:
Проблема в том, что написан откровенный бред. Да-да, по-моему проблема именно в этом)) Ты типа самый умный?
|
|
|
|
|