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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2009, 00:52   #1
Данилыч Д.
 
Регистрация: 09.12.2007
Сообщений: 8
Сообщение Помогите разобраться с задачей С

Люди помогите разобраться с задачей, скажите что я не так делаю. Задача состоит в том, что бы найти в строке самое длиное слово и удалить его.

Код:
#include<stdio.h>
#include<string.h>
#define N 80
int main()
{int i,m,q,s=0,k,n;
char st[N];
scanf("%[A-Za-z0-9]", &st);
n=strlen;
for(i=0;i<n&&st!=' ';i++)
m=i;
for(;st[i]!=' ';i++)
k++;
q=i;
while(st[i])
{s=0;
for(;st[i]!=' '&&st!='\0';i++)
s++;
if(s>k) {m=q+1; q=i; k=s;}}
do{ st[m]=st[q];
m++; q++;} while(st[q]);
st[m]='\0';
printf("%s",st[m]);
return 0;
}

Последний раз редактировалось Stilet; 12.02.2009 в 11:42.
Данилыч Д. вне форума Ответить с цитированием
Старый 11.02.2009, 01:38   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

1.
Код:
n=strlen(st);
2.
Код:
scanf("%[A-Za-z0-9]", &st);
и
Код:
for(i=0;i<n&&st!=' ';i++)
скорее всего пробел вы не встретите, т.к. в st запишутся только символы из множества [A-Za-z0-9]

3.
Код:
printf("%s",st)
или так
Код:
for(int i=0;i<m;i++)
          {
               printf("%c",st[i]);
          }
counter вне форума Ответить с цитированием
Старый 11.02.2009, 11:04   #3
bura
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 15
Радость

Да много чего не так делаешь
Вот код программы. Правда, работает только со словами из латинских букв.
Код:
#include <stdio.h>

int bukva(char);
void prnst(char [], int);
void del(char [], int, int);

int main(void)
{char st[100];
 int i, t, beg, buk, index, maxlen;

 printf("Vvedite stroku: \n");
 gets(st);
 for(i=0; st[i]!='\0'; i++);
 st[i]=' '; //добавляем пробел в конец строки
 st[i+1]='\0';
 i=0;
 t=0;
 maxlen=0;
 buk=0;
 while(st[i]!='\0')
 {if (bukva(st[i])==1)
  {if (buk==0)
   {beg=i;
    buk=1;
   }
   t++;
  }
  else
  {if (buk==1)
   {if (t>maxlen)
    {index=beg;
     maxlen=t;
    }
    buk=0;
    t=0;
   }
  }
  i++;
 }
 if (maxlen==0)
  printf("Stroka ne sodergit slov\n");
 else
 {printf("Samoe dlinnoe slovo: ");
  prnst(&st[index], maxlen);
  printf("Slovo sodergit %d bukv\n", maxlen);
  del(st, index, maxlen);
  printf("Stroka posle udaleniya slova: \n");
  printf("%s\n", st);

 }
 return 0;
}
//ф-ция возвращает 1, если символ - буква, и 0, если не буква
int bukva(char c)
{unsigned char a;
 a=(unsigned char) c;
 if (((a>=65)&&(a<=90))||((a>=97)&&(a<=122)))
  return 1;
 else
  return 0;
}

void prnst(char s[], int n)
{int i;
 for(i=0; i<n; i++)
  printf("%c", s[i]);
 printf("\n");
}
void del(char s[], int k, int n)
{int i, j;
 for(i=0; i<n; i++)
  for(j=k; s[j]!='\0';j++)
   s[j]=s[j+1];
}

Последний раз редактировалось bura; 11.02.2009 в 14:58.
bura вне форума Ответить с цитированием
Старый 12.02.2009, 11:22   #4
Данилыч Д.
 
Регистрация: 09.12.2007
Сообщений: 8
По умолчанию

Спасибо большое)))
Данилыч Д. вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с задачей Dialon Помощь студентам 8 10.02.2009 15:24
Помогите разобраться с задачей, уже в отчаянии (+) Ink_90 Паскаль, Turbo Pascal, PascalABC.NET 3 22.12.2008 16:42
помогите с задачей разобраться r3krut Паскаль, Turbo Pascal, PascalABC.NET 1 16.12.2007 15:43