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

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

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


Ответ
 
Опции темы
Старый 08.01.2009, 01:45   #1
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию Вывести самое длинное слово (Си)

не представляю что написать в дополнительную функцию.

вот начало должно быть примерно такими.

#include <stdio.h>
#include <conio.h>
void sds(char m[255], int min, int max);
int main()
{
char m[255]={"bmp docx prilogenie format slovo ostrov."};
int kstr, i=0, ks=0, ns=0;
while(1)
{
if(m[i]=='.')
{
kstr=i-1;
break;
}
i++;
}
for(i=0; i<=kstr; i++)
{
if(m[i]==' ')
{
ks=i-1;
sds(m, ns, ks);
ns=ks+2;
}
}
getch();
}

void sds(char m[255], int ns, int ks)
{
}

помогите пожалуйста
ManInBlack вне форума Ответить с цитированием
Старый 08.01.2009, 09:31   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Думаю сам догадаешся как в функцией сделать.

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>

int main(){

	clrscr();

	char s[1024];
	char *word[100];
	char *tmp1,*max_s,*simv="., ";
	int max=0;

	gets(s);

	tmp1=strtok(s,simv);

	int k=0;

	while (tmp1){

	if(tmp1){
	word[k]=tmp1;
	k++;
	}

	tmp1=strtok(NULL,simv);

	}

	max=strlen(word[0]);

	for (int i=0;i<k;i++)
		if (strlen(word[i])>max){
		max=strlen(word[i]);
		max_s=word[i];
		}

	printf ("%s",max_s);

	getch();

return 0;
}
profi вне форума Ответить с цитированием
Старый 12.01.2009, 00:01   #3
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

спасибо.

вот вроде задумка понятно, прога компилится даже, но выводит ерунду ))

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>

int main()
{
clrscr();
char *s={"bmp docx tochtonuzhno proga simbol random."};
char *word[100];
char *tmp1, *sds, *simv=". ";
int max=0;
gets(s);
tmp1=strtok(s,simv);
int k=0;
while (tmp1)
	{
	if(tmp1)
		{
		word[k]=tmp1;
		k++;
		}
	tmp1=strtok(NULL,simv);
	}
	max=strlen(word[0]);
		for (int i=0;i<k;i++)
		if (strlen(word[i])>max)
		{
		max=strlen(word[i]);
		sds=word[i];
		}
	printf ("%s",sds);
	getch();
	return 0;
}

Последний раз редактировалось ManInBlack; 12.01.2009 в 00:06.
ManInBlack вне форума Ответить с цитированием
Старый 14.01.2009, 20:45   #4
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

выяснил ,что мне нельзя было использовать strtok, пришлось полностью переделать, вот теперь не пойму в чем ошибка, помогите исправить!

Код:
#include<stdio.h>
#include<conio.h>
void funk(char s[255], int max, int min);
int main()
{
clrscr();
char s[255]={"bmp docx tochtonuzhno proga simbol random ."};
int km; //konec massiva
int i=0;
int nl=0, kl=0; //nachalo i konec leksem
char dl[255]; //dlinaya leksema
while(1)
	{
	if(s[i]=='.')
		{
		km=i-1;
		break;
		}
	i++;}
for(i=0; i<=km; i++)
	{
	if(s[i]==' ')
		{
		kl=i-1;
		funk(s, kl, nl);
		nl=kl+2;
		}
getch();
}

void funk(char s[255], int kl, int nl)
{
int x=0;
for(int i=nl; i<=kl; i++)
	if(kl-nl>x)
		{
		x=kl-nl;
		dl=s[i];
		}
	printf("%c", dl);
}
ManInBlack вне форума Ответить с цитированием
Старый 15.01.2009, 00:06   #5
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

ну кто-нибудь подскажите, что сделать. пожалуйста
ManInBlack вне форума Ответить с цитированием
Старый 15.01.2009, 12:04   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Вам нужно было вывести самое длинное слово. И что код который я прислал не выводит? Как он может выводить ерунду. Аргументируйте.
profi вне форума Ответить с цитированием
Старый 18.01.2009, 20:28   #7
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

Цитата:
Сообщение от profi Посмотреть сообщение
Вам нужно было вывести самое длинное слово. И что код который я прислал не выводит? Как он может выводить ерунду. Аргументируйте.
если бы я знал в чем проблема. вот при вводе этого кода, результат получается примерно, как на картинке, но каждый раз разный.
(может от компилятора как-то зависет Borland C++ V2.0)

Код:
#include<stdio.h>
#include<string.h>
#include<conio.h>

int main()
{
clrscr();
char *s={"bmp docx tochtonuzhno proga simbol random."};
char *word[100];
char *tmp1, *sds, *simv=". ";
int max=0;
gets(s);
tmp1=strtok(s,simv);
int k=0;
while (tmp1)
	{
	if(tmp1)
		{
		word[k]=tmp1;
		k++;
		}
	tmp1=strtok(NULL,simv);
	}
	max=strlen(word[0]);
		for (int i=0;i<k;i++)
		if (strlen(word[i])>max)
		{
		max=strlen(word[i]);
		sds=word[i];
		}
	printf ("%s",sds);
	getch();
	return 0;
}
Результат.jpg
ManInBlack вне форума Ответить с цитированием
Старый 18.01.2009, 20:49   #8
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Скорее всего ты вводил кирилицу.(она не работает в консольных приложениях, точнее с ней очень много заморочек)

Проверь как работает с латиницей, если с ней то же самое, то программа не рабочая, если нет, значит все нормально.


P.S.

У меня этот код выдает какие-то ошибки, связанные с памятью (толи чтения, толи записи).

P.P.S.

Перезапустил компилятор - пашет, хотя с кирилицей, как и положено, трудности.
Компилятор Borland C++ 5.2
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 18.01.2009 в 20:56.
ROD вне форума Ответить с цитированием
Старый 18.01.2009, 23:13   #9
ManInBlack
Пользователь
 
Регистрация: 20.10.2008
Сообщений: 25
По умолчанию

Цитата:
Сообщение от ROD Посмотреть сообщение
Скорее всего ты вводил кирилицу.(она не работает в консольных приложениях, точнее с ней очень много заморочек)

Проверь как работает с латиницей, если с ней то же самое, то программа не рабочая, если нет, значит все нормально.
Поменял, действительно в этом дело.
Код profi работает, но мне нельзя использовать некоторые функции из его варианта.
ManInBlack вне форума Ответить с цитированием
Старый 18.01.2009, 23:38   #10
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Твой код (который ты написал в последнем сообщении) тоже работает.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самое часто произносимое слово Altera Свободное общение 40 08.06.2012 11:12
Самое симметричное слово Blad47 Паскаль, Turbo Pascal, PascalABC.NET 8 23.11.2008 17:12
в текстовом файле в каждой строке наити самое длинное слово Storm Помощь студентам 4 04.06.2008 14:56
С++ Найти самое длинное слово строки k0z7_g0b1in Общие вопросы C/C++ 3 22.04.2007 16:37


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