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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 09:25   #1
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию Файловый Ввод-вывод и строки

Жопное задание, лекции прогулял, в инете ничего толкового нету

Обработка Символьных строк. Файловый Ввод-вывод.

Разработать программу, выполняющую чтение из произвольного текстового файла символьных строк и их обработку согласно варианту индивидуального задания. Необходимо вывести на экран исходный текст и результат его обработки.
Предпологается, что строки текста состоят из слов. Словом считается набор символов (как правило, только букв и цифр), не содержащий разделителей. В качестве разделителей следует рассматривать символ "проблем", символ "запятая", и символ "точка". Также дополнительно можно рассматривать в качестве разделителей другие символы, например, символ "точка с запятой", символ табуляции, символ перехода на следующую строку, символ возврата каретки и прочее.
8 Вариант.Само задание
Заменить все малые буквы латинского алфавита на соответствующие большие буквы.

вот что накалякал:


Код:
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <windows.h>
#include <conio.h>
#include <string.h>
#include <ConvOem.h>
using namespace std;
/* exercise 12
  8 вариант
Заменить все малые буквы латинского алфавита на соответствующие большие буквы
*/
char szSeparat[]=
{
' ', ',', '.', '\t', '\n', '\r', '\0'
};
int main()
{  
CConvOem szBuff(10000);
if (szBuff.isInvalid()) return -1;
int nmax,l(0);
char fn[100],svec[10000],svec2[10000];
cout << szBuff.toOemA("Задайте имя текстового файла: ");
cin >> fn;
// Открытие двоичного файла для чтения.
FILE *pFile = fopen(fn,"rb");
// Проверка корректности открытия файла.
if (!pFile)
{
 cout << szBuff.toOemA("\nОшибка открытия файла!\n\n");
 getch();
 return -1;
}
 cout << szBuff.toOemA("Содержимое текстового файла:\n\n");
int iCodeSym;
for (l;;++l)
{  
 iCodeSym = fgetc(pFile);
 svec[l] = iCodeSym;
 if (iCodeSym == EOF) break;
 cout << szBuff.toOemA(svec[l]);
}

_getch();
return 0;
}

Здесь как видно я только открытие и вывод содержимого текстового файла сделал.

Теперь по алгоритму. задача по идее не сложная.
То есть мне нужно сделать поиск по текстовому файлу, и каждую малую букву там заменить на большую. Для этого можно сделать 33 развилки Но так же думаю что можно создать символьный массив из 33 латинских букв и вот как то так сделать чтобы при нахождении определённого символа в файле программа меняла его на соответствующий из массива. Вот. Кто что скажет ?
coll3ctor вне форума Ответить с цитированием
Старый 02.05.2010, 09:40   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
в инете ничего толкового нету
признайся что инете не искал
rrrFer вне форума Ответить с цитированием
Старый 02.05.2010, 09:47   #3
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию

ну не то что толкогого.искал конечно.то есть работы с файлами я не нашёл.
coll3ctor вне форума Ответить с цитированием
Старый 02.05.2010, 09:48   #4
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
	char *s=new char[255];
	int i;
//...
for(i=0;s[i];i++)
		if(s[i]>='A'&&s[i]<='Z')
			s[i]-='A'-'a';
rrrFer вне форума Ответить с цитированием
Старый 02.05.2010, 09:53   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
#include <fstream>
using std::ifstream;
using std::ofstream;
int main (){
	ifstream ifst("in.txt");
	ofstream ofst("out.txt");
	char c;
	if(!ifst)
		return -1;
	ifst.get(c);
	while(!ifst.eof()){
		if(c>='A'&&c<='Z')
			c-='A'-'a';
		ofst.put(c);
		ifst.get(c);
	}
	ifst.close();
	ofst.close();
	return 0;
}

Последний раз редактировалось rrrFer; 02.05.2010 в 10:28.
rrrFer вне форума Ответить с цитированием
Старый 02.05.2010, 09:53   #6
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию

rrrFer,
спасибо. сейчас переишу и закину сюда для проверки
coll3ctor вне форума Ответить с цитированием
Старый 02.05.2010, 10:10   #7
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию

if(!ifst)

это развилка на ошибку открытия файла чтоли ?

in.txt и out.txt - это насколько я понимаю первый текстовый файл, в котором будет содержаться исходный текст, а второй текстовый файл - файл, в котором будет содержаться преобразованный текст, да ?
coll3ctor вне форума Ответить с цитированием
Старый 02.05.2010, 10:18   #8
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

coll3ctor
Чтоли. Да.
Файлы закрыть забыл
Что такое развилка?
rrrFer вне форума Ответить с цитированием
Старый 02.05.2010, 10:22   #9
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию

я если честно тут вообще ничего не понял))))

развилка ну это проверка логического условия) т.е.
если (идёт дождь)
{
сижу дома
}
иначе
{
иду бухать
}

и как закрыть файл?))
coll3ctor вне форума Ответить с цитированием
Старый 02.05.2010, 10:25   #10
coll3ctor
Пользователь
 
Регистрация: 02.05.2010
Сообщений: 14
По умолчанию

файлы должны содержаться в одной папке с файлом кода,да?
то есь у меня там 2 файла.содержимое первого:
a b u f o p h y l f
второй пустой.

В программе, я повторюсь, нифига не понел, но подозреваю, что там производится открытие файла, его чтение, вывод его на экран, затем производится необходимые по заданию операции и открывается воторой файл для чтения и записи, и всё преобразованное записывается туда и второй файл выводится. Да?
coll3ctor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод символьной строки,вывод содержимого соответствующего регистра(TASM) adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.03.2010 08:48
Ввод-вывод в С++ StudentPolitech Помощь студентам 0 04.06.2009 20:07
Файловый ввод/вывод -=$V=- Общие вопросы C/C++ 8 13.12.2008 21:11
файловый ввод/вывод kot111 Общие вопросы C/C++ 1 04.02.2008 17:45