Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со строками 
V
    Опции темы
Gucci
Дата 1.5.2006, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.4.2006

Репутация: нет
Всего: нет



Дан текст в файле по строкам.Надо вставить в начало каждой строки слова, состоящего из последних букв всех слов строки.Заранее спасибо. 
PM MAIL   Вверх
BreakPointMAN
Дата 1.5.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Какие-нибудь свои наработки есть? Если нет, тогда тебе в Центр помощи, здесь тебе могут подсказать, если у тебя что-то не получается, а решать домашнее задание - оно никому не надо. PS: будешь писать вопрос там - не забудь указать язык и компилятор. 


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Gucci
Дата 1.5.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.4.2006

Репутация: нет
Всего: нет



Код

char *metr(char *stroka)
{
int i;
int k=0;
char *slov;
for (i=0;i<strlen(stroka);i++)
if (stroka[i]==' ' || stroka[i]=='\0') {slov[k]=stroka[i-1];k++;}
slov[k]=' ';
slov[k++]='\0';
strcat (slov,stroka);
cout<<slov;
return slov;
}
void main()
{
clrscr();
char *str="asdad fgdgdfg fkgjdkd";
metr (str);
}



Вот что у меня получилось без файла. Не работает копирование последнего символа!
Программирую на Borland С++ 3.1 for DOS

Добавлено @ 14:26 
Всё, разобрался...
такой код получается:
Код

#include <stdio.h>
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
char *metr(char *stroka)
{
int i;
int k=0;
char *slov;
for (i=0;i<=strlen(stroka);i++)
if (stroka[i]==' ' || stroka[i]=='\0') {slov[k]=stroka[i-1];k++;}
slov[k++]=' ';
slov[k++]='\0';
strcat (slov,stroka);
cout<<slov<<endl;
return slov;
}
void main()
{
clrscr();
char *str="asdad fgdgdfg fkgjdkd";
cout<<metr (str);
}



Теперь нужно чтобы из файла считывался текст построчно и в каждой строчке вызывалась эта функция, а потом записать в другой файл. Помогите плиз.Заранее спасибо. 

Это сообщение отредактировал(а) Gucci - 1.5.2006, 14:16
PM MAIL   Вверх
Gucci
Дата 1.5.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 26.4.2006

Репутация: нет
Всего: нет



Эта прога должна копировать из файла нечетные строки с добавлением в начало каждой строки слова, состоящего из последних букв всех слов строки. 
Получается какой-то бесконечный цикл, в чем ошибка понять не могу.

Код

char *metr(char *stroka)
{
int i;
int k=0;
char *slov;
for (i=0;i<=strlen(stroka);i++)
if (stroka[i]==' ' || stroka[i]=='\0') {slov[k]=stroka[i-1];k++;}
slov[k++]=' ';
slov[k++]='\0';
strcat (slov,stroka);
cout<<slov<<endl;
return slov;
}
void main()
{
FILE *file1,*file2;
file1=fopen("g:\z1.txt","rt");
file2=fopen("g:\z3.txt","wt");
clrscr();
 char buf[10];
 char ch=0;
 int i=1;
 fseek(file1,0,SEEK_SET);
 while((ch=fgetc(file1))!=EOF) {
 fseek(file1,-1,SEEK_CUR);
 if(i%2!=0) { //ne chetnost'
 int j=0;
 while((ch=getc(file1))!=10) {
 buf[j]=ch;
 j++;
 }
 buf[j]='\0';
 fputs(metr(buf),file2);
 fputc(10,file2);//priznak okonchania stroki
 buf[0]='\0';//ochistka buf stroki
 }// end if
 else while((ch=fgetc(file1))!=10);
 i++;
 }
}

 
PM MAIL   Вверх
Helicopterr
Дата 1.5.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Код

WCHAR wszBuff[FILE_SIZE]; // допустим в этот массив ты прочитл файл

WCHAR* wszString = wcstok(g_wszBuff, L"\n"); //берешь первую строку

WCHAR* wszTemp= wcstok(wszString , L" "); //берешь первое слово

int iSymbolID = (int)wcslen(wszTemp);

WCHAR* wszWord =  new WCHAR[iSymbolID];
wszWord = wszTemp; 
WCHAR wszLastSymbol[MAX_SIZE];
wszLastSymbol[0] = wszWord [iSymbolID] ; //берешь последнюю букву первого слова
/*
 потом сделай цикл и заполни таким образом массив wszLastSymbol последними буквами
от каждого слова строки, только используй уже wcstok(0, L" "); 
*/
WCHAR* wszRezult = lstrcatW( wszLastSymbol, wszString ); //итоговая строка
delete []wszWord;

Я не компилил, не обижайся, если где-то ошибся.
 


--------------------
people can fly
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.