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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Работа с фаилом (вещественные числа), наименьшее и наибольшее 
V
    Опции темы
A1exander
Дата 12.6.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Друзья , помогите  smile В книжке ничего про работу с фаилами  smile , а завтра сдать нужно...  smile 
Цитата

В текстовом фаиле t записана непустая последовательность вещественных чисел, разделённых пробелами. Описать функцию MinMax(t) для нахождения наименьшего и наибольшего из этих чисел и их порядковые номера в фаиле.

PM MAIL   Вверх
apook
Дата 12.6.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Прикол в том что ты можешь в файл писать и без пробела и спробелом и в несколько строк
Цитата

 0:: #include<stdio.h>
 1:: #include<io.h>
 2:: #include<conio.h>
 3:: #include<fstream.h>
 4:: #include<iostream.h>
 5:: 
 6:: #define NLINE 0
 7:: #define NSYMB 1
 8:: #define VALUE 2
 9:: 
10:: #define MAXSZ 1024
11:: 
12:: 
13:: static int minq[ 3 ]={-1,-1,-1}, maxq[ 3 ]={-1,-1,-1}, linecount;
14:: 
15:: 
16:: void report()
17:: {
18:: cout << "\nReport:\tFile t.txt\tLine -- " << linecount << endl;
19:: if( minq[ VALUE ]>-1 )
20:: {
21::     cout << "Minimum Value: ";
22::     cout << "Line( " << minq[ NLINE ] << " ) Symbol Number( " << minq[ NSYMB ]+1 << " )"
23::          << "Value( " << minq[ VALUE ]-'0' << " )" << endl;
24::     }
25:: if( maxq[ VALUE ]>-1 )
26:: {
27::     cout << "Maximum Value: ";
28::     cout << "Line( " << maxq[ NLINE ] << " ) Symbol Number( " << maxq[ NSYMB ]+1 << " )"
29::          << "Value( " << maxq[ VALUE ]-'0' << " )" << endl;
30::     }
31:: return;
32:: }
33:: 
34:: 
35:: void MinMax( fstream &IN )
36:: {
37:: int i, j, ch;
38:: char buf[ MAXSZ ], *p;
39:: 
40:: 
41:: IN.seekp( 0, ios::beg );
42:: IN.width( sizeof(buf) );
43:: for( linecount=0; !IN.eof(); )
44:: {
45::     if( IN.eof() )
46::         break;
47::     if( IN.getline(buf, MAXSZ) && (strlen(buf)>0) )
48::     {
49::         ++linecount;
50::         p=buf;
51::     
52::         minq[ VALUE ]=p[ 0 ];
53::         maxq[ VALUE ]=p[ 0 ];
54::         for( i=0, j=0; *p; p++, i++ )
55::         {
56::             if( *p==' ' )
57::                 continue;
58::             ++j; 
59::             if( *p<minq[ VALUE ] )
60::             {
61::                 minq[ NLINE ]=linecount;
62::                 minq[ NSYMB ]=j;
63::                 minq[ VALUE ]=*p;
64::                 }
65::             if( *p>maxq[ VALUE ] )
66::             {
67::                 maxq[ NLINE ]=linecount;
68::                 maxq[ NSYMB ]=j;
69::                 maxq[ VALUE ]=*p;
70::                 }
71::            }
72::         report();
73::         } 
74::     }
75:: return;
76:: }
77:: 
78:: 
79:: int main()
80:: {
81:: 
82:: fstream t;
83:: 
84:: t.open( ".\\t.txt", ios::in );
85:: if( !)
86:: {
87::     cout <<  "Can`t open file!" << endl;
88::     return 1;
89::     }
90:: 
91:: MinMax( t );
92:: 
93:: return 0;
94:: }
95:: 
96:: 



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Damarus
Дата 12.6.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

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



Код
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>

int main(int argc, char *argv[])
{
    std::ifstream input_file("array.txt");
    if (!input_file.is_open()) return 1;

    std::vector<double> array;
    std::copy(std::istream_iterator<double>(input_file), std::istream_iterator<double>(), std::back_inserter(array));

    std::vector<double>::iterator max_iter = std::max_element(array.begin(), array.end());
    std::vector<double>::iterator min_iter = std::min_element(array.begin(), array.end());

    std::cout << "Наибольшее число номер " << max_iter - array.begin() + 1 << ", значение " << *max_iter << std::endl;
    std::cout << "Наименьшее число номер " << min_iter - array.begin() + 1 << ", значение " << *min_iter << std::endl;
}


Добавлено через 10 минут и 39 секунд
A1exander, в функцию думаю сам сможешь вынести.

Это сообщение отредактировал(а) Damarus - 12.6.2007, 15:21
PM MAIL ICQ Jabber   Вверх
A1exander
Дата 12.6.2007, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Благодарю))) smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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