Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2009, 13:35   #1
defol-777
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 30
По умолчанию Обработка строк в C++

Дана строка. Словом текста считается любая последовательность букв русского алфавита; между соседними словами - не менее одного пробела, за последним словом – точка. Удалить из строки те слова, которые содержат двойные согласные буквы.

Похожая задачка

Код:
//Ввести строку. Вывести слова в алфавитном порядке.
//Функция сравнения строк - стандартная.
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
const int RAZ = 80;				//максимальная длина строки
void sort(int n, unsigned char mas[RAZ/2][RAZ]);
int vid_slov(unsigned char isx[RAZ], unsigned char slova[RAZ/2][RAZ]);
void output(int n, unsigned char slova[RAZ/2][RAZ]);
void propis(unsigned char isx[RAZ]);

void main()
{unsigned char st[RAZ];			//исходная строка, м.б. с кириллицей
 unsigned char slova[RAZ / 2][RAZ];	//массив выделенных слов
 int n;						//число найденных слов

 clrscr();
 printf("Введите строку\n");
 gets(st);						//функция вводит всю строку, включая
							//пробелы и символ /n


 propis(st);					//преобразуем все буквы в прописные

n = vid_slov(st, slova);			//выделяем в строке отдельные слова

sort(n, slova);					//сортируем слова по алфавиту

 output(n, slova);				//выводим слова по алфавиту

 printf("\nДля окончания работы нажмите Enter->");
 getchar();
}

//сортировка слов по алфавиту
void sort(int n, unsigned char slovo[RAZ/2][RAZ])
{int i = 0, fl = 1;
 unsigned char pr[RAZ];

 while(fl)
 {fl = 0;
  i = 0;
  while(i < n - 1)
    {if(strcmp(slovo[i], slovo[i + 1]) > 0)
       {strcpy(pr, slovo[i]);
	  strcpy(slovo[i], slovo[i + 1]);
	  strcpy(slovo[i + 1], pr);
	  fl = 1;
       }
     i++;
    }
 }
}
//выделяем из исходной строки слова и формируем из них массив
int vid_slov(unsigned char st[RAZ], unsigned char slova[RAZ / 2][RAZ])
{int i = 0, j = 0;

 while(st[i])
   {int k = 0;
    while(st[i] == ' ')
      i++;
    while(st[i] != ' ' && st[i])
      {slova[j][k] = st[i];
       k++;
       i++;
      }
    slova[j][k] = '\0';
    j++;
  }
 return j;
}

//вывод слов на экран
void output(int n, unsigned char slova[RAZ/2][RAZ])
{int i = 0;

 printf("\n");
 while(i < n)
   {puts(slova[i]);
    i++;
   }
}

//перевод строчных букв в прописные
void propis(unsigned char st[RAZ])
{int i=0;

 while(st[i])
   {if(st[i] >= 'a' && st[i] <= 'z' || st[i] >= 'а' && st[i] <= 'п')
      st[i] -= 32;
    else if(st[i] >= 'р' && st[i] <= 'я')
	   st[i] -= 80;
    i++;
   }
}
defol-777 вне форума Ответить с цитированием
Старый 12.03.2009, 18:10   #2
defol-777
Пользователь
 
Регистрация: 11.01.2009
Сообщений: 30
По умолчанию

ну очень надо плыззз
defol-777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка строк densan Общие вопросы Delphi 3 26.08.2008 11:11
обработка строк Xunter Помощь студентам 4 27.06.2008 21:48
Обработка строк символов Wilda Паскаль, Turbo Pascal, PascalABC.NET 3 12.12.2007 18:54