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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 12:17   #1
vlados92
Пользователь
 
Регистрация: 22.02.2011
Сообщений: 12
По умолчанию Cтруктуры, С++

С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки не должна превышать 70 символов). Имя файла должно иметь расширение DAT.
Помогите Написать программу, которая:
• Выводит текст на экран дисплея;
• По нажатию произвольной клавиши поочередно выделяет в тексте заданное слово (заданное слово вводится с клавиатуры);
• Выводит текст в файл, заменяя в заданном слове строчные буквы прописными.
vlados92 вне форума Ответить с цитированием
Старый 22.02.2011, 12:20   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

В чём проблема??
C++ Builder, в нём активменеджер и писать даже ничего не надо!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 22.02.2011, 13:29   #3
vlados92
Пользователь
 
Регистрация: 22.02.2011
Сообщений: 12
По умолчанию

Пожалуйста можете написать поподробнее
vlados92 вне форума Ответить с цитированием
Старый 22.02.2011, 16:24   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Наработки в студию, или же стучите в аську (под аватаром), сделаю за деньги.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 23.02.2011, 00:37   #5
vlados92
Пользователь
 
Регистрация: 22.02.2011
Сообщений: 12
По умолчанию

Вот есть код похожей проги, если не сложно переделайте под моё условие:
Код:
#include "stdafx.h"
#include <iostream>
#include <windows.h>

int minimum (int m[], int k, char **str);
void textout(char filename[],char **str,int strl,int *minwords,int strlmw);
int checkmin(int i,int *minwords,int strlmw);
int fileout(char filename[],char *str);
void setcolor(short color);

int main () {
  FILE * pFile;
  long lSize;
  char * buffer;
  size_t result;
  char filename[255];

  setcolor(4);
  std::cout << "Enter file to open (file.dat):" << std::endl;
  setcolor(7);
  std::cin >> filename;
  pFile = fopen ( filename , "r" ); //открываем файл для чтения
  if (pFile==NULL) {
	  std::cout << "Read error. Can't open file!" << std::endl;
	  system("pause");
	  return 0;
  }
  // получаем размер файла
  fseek (pFile , 0 , SEEK_END);
  lSize = ftell (pFile);
  if (lSize > 1000){
	  std::cout << "Read error. Length > 1000." << std::endl;
		fclose(pFile);
	}
  rewind(pFile);

  // выделяем память для чтения
  buffer = (char*) malloc (sizeof(char)*lSize);
  if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}

  // копируем содержимое файла в буффер
  result = fread (buffer,1,lSize,pFile);
  buffer[result] = 0;
	int j=0,c=0;
	/*Проверяем длину строк текста. Если больше 70 - выходим из программы*/
	while (buffer[c] != '\0')
	{
		if (buffer[c] != '\n')
		{
			j++;
		} else
			j=0;
		if (j > 70){
			std::cout << "Length of string > 70!" << std::endl;
			system("pause");
			return 0;
		}
		c++;
	}
  setcolor(5);
  printf("%s\n",buffer);
  setcolor(7);
  char * pch;
  int i=0,counterspace=0,w=0;
  char **shortarr;
  int *wordlen = new int [strlen(buffer)];
  while (true)
  {
	  if (buffer[w] == ' ' || buffer[w] == '\n')
	  {
counterspace++; //считаем кол-во пробелом для выделения динам.памяти
	  }
	  if (buffer[w] == '\0')
	  {
		  shortarr = new char*[counterspace];
		  pch = strtok(buffer," ");
		  while (pch != NULL)
		  {shortarr[i] = pch; //разбиваем прочитанный текст по пробелу и заносим слова в массив
	wordlen[i] = (int)strlen(pch); //создаем массив с длинами всех слов
			  pch = strtok(NULL, " ");
			  i++;
		  }		  
		  minimum(wordlen,i,shortarr); //переходим к нахождению мин.слова
		  break;
	  }
	  w++;
  }
  // terminate
  fclose (pFile);
   system("pause");
  return 0;
}
int minimum (int m[], int k,char **str)
{
 int index=0;
 int min=m[0];
 int countmin=0;
 int j=0;
 char filenameout[255]; //имя файла для вывода
 for (int i=0; i<k; i++)
 {
	 if (m[i]<min)
	 {
		 min=m[i]; //ищем минимальный элемент из массива длин слов
	 }
 }
 for (int i=0; i<k; i++){
	 if (m[i] == min)
	 {
countmin++; //считаем кол-во мин.эл-тов для послед.выделения памяти
	 }
 }
 int *minwords = new int[countmin];
 for (int i=0;i<k;i++)
 {
	 if (m[i] == min)
	 {
minwords[j] = i; //запоминаем индексы слов с минимальным кол-вом символов
		j++;
	 }
 }
 setcolor(4);
 std::cout << "Enter filename to save: " << std::endl;
 setcolor(7);
 std::cin >> filenameout;
 textout(filenameout,str,k,minwords,countmin);
 delete [] minwords;
 return 0;
}
void textout(char filename[],char **str,int strl,int *minwords,int strlmw)
{
	system("cls");
	for (int i=0;i<strl;i++)
	{
if (checkmin(i,minwords,strlmw)) //если слово с мин.кол-вом символов - выделяем его и записываем в файл
		{
			setcolor(2);
			std::cout << str[i] << " ";
			fileout(filename,str[i]);
		} else {
			setcolor(7);
			std::cout << str[i] << " ";
		}
	}
	std::cout << std::endl;
}

int checkmin(int i,int *minwords,int strlmw)
{
/*проверка, является ли текущее слово минимальным (из массива мин.индексов)*/
	int counter = 0;
	for (int j=0;j<strlmw;j++)
	{
		if (i==minwords[j])
			counter++;
	}
	if (counter > 0) //если является..
	{
		DWORD dwR;
		HANDLE hStdIn;
		_INPUT_RECORD IR;
		AllocConsole();
		hStdIn = GetStdHandle(STD_INPUT_HANDLE);
		while(TRUE) {
			ReadConsoleInput(hStdIn, &IR, 1, &dwR);
			if((IR.EventType == KEY_EVENT)&&(IR.Event.KeyEvent.bKeyDown)) //выполняем действия при нажатии клавиш
				{
if(IR.Event.KeyEvent.wVirtualScanCode!=1) //при нажатии любой клавиши, кроме ESC выводи новый кусок текста
return 1;
			}//if
		}//
	} else {
		return 0;
	}
}
int fileout(char filename[],char *str)
{
	FILE * pFileOut;
	pFileOut = fopen ( filename , "a" );
	fprintf(pFileOut,"%s\n",str);
	fclose (pFileOut);
	return 0;
}
void setcolor(short color)
{
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);
}}

Последний раз редактировалось ACE Valery; 25.02.2011 в 00:47.
vlados92 вне форума Ответить с цитированием
Старый 25.02.2011, 00:06   #6
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

не знаю как тут делается, но такой объем кода никто бесплатно переделывать не будет)
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Ответ


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

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

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