Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Файл и строки

Автор: @^WARlock^@ 29.10.2007 16:03

Подскажите, решение вот такой задачки:

Дан текстовый файл, программа должна вывести на экран строки через одну.

Пример:
1)Toyota
2)Nissan
3)Subaru
4)Mazda
5)Honda

1,2,3,4,5 как вы поняли это строки.

Результат:
1)Toyota
3)Subaru
5)Honda

Вывести информацию из файла на экран я могу

#include <iostream.h>
#include <stdio.h>

void main( void )
{
FILE *file;
char* file_name = "1.txt";
char load_string[256] = "Net strok";

//fclose( file );

file = fopen( file_name, "r" );

{
fgets( load_string, 256, file );
cout << "Vivod strok: " <<endl<< load_string<<endl;

}
fclose(file);
}

, а вот как сделать сортировку это вопрос?

Автор: volvo 29.10.2007 16:09

Цитата
Вывести информацию из файла на экран я могу
Попробуй сделать чтение построчно, тогда второй вопрос исчезнет сам собой. А вообще - непонятно, что у тебя за смесь Сишного FILE*, и потокового вывода С++? Ты уж чем-то одним пользуйся...

Цитата
а вот как сделать сортировку это вопрос?
Что-то в задании ничего про сортировку не говорится...

То, что надо выводить строки через одну (ну, скажем, все нечетные - это тебе подсказка) - еще не говорит о необходимости сортировать что-то... Просто напросто заведи счетчик считанных строк из файла, и если читаешь НЕчетную строку, то выводи ее на экран, если четную - то не надо ничего выводить...

Автор: @^WARlock^@ 10.11.2007 14:01

Цитата
А вообще - непонятно, что у тебя за смесь Сишного FILE*, и потокового вывода С++?

Ну может тогда кто-нибудь подскажет, как по другому вывести информацию из файла на экран (с помощью С++).

Автор: volvo 10.11.2007 14:30

Так?

#include <iostream>
#include <fstream>

using namespace std;

const int max_line_size = 80;

int main()
{
ifstream in_file("1.txt", ios::in);
char buffer[max_line_size];

int count = 0;
while(in_file.getline(buffer, max_line_size)) {
if(!(count++ % 2)) cout << buffer << endl;
}
in_file.close();
return 0;
}