Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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


Ответ
 
Опции темы
Старый 21.11.2009, 20:00   #1
xalex17
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию Строки в C. Определение наибольшего и наименьшего слова в тексте.

Код:
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define lenght 200

Bigger(char* text, int i){
	int c=0, min=0, t=0, n=0, j=0;
	for(j=0;j<=i;j++){
		if ((*(text+j)=='!') || (*(text+j)=='.') || (*(text+j)=='?'))
		{
        	if(c>=min){
				min=c;
				n=j;
            }
		for(t=n-min;t<n;t++){
		    printf("%c",(*(text+t)));}
                     printf(" ");
	    min=0;
	    n=0;
        c=0;
	    t=0;
	} else {
	if((*(text+j)!=' ') && (*(text+j)!=NULL) && (*(text+j)!=',') && (*(text+j)!=';') && (*(text+j)!=':') && (*(text+j)!='-')){
			c++;
		}else{
			if(c>=min){
				min=c;
				n=j;
		}
		c=0;
	    t=0;
		}
	  }
	}
}


Smaller(char* text, int i){
	int c=0, min=0, t=0, n=0, j=0;
	for(j=0;j<=i;j++){
		if ((*(text+j)=='!') || (*(text+j)=='.') || (*(text+j)=='?'))
//		{	if((c<min) && (c>0)){

		{ if (c<min) {
				min=c;
				n=j;
            }
 	        for(t=n-min;t<n;t++){
		        printf("%c",(*(text+t)));}
                     printf(" ");
			min=0;
            n=0;
            c=0;
            t=0;
        } 
		else {
        if((*(text+j)!=' ') && (*(text+j)!=NULL) && (*(text+j)!=',') && (*(text+j)!=';') && (*(text+j)!=':') && (*(text+j)!='-')){
			c++;			
		}else{
//			if((c<=min) && (c>0)){
			if(c<=min){
				min=c;
				n=j;
			}
			c=0;
            t=0;
			}
	  }
	}
}  

main(void) {
char text[lenght];
int i=0, j, k, t;
t=0;
k=0;

printf("vvedite tekst:\n");
       
	gets(text);
	while(text[i++]);
		i--;
	
	text[i]=' ';
	t=strlen(text); 
printf("\n");

	if  (t == 0) {	  printf("tekst ne vveden");    }
	else	

printf("\n"); printf("\n");

printf("rezultat - naibolshie slova v tekste : \n");
Bigger(&text[0], i);

i=0;
printf("\n\nrezultat - naimenshie slova v tekste : \n");
Smaller(&text[0], i);

getch();
return 0;
}
Программа должна выводить самые длинные и короткие слова в тексте. Максимальная длина текста - 200 символов. Предложение должно заканчиваться точкой.

Пример:

Pogoda horoshaja, ptici pojut v lesu. Uzhastno hochu na otdix.

Программа должна выдать - "horoshaja Uzhastno" - как наибольшие и "v na", как наименьшие.

Первая функция - Bigger работает, вторая, Smaller - нет.

Рабочая среда - Borland C++ for DOS/windows (3.1).

Последний раз редактировалось xalex17; 21.11.2009 в 20:14.
xalex17 вне форума Ответить с цитированием
Старый 22.11.2009, 17:13   #2
xalex17
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

Проблема решена. Могу поделиться кодом, если есть необходимость

Последний раз редактировалось xalex17; 23.11.2009 в 14:59. Причина: проблем солвед))
xalex17 вне форума Ответить с цитированием
Старый 25.05.2010, 11:57   #3
molny
 
Регистрация: 20.05.2010
Сообщений: 3
По умолчанию

Было бы неплохо, если бы ты поделился кодом)) А еще лучше - если бы он был на C++ (хотя лично мне не составит проблемы переделать)... В общем, давай делись =)
molny вне форума Ответить с цитированием
Старый 25.05.2010, 19:51   #4
xalex17
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define lenght 200

Bigger(char* text, int i)
{
	int c=0, min=0, t=0, n=0, j=0, count=0;
	for(j=0;j<=i;j++)
   {
   	if((*(text+j)=='.') ||
       (*(text+j)=='!') ||
       (*(text+j)=='?'))
		{
   		if(c>=min)
      	{
      		min=c;
         	n=j;
      	}
      	count++;
      	printf("%d.teikums - ", count);
			for(t=n-min;t<n;t++)
      	{

      		printf("%c",(*(text+t)));
      	}

      	printf("\n");
      	min=0;
      	n=0;
        	c=0;

   	}
      else
      {
			if((*(text+j)!=' ') &&
         	(*(text+j)!=NULL) &&
            (*(text+j)!=',') &&
         	(*(text+j)!=';') &&
            (*(text+j)!=':') &&
            (*(text+j)!='-'))
         {
				c++;
			}
         else
         {
				if(c>=min)
            {
					min=c;
					n=j;
				}
				c=0;

			}
	  	}
	}
}


Smaller(char* text, int i)
{
	int c=0, max=i, t=0, n=0, j=0, count=0;
	for(j=0;j<=i;j++)
   {
   	if((*(text+j)=='.') ||
       (*(text+j)=='!') ||
       (*(text+j)=='?'))
	 {
      	if(c<=max)
         {
         	max=c;
				n=j;
         }

      	count++;
      	printf("%d.teikums - ", count);
         for(t=n-max;t<n;t++)
         {
         	printf("%c",(*(text+t)));
         }

         printf("\n");
			max=i;
         n=0;
         c=0;
         t=0;
      }
		else
      {
      	if((*(text+j)!=' ') &&
         	(*(text+j)!=NULL) &&
            (*(text+j)!=',') &&
            (*(text+j)!=';') &&
            (*(text+j)!=':') &&
            (*(text+j)!='-'))
         {
				c++;
			}
         else
         {
				if ((c<=max) && (c!=0))
            {
					max=c;
					n=j;
				}
            c=0;

			}
	  	}
	}
}


main(void) {
char text[lenght];
int i=0, t;
t=0;

printf("\n\nVVEDITE TEXT:\n");

gets(text);
while(text[i++]);

text[i]=' ';
t=strlen(text);


if (t==0)
{
	printf("\nText nav ievadits");
}
else
{
printf("\n\nRezultat:");

printf("\nMenshie slova:\n");
Smaller(&text[0], i);
printf("\nBolshie slova:\n");
Bigger(&text[0], i);
}

getch();
return 0;
}
xalex17 вне форума Ответить с цитированием
Старый 26.05.2010, 10:29   #5
molny
 
Регистрация: 20.05.2010
Сообщений: 3
По умолчанию

xalex17 благодарствую)) огромное спасибо =)
molny вне форума Ответить с цитированием
Старый 26.05.2010, 12:53   #6
xalex17
 
Регистрация: 06.04.2008
Сообщений: 7
По умолчанию

На здоровье
xalex17 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. Определение количества слов в тексте. Evgesha Помощь студентам 17 12.04.2011 17:58
Организовать поиск всех вхождений заданного слова в загруженном тексте s2dentishe Помощь студентам 0 21.11.2009 18:53
в тексте удалить слова начинающиеся с заданой буквы Ananim-Pbl6ak Паскаль, Turbo Pascal, PascalABC.NET 9 26.05.2009 15:39
нахождение наибольшего общего делителя и наименьшего общего кратного made in russia Помощь студентам 2 21.12.2008 23:36
Во вводимом тексте переписать все слова в обратном порядке. menlo Помощь студентам 5 17.11.2007 10:18


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS