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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2008, 14:51   #1
pascalC
 
Регистрация: 19.10.2008
Сообщений: 8
По умолчанию Считать из файла несколько массивов

Приветствую!
Перехожу с Делфи на С++. Возникла проблема как считать из файла сразу несколько массивов, например структура файла такая:
110 213 78427
123 372 73849
723 465 73846
832 127 78324

Первое и второе значение, координаты - x[], y[], третье значение в точке p[]

PHP код:
FILE *file;
charfile_name "input.txt";
int n,m;
int x[150],y[150],p[150];
file fopenfile_name"r" ); 
сам файл открыл, переменные задал, как теперь считать все значения массивов?
В инете нашел примеры только для строк и слов.
pascalC вне форума Ответить с цитированием
Старый 19.10.2008, 15:07   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от pascalC Посмотреть сообщение
Приветствую!
Перехожу с Делфи на С++. Возникла проблема как считать из файла сразу несколько массивов, например структура файла такая:
110 213 78427
123 372 73849
723 465 73846
832 127 78324

Первое и второе значение, координаты - x[], y[], третье значение в точке p[]

PHP код:
FILE *file;
charfile_name "input.txt";
int n,m;
int x[150],y[150],p[150];
file fopenfile_name"r" ); 
сам файл открыл, переменные задал, как теперь считать все значения массивов?
В инете нашел примеры только для строк и слов.
странно както файл открываешь.
я бы открывал так:
Код:
ifstream infile;
infile.open("input.txt");
//извлечение информации из файла и обработка инфы
infile.close();
если я не ошибаюсь, то в файле txt - все символы - чары.
считать можешь с помощью getline() считанный массив обработать(перевести в числовое значение). и далее до eof.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 19.10.2008, 15:13   #3
pascalC
 
Регистрация: 19.10.2008
Сообщений: 8
По умолчанию

Спасибо, а стандартными средствами std, без потоков можно?
Что-нибудь вроде паскалевского readln(file,x[i],y[i],p[i])?
fgets нашел, но он всю линию считывает, потом еще и разбивать нужно
pascalC вне форума Ответить с цитированием
Старый 19.10.2008, 15:18   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от pascalC Посмотреть сообщение
Спасибо, а стандартными средствами std, без потоков можно?
Что-нибудь вроде паскалевского readln(file,x[i],y[i],p[i])?
fgets нашел, но он всю линию считывает, потом еще и разбивать нужно
на разбитие 3-4 строчки кода максимум. ничего в этом сложного не вижу.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 19.10.2008, 15:35   #5
pascalC
 
Регистрация: 19.10.2008
Сообщений: 8
По умолчанию

Цитата:
на разбитие 3-4 строчки кода максимум. ничего в этом сложного не вижу.
Не верю, что нет ничего попроще, С++ язык краткого программирования. Если можно что-то сделать одной командой, надо делать одной командой, лишний код-признак непрофессионализма. Ладно, еще поищу.
pascalC вне форума Ответить с цитированием
Старый 19.10.2008, 16:18   #6
pascalC
 
Регистрация: 19.10.2008
Сообщений: 8
По умолчанию

вот нашел, все просто:
Код:
while(!feof(file))
{
	fscanf(file,"%d%d%d",&x[i],&y[i],&p[i]);
	i++;
}
pascalC вне форума Ответить с цитированием
Старый 19.10.2008, 18:31   #7
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от pascalC Посмотреть сообщение
Не верю, что нет ничего попроще, С++ язык краткого программирования. Если можно что-то сделать одной командой, надо делать одной командой, лишний код-признак непрофессионализма. Ладно, еще поищу.
хе, респект.
из тех кто стремиться сократить код, и сделать его изящным МОГУТ вырасти мастера своего дела(т.е. хакеры). вот только одно НО:
но такие мастера задумываются не об изящности кода, а эффективности программы, быстроте ее выполнения, отсутствии багов.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 20.10.2008, 01:42   #8
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от pascalC Посмотреть сообщение
Перехожу с Делфи на С++.
А судя по коду на С.

Цитата:
Сообщение от alexinspir Посмотреть сообщение
считать можешь с помощью getline()
Зачем так извращаться? В плане сначала читать строчку, а потом руками ее разбивать?

Цитата:
Сообщение от pascalC Посмотреть сообщение
Спасибо, а стандартными средствами std, без потоков можно?
С каких пор потоки не входят в стандартную библиотеку? Да и вариант с потоками более масштабируем.

Цитата:
Сообщение от pascalC Посмотреть сообщение
С++ язык краткого программирования
Глупости, надо писать не как можно кратче, а как можно понятнее.

Цитата:
Сообщение от alexinspir Посмотреть сообщение
но такие мастера задумываются не об изящности кода, а эффективности программы, быстроте ее выполнения
Тогда бы все поголовно писали на ассемблере. Важен баланс при решении задачи.
filosof_x86 вне форума Ответить с цитированием
Старый 20.10.2008, 07:56   #9
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
Тогда бы все поголовно писали на ассемблере. Важен баланс при решении задачи.
по вашему все кодеры есть хакеры? либо я вас неправильно понял, либо вы мну, либо и то и другое.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 20.10.2008, 08:19   #10
pascalC
 
Регистрация: 19.10.2008
Сообщений: 8
По умолчанию

Цитата:
Сообщение от filosof_x86 Посмотреть сообщение
А судя по коду на С.
...
Тогда бы все поголовно писали на ассемблере. Важен баланс при решении задачи.
Хорошо, а как по-вашему должен выглядеть ПРАВИЛЬНЫЙ код для считывания нескольких массивов?
pascalC вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Требуется программным путём считать несколько ключей с реестра из одного раздела. Air Общие вопросы Delphi 6 11.09.2008 11:33
Несколько очень легких задачек!проверьте себя!!на разные темы,от нах-я суммы до массивов!!прошу решить,кн ruslan55 Паскаль, Turbo Pascal, PascalABC.NET 3 17.06.2008 12:43
считать елементы файла в массив XfighT Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.01.2008 16:35
Считать определенную строку из файла DimkinStd Работа с сетью в Delphi 4 15.02.2007 22:30
как считать данные с Txt файла? Alar Общие вопросы Delphi 0 29.10.2006 20:12