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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 12:46   #1
Ольга08
Новичок
Джуниор
 
Регистрация: 10.11.2012
Сообщений: 4
По умолчанию Работа со строками и файлами С++

Помогите решить задачу, я совсем не могу.Умоляю.
С помощью текстового редактора создать файл содержащий текст, длина которого не превышает 1000 символов, длина строк текста не должна превышать 70 символов. Написать программу которая выводит содержание файла на экран, определить количество символов в самом коротком слове, по нажатию произвольной клавиши поочередно выделять каждое слово текста содержащие минимальное количество символов.
мне удалось только сделать вывод информации из файла на экран
Код:
int main()
{setlocale (LC_ALL, ".ACP");

    ifstream file("text.DAT","r");

    cout << file.rdbuf();
    //file.close();
    system ("pause");
	return 0;
	
}
что дальше? помогите пожалуйста

Последний раз редактировалось Stilet; 10.11.2012 в 13:07.
Ольга08 вне форума Ответить с цитированием
Старый 10.11.2012, 13:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри: http://www.programmersforum.ru/showthread.php?t=165196
Тут из файла извлекаются слова.
Допили функу words, так чтоб она определяла длину слова - posEnd-posBegin, и запоминай если эта разница меньше предидущей.
Идея понятна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2012, 15:01   #3
Ольга08
Новичок
Джуниор
 
Регистрация: 10.11.2012
Сообщений: 4
По умолчанию

идея понятна, спасибо, не понятно только как слова потом выделять нажатием любой кнопки

ни чего не понимаю, как цикл то этот задать, точнее условие
вот что получается у меня
Код:
void words(char *s, int posBegin,int posEnd){ if(posBegin-posEnd==1) return;
	for(int i=posBegin;i<=posEnd;i++)cout<<s[i];cout<<'\n';
	}

void forr(char *s){
	for(int i=0,k=0;s[i];i++){
		if(s[i]==' ' || s[i]==13){
			words(s,k,i);k=i++;
		}
	}
};

int main()
{setlocale (LC_ALL, ".ACP");




	ifstream f("text.DAT", ios::binary);
	f.seekg(0,ios_base::end);
	int i=f.tellg();
	f.seekg(0,ios_base::beg);
	char *s=new char[i];
	f.read(s,i);
	f.close();
	s[i+1]=0;
	forr(s);
	
	cin.get();
	//delete s;
	

 
    system ("pause");
	return 0;
	
}

Последний раз редактировалось Stilet; 10.11.2012 в 19:02.
Ольга08 вне форума Ответить с цитированием
Старый 10.11.2012, 19:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
не понятно только как слова потом выделять нажатием любой кнопки
Согласен. Я бы задание уточнил. Что значит "выделять"
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2012, 21:22   #5
Ольга08
Новичок
Джуниор
 
Регистрация: 10.11.2012
Сообщений: 4
По умолчанию

по нажатию произвольной клавиши поочередно выделяет каждое слово текста,
содержащее минимальное количество символов
Ольга08 вне форума Ответить с цитированием
Старый 10.11.2012, 21:43   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Выделяет - подсвечивает на экране другим цветом? Может быть проговаривает звуком? Или выписывает на экране в новой строке?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2012, 08:46   #7
Ольга08
Новичок
Джуниор
 
Регистрация: 10.11.2012
Сообщений: 4
По умолчанию

я так понимаю, подсвечивает другим светом
Код:
int ProvRazm();
int Vivodnaekran();
int SamKorotkSlov();

 int main()
 {
	
	 setlocale(0,"rus");
	 string buf;
	 ifstream file("text.DAT");	/*Открываем файл*/
	if(!file.is_open())			/*Проверяем файл*/
	 {
		 cerr<<"Файла нету!!проверь имя файла!или его наличие!"<<endl;
		 getchar();
		 return 1;
	 }
	ProvRazm();
	Vivodnaekran();
	SamKorotkSlov();
	system("pause");
	return 0;

	 
 }
 int ProvRazm()
{
	
	FILE *in=fopen("text.DAT","r");//открытие потока
					//с параметром "только для чтения"
	int sum=0;
	char buf[72];
	while(!feof(in))//проверка размеров текста
	{
		fgets(buf,72,in);//ф-ция коп. одной строки из файла
		if(strlen(buf)>70)//проверка длины строки
		{
			cout<<"Размер строк слишком велик(не больше 70).\n";
			
		}
		sum+=strlen(buf);//ф-ция подсчета кол-ва символов в строке
	}
	if(sum>1000)
	{
		cout<<"Большое колличество символов(не больше 1000).\n";
		
	}
	fclose(in);//закрытие потока
	getchar();
	return sum;//возвращение кол-ва символов в файле
}


 int Vivodnaekran()
 {
	 string buf;
	 ifstream file("text.DAT");
	 cout<<"Содержимое файла:"<<endl;
	 while ( getline(file, buf) )
	{
                cout << buf << endl;
	}
	 return 1;
 }

 int SamKorotkSlov()
 {	
char str[1000];
   //curlen - текущая длина слова
   //maxlen - максимальная длина слова
   //index - индекс, соответствующий позиции
   //конца самого длинного слова +1
int curlen = 0, maxlen = 0, index = 0, i;
  ifstream file("text.DAT");
 for(i=0;;i++)
   {
     if(str[i]==' '|| str[i]=='\0'){
         if(curlen>maxlen){
           maxlen = curlen;
             index = i;
         }
         //если конец строки -> выйти из цикла
         if(str[i]=='\0')break;
         curlen = 0;
      }
      else curlen++;
   }
 cout << "" <<maxlen<<endl;
   getchar ();
не работает поиск слова короткого и как вставить выделение слов в тексте, помогите найти ошибку пожалуйста

Последний раз редактировалось Stilet; 11.11.2012 в 13:33.
Ольга08 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами и строками в си Reginsi Помощь студентам 6 03.01.2012 18:34
Работа с файлами и строками inc Помощь студентам 1 13.06.2011 11:30
Работа с файлами и строками. inc Помощь студентам 3 26.05.2011 06:15
работа со строками и файлами kartasskiy Паскаль, Turbo Pascal, PascalABC.NET 0 21.05.2011 11:50
Работа с файлами и строками. mituhin Общие вопросы C/C++ 1 06.12.2007 12:53