Помощь - Поиск - Пользователи - Календарь
Полная версия: работы со строками в с++ помогите плз.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Tima1989
народ помогите плз. завтра сдавать хотя бы одну из 3-х если вам не трудно...

1 ) ввести строку, в которую могут входить только цифры и буквы. Распечатать только те группы букв, в которых буква встречается не менее двух раз. ( группа букв - последовательность букв, обрамленная цифрами.

2) Распечатать введенное предложение, удалив из него слова, которые состоят менее чем из 3-х букв.

3) Проверить имеется ли в заданном тексте баланс открывающих и закрывающих круглых скобок.


Помогите кто может...заранее спс.
Michael_Rybak
3) заводим счетчик, равный изначально 0. Идем слева направо по строке. Если встретили символ '(', увеличиваем счетчик на 1. Если ')' - уменьшаем. После каждого изменения проверяем, что счетчик >= 0 (если это не так, это значит, что найдена закрывающая скобка, для которой нет пары). В конце проверяем, что счетчик = 0.
Tima1989
aaa (char *str) {int a; int i;
while (*str[i++]!=NULL )
{
if (*str[i]=='(')
{while (*str[i]!=')')
}
if (*str[i]==null)
a=1; break; }}}
return (a);
}


я делаю так что-то не работает со скобками

search (char *str) {
int n,i,k,a,c;
while (*str[i++]!=null )
switch (*str[i])
{ case '1','2'..'9',0:n=1; default n=0}
if (n==1) {
k=i;
n=0;
while ((ischar (*str [k++])) {
if (*str[k]=="A" ) c++;
n++;
if (c>2) for (a=i; a<=i+c;a++)
printf("%s, *str[a]);
i+=n;}
printf(" "); return 0;
}

с буквой а я делаю так тоже не пашет не наю уже помогите а
volvo
А так:
int aaa (char *str) {

int count = 0;
char *p;
for(p = str; *p; p++)
if(*p == '(') count += 1;
else if(*p == ')') {
count -= 1;
if(count < 0) return 0;
}

return (count == 0) ? 1 : 0;
}
?
мисс_граффити
Что понимается под балансом? вот такая строчка считается сбалансированной: ")))(((" ? Если количественно считать, то да... а по сути - нет.
klem4
Извините что перебиваю smile.gif

По поводу первой части первого вопроса,
Цитата
ввести строку, в которую могут входить только цифры и буквы

ты это имел в виду ?

# include <iostream.h>
# include <conio.h>

char *FormatInput()
{
char ch, *s = new char[255];
int i = 0;

do
{
ch = getch();

if (((int)ch != 13) && ((isdigit(ch)) || (isalpha(ch))))
{
cout << ch;
s[i++] = ch;
}

} while ((int)ch != 13);

s[i] = '\0';

return s;
}
int main(void)
{
char *s = FormatInput();

cout << endl << s;

return 0;
}


Цитата
в которых буква встречается не менее двух раз


Вот это не понял, какая буква, кажда ? (3aabbccc1) ?
Tima1989
ввести строчку в которую могут входить только цифры и буквы. Распечатать те группы букв в которых буква А встречается не менее 2 раз. (группа букв - последовательность букв, обрамленная цифрами)
Алена
№2:
#include <stdio.h>
#include <string.h>

int main() {

const char *between = " .,:!?"; /* Можно добавить еще разделителей между словами */
char s[100], *p;

puts("sentence: ");
gets(s);

p = strtok(s, between);
while(p) {
if(strlen(p) < 3) puts(p);
p = strtok(NULL, between);
}

return 0;
}


№1 - аналогично №2:
#include <stdio.h>
#include <string.h>

int main() {

const char *between = "0123456789";
char s[100], *p, *pp;
int count;

puts("sentence: ");
gets(s);

p = strtok(s, between);
while(p) {
for(count = 0, pp = p; *pp; pp++)
if(*pp == 'A') count += 1;

if(count > 2) puts(p);
p = strtok(NULL, between);
}

return 0;
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.