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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.10.2009, 21:34   #11
АртёмМ
Пользователь
 
Аватар для АртёмМ
 
Регистрация: 07.10.2009
Сообщений: 18
По умолчанию

Код:
char vvS[100];
int vvI=0;
int Length = 0;
int MinLength = 999999; // заведомо больше длины кротчайшего слова

printf("Vvedite stroky \n");
       scanf("%s",&MinLength);

while (vvS[vvI] != 0) // нулевой символ - конец строки
{
	if (vvS[vvI] == '_')
	{
		if (Length > 0  &&  Length < MinLength)
			MinLength = Length;
		Length = 0;
	}
	else
		Length++;
	vvI++;
 printf("\ndhgg: %s \n", MinLength);
Исправьте пожалуйста

Последний раз редактировалось Sazary; 08.10.2009 в 23:42.
АртёмМ вне форума
Старый 07.10.2009, 23:57   #12
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
Стрелка

У меня вот так получилось. Работает вроде

Код:
#include <iostream.h>
#include <conio.h>
char* str;
int i=0;
int Length = 0;
int MinLength = 999999; // заведомо больше длины кратчайшего слова
main ()
{
clrscr();
cout<<"Vvedite stroky- ";
cin>>str;

while (str[i] != 0) // нулевой символ - конец строки
{
	if (str[i] == '_')
	{
		if (Length > 0  &&  Length < MinLength)
			MinLength = Length;
		Length = 0;
	}
	else
		Length++;
	i++;
}
cout<<"Dlina samogo korotkogo slova= "<<MinLength;
getch();
return 0;
}
если твой вариант поправить, то выйдет примерно так:

Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
char vvS[100];
int vvI=0;
int Length = 0;
int MinLength = 999999; // заведомо больше длины кротчайшего слова

main ()
{
clrscr();
printf("Vvedite stroky \n");
scanf("%s",&vvS);

while (vvS[vvI] != 0) // нулевой символ - конец строки
 {
   if (vvS[vvI] == '_')
      {
       if (Length > 0 && Length < MinLength)
		  MinLength = Length;
		  Length = 0;
      }
       else
		  Length++;
       vvI++;
 }

printf("\ndlina samogo korotkogo slova= %i", MinLength);
getch();
return 0;
}
Где были ошибки жирным выделил. И еще, не ленись отступы делать, структура программы так намного понятнее
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.

Последний раз редактировалось forsaken66; 08.10.2009 в 00:19.
forsaken66 вне форума
Старый 08.10.2009, 09:10   #13
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от forsaken66 Посмотреть сообщение
Где были ошибки жирным выделил. И еще, не ленись отступы делать, структура программы так намного понятнее
В смысле - не ленись использовать тег CODE (кнопка с решеткой).
ds.Dante вне форума
Старый 08.10.2009, 11:27   #14
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Цитата:
Сообщение от ds.Dante Посмотреть сообщение
В смысле - не ленись использовать тег CODE (кнопка с решеткой).
Ну, и это тоже, вообще я имел в виду структурную наглядность, у АртёмМ все скобки и операторы в один столбик, так можно легко запутаться.
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума
Старый 08.10.2009, 12:48   #15
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Просто без этого тега всё выравнивание само пропадает.
ds.Dante вне форума
Старый 09.10.2009, 17:43   #16
АртёмМ
Пользователь
 
Аватар для АртёмМ
 
Регистрация: 07.10.2009
Сообщений: 18
По умолчанию

Спасибо вам ребята
АртёмМ вне форума
Старый 09.10.2009, 17:55   #17
АртёмМ
Пользователь
 
Аватар для АртёмМ
 
Регистрация: 07.10.2009
Сообщений: 18
По умолчанию

Объясните пожалуйста:
int MinLength = 999999; // заведомо больше длины кротчайшего слова
АртёмМ вне форума
Старый 09.10.2009, 18:09   #18
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от АртёмМ Посмотреть сообщение
Объясните пожалуйста:
int MinLength = 999999; // заведомо больше длины кротчайшего слова
Ну, MinLength надо ведь чем-то инициализировать а то мало ли какое там число окажется. А 999999 точно больше кратчайшего слова, потому вот тут:
Код:
if (Length > 0  &&  Length < MinLength)
			MinLength = Length;
в первую итерацию MinLength станет равным длине первого слова. Если, например мы инициализируем MinLength нулём, то вряд ли первое слово окажется меньше нуля, так что вышеприведённое условие никогда не выполнится и в результате всегда будет изначальное значение MinLength.
netrino вне форума
Старый 09.10.2009, 18:14   #19
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
Лампочка

Это значит

Код:
int MinLength = 999999;// заведомо больше длины кратчайшего слова

       if (Length > 0 && Length < MinLength)
		  MinLength = Length;
		  Length = 0;
      }
       else
		  Length++;
       vvI++;
 }
что в условии (if) переменная MinLength должна быть больше длины кратчайшего слова ДО первого найденного слова. После того как в строке найдено первое слово (любое) его длина автоматом считается наименьшей (т.е. первое найденное слово будет самым маленьким). Ну а потом по нарастающей Сумбурно объяснил, может старшие товарищи яснее растолкуют
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума
Старый 09.10.2009, 18:31   #20
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Цитата:
Сообщение от ds.Dante Посмотреть сообщение
int MinLength = 999999; // заведомо больше длины кротчайшего слова
Вообще, в моем понимании, это дурной стиль программирования. Обычно инициализацию "завдомо" большим числом можно заменить на более наглядную и надежную конструкцию.

Это значит, что если у тебя программа на несколько тысяч строк, и ты сделал годовой перерыв в ее написании, то при "правильном" стиле у тебя не возникнет вопросов "а почему именно 999999?" "не будет ли эта программа подвержена атакам хакеров?"

Но для небольшого школьного/универского задания компактность и простота предпочтительнее надежности и фундаментальной корректности.
ds.Dante вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку. [Pr1_Zr4k] Помощь студентам 4 10.10.2009 17:52
Помогите решить задачку rainbow1 Паскаль, Turbo Pascal, PascalABC.NET 1 28.08.2008 16:59
Помогите решить задачку New БД в Delphi 3 12.12.2006 19:46