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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2014, 17:45   #1
evgeny_1991
 
Регистрация: 14.02.2014
Сообщений: 3
Сообщение Работа со строками (Visual Studio 2010 С++)

Задача: В записке слова зашифрованы - каждое из них записано наоборот. Расшифровать сообщение. Записать исходную и получившиеся строки в файл.
Мой недоделанный код:
Код:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
 
void main() 
{
	FILE*f,*f1;
	f=fopen("zad22.txt","r");
	char a[100],b[100]; // начальная, конечная строка;
	int i=-1,k=-2,n,i1=0;;
    fgets(a,100,f);
	puts(a);
	fclose(f);
	f1=fopen("zad22_2.txt","w");
	while (a[++i]!='\0')
	{if (a[i]==' ') n=k+2, k=i-1, cout<<" "<<n<<" "<<k<<" "<<endl;
	for (i=k;i>n-1;i--) b[i1++]=a[i];
	b[i1]=' ';
	}

    puts(b);
	fputs(a,f1);
	fputs(b,f1);
	fclose(f1);
	fclose(f1);
}
Можно сказать, что это для одного слова. Но слов много, поэтому нужно продолжать искать конец следующего слова и переписывать его "наоборот" следом за первым в массив b[i1]. Помогите, пожалуйста, доделать. У меня не получается.

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

Идея такая:
Код:
f=fopen("zad22.txt","r");
fseek (f, 0, 2);               // получаем количество
FileLen = ftell(f);            // байт в файле
rewind(f);
char *s=new char[FileLen];
fread(s,FileLen,1,f);
fclose(f)'

	for(char *c=strtok(s," ");c;c=strtok(0," ")){
          for(char *k=c;*k;k++);for(char *l=k-1;l!=c;l--) printf("%c",*l); printf("\n");
	}

delete[] s;
Не проверял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.02.2014, 13:52   #3
evgeny_1991
 
Регистрация: 14.02.2014
Сообщений: 3
По умолчанию Спасибо за ответ!

Если имелся ввиду такой код, то не работает. Что такое FileLen? Не определяется оно компилятором.
Код:
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
 
void main() 
{
	FILE*f;
	f=fopen("zad22.txt","r");

fseek (f, 0, 2);               // получаем количество
FileLen = ftell(f);            // байт в файле
rewind(f);
char *s=new char[FileLen];
fread(s,FileLen,1,f);
fclose(f);

	for(char *c=strtok(s," ");c;c=strtok(0," ")){
          for(char *k=c;*k;k++);for(char *l=k-1;l!=c;l--) printf("%c",*l); printf("\n");
	}

	delete[] s;
}
evgeny_1991 вне форума Ответить с цитированием
Старый 17.02.2014, 15:38   #4
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

А вы подумайте какого типа должна быть переменная FileLen. Никто не обещал вам полного ответа.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 17.02.2014, 15:53   #5
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
По умолчанию

это точно твой недоделанный код?
Цитата:
Что такое FileLen?
Эта переменная определяет размер файла.Для тебя же комментарий написали.
Компилятор на нее ругается, потому что эта переменная не объявлена (Основы основ программирования)
alekopoko вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio 2010 и SharePoint 2010 glinka-82 Общие вопросы .NET 0 21.03.2012 22:37
Работа в Microsoft Visual Studio 2010 Арабелит Visual C++ 5 22.01.2012 02:38
Работа со строками в Visual Studio С++ 2008 Nubster Помощь студентам 1 11.02.2011 21:29
Expression Studio и Visual Studio 2010 ждать ли русские версии? Casper-SC Свободное общение 31 25.05.2010 14:31
Visual studio 2010 Dimarik Общие вопросы .NET 1 24.05.2010 01:43