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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2010, 20:18   #1
Alexxl2009
 
Регистрация: 09.04.2009
Сообщений: 9
По умолчанию Задача на Си с файлами

Помогите пожалуйста, задача, на мой взгляд, простая на паскале я бы её решил, но мне надо на Си, а я его не знаю, буду очень рад если кто-нибудь поможет её решить.
Вот она:
Дан текстовый файл, все цифры из него записать в другой файл, но буквами.
Alexxl2009 вне форума Ответить с цитированием
Старый 02.01.2010, 20:28   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

дайте код на паскале, на си, думаю не составит труда перенести
Namolem вне форума Ответить с цитированием
Старый 03.01.2010, 13:40   #3
Alexxl2009
 
Регистрация: 09.04.2009
Сообщений: 9
По умолчанию

Вот код на паскале, по такому типу надо на си
Код:
var
 fin,fout:text;
 st,st2:string;
 i:integer;
begin
assign(fin,'1.txt');
reset(fin);
while not EOF(fin) do
 readln(fin,st);
close(fin);
assign(fout,'2.txt');
rewrite(fout);
for i:=1 to length(st) do
 case st[i] of
  '0': st2:=st2+' zero';
  '1': st2:=st2+' one';
  '2': st2:=st2+' two';
  '3': st2:=st2+' three';
  '4': st2:=st2+' four';
  '5': st2:=st2+' five';
  '6': st2:=st2+' six';
  '7': st2:=st2+' seven';
  '8': st2:=st2+' eight';
  '9': st2:=st2+' nine';
 end;
writeln(fout,st2);
close(fout);
Alexxl2009 вне форума Ответить с цитированием
Старый 03.01.2010, 14:54   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
#include <fstream.h>
#include <iostream.h>

int main()
{
        ifstream file_input("C:\\abc.txt");
        ofstream file_output("C:\\_abc.txt");

        char ch;
        file_input.get(ch);

        while(!file_input.eof())
                {
                        switch (ch)
                                {
                                        case '0': file_output << "ZERO"; break;
                                        case '1': file_output << "ONE"; break;
                                        case '2': file_output << "TWO"; break;
                                        case '3': file_output << "THREE"; break;
                                        case '4': file_output << "FOUR"; break;
                                        case '5': file_output << "FIVE"; break;
                                        case '6': file_output << "SIX"; break;
                                        case '7': file_output << "SEVEN"; break;
                                        case '8': file_output << "EIGHT"; break;
                                        case '9': file_output << "NINE"; break;

                                        default: file_output << ch;
                                }

                        file_input.get(ch);
                }

        cin.get();

        return 0;
}

Последний раз редактировалось profi; 03.01.2010 в 15:00.
profi вне форума Ответить с цитированием
Старый 03.01.2010, 18:04   #5
Alexxl2009
 
Регистрация: 09.04.2009
Сообщений: 9
По умолчанию

Спасибо за отзывчивость, но я так понял, что это С++, а мне надо сдать просто на С. Буду признателен если кто-нибудь решит её на С.
Alexxl2009 вне форума Ответить с цитированием
Старый 03.01.2010, 18:17   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Переписал код profi на C:
Код:
#include <stdio.h>

int main()
{
	FILE* input  = fopen("C:\\abc.txt", "r");
	FILE* output = fopen("C:\\_abc.txt", "w");
	char c;

	while( (c = fgetc(input)) != EOF ) {
		switch( c ) {
			case '0': fprintf(output, "ZERO");  break;
			case '1': fprintf(output, "ONE");   break;
			case '2': fprintf(output, "TWO");   break;
			case '3': fprintf(output, "THREE"); break;
			case '4': fprintf(output, "FOUR");  break;
			case '5': fprintf(output, "FIVE");  break;
			case '6': fprintf(output, "SIX");   break;
			case '7': fprintf(output, "SEVEN"); break;
			case '8': fprintf(output, "EIGHT"); break;
			case '9': fprintf(output, "NINE");  break;

			default:  fputc(c, output);
		}
	}

	fclose(input);
	fclose(output);

	getchar();
	return 0;
}
netrino вне форума Ответить с цитированием
Старый 03.01.2010, 19:24   #7
Smile.id
Пользователь
 
Регистрация: 19.01.2009
Сообщений: 17
По умолчанию

У меня похожая проблема, но мне надо взять данные не числовые, а строковые. Попоробовал сделать по аналогии с выложеным кодом, но не получилось. Какой нюанс взятия строковых данных?
Вот код с консольным вводом, который нужно переделать:
Код:
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <fstream.h>

main ()
{
clrscr();

struct nex{
char predmet1[15];
char predmet2[15];
char name1[20];
char name2[20];
char vyz[10];
}a1, a2, a3;

cout<<"vvedit' perwui vyz:\n";
gets(a1.vyz);
cout<<"vvedit' nazvy perwogo predmety:\n";
gets(a1.predmet1);
cout<<"vvedit' nazvy drygogo predmety:\n";
gets(a1.predmet2);
cout<<"vvedit' vuklada4a z perwogo perdmety:\n";
gets(a1.name1);
cout<<"vvedit' vuklada4a z drygogo predmety:\n";
gets(a1.name2);

cout<<"vvedit' drygui vyz:\n";
gets(a2.vyz);
cout<<"vvedit' nazvy perwogo predmety:\n";
gets(a2.predmet1);
cout<<"vvedit' nazvy drygogo predmety:\n";
gets(a2.predmet2);
cout<<"vvedit' vuklada4a z perwogo perdmety:\n";
gets(a2.name1);
cout<<"vvedit' vuklada4a z drygogo predmety:\n";
gets(a2.name2);

cout<<"vvedit' tretiy vyz:\n";
gets(a3.vyz);
cout<<"vvedit' nazvy perwogo predmety:\n";
gets(a3.predmet1);
cout<<"vvedit' nazvy drygogo predmety:\n";
gets(a3.predmet2);
cout<<"vvedit' vuklada4a z perwogo perdmety:\n";
gets(a3.name1);
cout<<"vvedit' vuklada4a z drygogo predmety:\n";
gets(a3.name2);

cout<<"=====================================================\n";
cout<<"INFORMACIYA PRO VUKLADAC'KUI SKLAD:\n";

cout<<a1.vyz<<":\n";
cout<<"vuklada4 z "<<a1.predmet1<<" - "<<a1.name1<<"\n";
cout<<"vuklada4 z "<<a1.predmet2<<" - "<<a1.name2<<"\n";

cout<<a2.vyz<<":\n";
cout<<"vuklada4 z "<<a2.predmet1<<" - "<<a2.name1<<"\n";
cout<<"vuklada4 z "<<a2.predmet2<<" - "<<a2.name2<<"\n";

cout<<a3.vyz<<":\n";
cout<<"vuklada4 z "<<a3.predmet1<<" - "<<a3.name1<<"\n";
cout<<"vuklada4 z "<<a3.predmet2<<" - "<<a3.name2<<"\n";

getch();

return 0;
}
Smile.id вне форума Ответить с цитированием
Старый 03.01.2010, 20:52   #8
Alexxl2009
 
Регистрация: 09.04.2009
Сообщений: 9
По умолчанию

netrino
Спасибо, все работает.
Alexxl2009 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача с файлами maloy-rom Помощь студентам 1 09.06.2009 21:17
Задача с файлами innaa639 Паскаль, Turbo Pascal, PascalABC.NET 7 08.12.2008 12:33
Задача с файлами innaa639 Помощь студентам 2 07.12.2008 21:49
Задача с файлами Наташа Общие вопросы C/C++ 4 05.01.2007 20:23