powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Файловый ввод-вывод
14 сообщений из 14, страница 1 из 1
Файловый ввод-вывод
    #33318453
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем кто осваивает или освоил C++. Я начал заниматься Си совсем недавно. Вот пишу прогу и в ней необходимо сделать так чтобы из файла состоящего из последовательности чисел, на дисплей выводилось бы мах и мин число. Я парюсь немогу никак поймать логику. Нужно чтобы прога была универсальной неважно 100 или 200 чисел в файле(кроме пробелов между ними нет нифига). Пришлите ПЛЗ листинг с куском реализующим это.
Я очень благодарен.
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33318592
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это тебе надо написать программу. На С. Или С++. В ней надо читать числа из файла и в двух переменных считать в одной максимальное, в другой-минимальное. Ну и все.
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33318692
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю, что файл с числами - это БД. Тогда надо к ней подключиться и выполнить запрос.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33319024
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrEEN@qЯ парюсь немогу никак поймать логику.

???

Какая тут логика? читаешь числа и сравниваешь с текущиим мин. и макс. значениями...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, char* argv[])
{
	if(argc >  1 )
	{
		int n, nmin, nmax;
		ifstream ifs(argv[ 1 ]);
		if(ifs >> n)
		{
			nmin = n;
			nmax = n;
			while(ifs >> n) 
			{
				if(n < nmin)
					nmin = n;
				if(n > nmax)
					nmax = n;
			}
			cout << "min = " << nmin << endl << "max = " << nmax;
		}
		else 
			cout << "ops";
	}
	return  0 ;
}
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33321380
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я понял. Я даже массивы не освоил еще. Так сказать я только на вводе-выводе, стандартных средствах пока. Очень помог приведенный листинг,огромное спасибо. Принципы программирования конечно надо освоить в первую очечередь, на мануалах(еле разобрался в азах-передачи по ссылке и по значению), очень сложно понять. Я вот купил Волтера Савича, очень неплохо постороено изложения.
Я буду иногда обращаться к вам , а вы если будет желание помогайте плз. АФФТАРЖОТ)
Так вот насчет БД, нет нет и еще раз нет, я выполняю так скзать самоупражнения и вот в одной части и понадобилось вот это. Еще раз огромное спасибо. просто освоив принципы, будет легче в том же Java и Flash ну и тд и тп разумеется, все построено так близко.

ifstream ifs(argv[1]) вот это подразумевает открытия потока ? просто я на С++
ifstream.open(file)
while (! if_stream.eof())
{
if_stream.get(symbol)
if(n < nmin)
nmin = n;
if(n > nmax)
nmax = n;

так ведь можно? ладно забейте, я коментарии напишу и бутед понятно где я туплю, мне ведь надо понять принципы а не протсо тупо откомпилировать. ЕЩЕ РАЗ СПАСИБО
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33321381
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
имел ввииду
while (! if_stream.eof())
{
if_stream.get(n)
if(n < nmin)
nmin = n;
if(n > nmax)
nmax = n;
}
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33321399
redskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrEEN@q
ifstream
ifs(argv[1]) вот это подразумевает открытия потока ? просто я на С++
ifstream.open(file)


Код: plaintext
1.
  ifstream  ifs(argv[ 1 ]);

Создает объект типа ifstream, т.е. файловый поток ввода. Имя файла берется из первого параметра командной строки - argv[1].

По поводу

Код: plaintext
1.
2.
3.
4.
5.
ifstream.open(file)
...
while (! if_stream.eof())
...
if_stream.get(symbol)

и пр.

Можно так писать, но зачем?

В нашем случае конструктор и так откроет файл, можно обойтись без явного open().

Раз уж мы читаем целые числа, давайте пользоваться оператором ввода, т.е. >>. Который во-первых нормально обработает все пропуски (пробелы, табуляции, перевод каретки, левые символы и пр), а во-вторых вернет ссылку на поток, благодаря чему можно проверить результат операции.

По основам С++, т.е. совсем начальный уровень (но не ужас "для чайников" или "за 21 день") рекомендую хорошие книги:

"Основы программирования на С++."

Автор: Стенли Б. Липпман Издательство: Вильямс, 2002

Эффективное программирование на С++. Серия C++ In-Depth

Авторы: Эндрю Кёниг Барбара Му. Издательство: "Вильямс", 2002
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33323891
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему нельзя внести
nmin = n;
nmax = n;
в цикл while? Да компилится с ошибкой(возврощает тогда одинаковые значения , но мне кажется что if(ifs >> n) и
и while(ifs >> n) ведь имеет один смысл----пока происходит чтение файла!
Тоесть
while(ifs >> n)
{
nmin = n;
nmax = n;
if(n < nmin)
nmin = n;
if(n > nmax)
nmax = n;
}
так не фурычит.
И еще, вы используете что-нибудь для задержки вывода на дисплей?
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33323893
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или просто необходим else? поскольку во внешнем IF он был и тогда для внутренних if-ов он небыл нужен чтоли.

Если еще не такой напряг поднимать из-за такой чепуховой програмки дискуссию, то был бы очень благодарен.
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33324015
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо. Раз ты не понимаешь что тут написано, объясню популярно (см. комментарии)...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
#include <iostream> //Описываем прототипы функций, используемых
#include <fstream> //в программе

using namespace std;
//Программа принимает входные параметры, т.е. ее запуск осуществляется 
//как: <progname> <filename>
int main(int argc, char* argv[]) 
{
	if(argc >  1 ) //Если параметр передан, то работаем
	{
		int n, nmin, nmax;//Объявляем необходимые переменные
		ifstream ifs(argv[ 1 ]); //Открываем файл <filename>
		if(ifs >> n) //Если в файле есть данные
		{
			nmin = n; //Предполагаем, что это число одновременно
			nmax = n;// минимальное и максимальное из всего набора
			while(ifs >> n) //Пока в файле есть данные
			{
                            //Если очередное число меньше, чем сохраненное
                            //в переменной, то оно становится минимальным
				if(n < nmin)
  				nmin = n;
                            //Если очередное число больше, чем сохраненное
                            //в переменной, то оно становится максимальным
				if(n > nmax)
					nmax = n;
			}
                        //Выводим результат работы программы
			cout << "min = " << nmin << endl << "max = " << nmax;
		}
		else 
			cout << "ops"; //В исходном файле данных нет
	}
	return  0 ;//Конец работы программы
}

Теперь разберем твой алгоритм:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...
while(ifs >> n) //Пока есть данные в файле
{
  nmin = n; // Предполагаем, что число одновременно минимальное
  nmax = n;// и максимальное из всего набора

  //А эти инструкции в данном контексте бесполезны...
  //(вопрос студенту: Объясни почему?)
  if(n < nmin)
     nmin = n;
  if(n > nmax)
    nmax = n;
}
И еще:
автор
... компилится с ошибкой

Это означает, что компилятор выдал сообщение об ошибке. В данной программе такого быть просто не может!
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33326246
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Д у м а ю.....
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33326247
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчет компилится с ошибкой я имел ввиду что выдается результат с неправильной логикой.
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33326250
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
while(ifs >> n) //Пока есть данные в файле
{
nmin = n; // Предполагаем, что число одновременно минимальное
nmax = n; // и максимальное из всего набора
тоесть получается я уже предопределил их все остальные итерации не имеют смысла. Значит все в одном цикле делать нельзя, мда.....

if(n < nmin)
nmin = n;
if(n > nmax)
nmax = n;
}
...
Рейтинг: 0 / 0
Файловый ввод-вывод
    #33326253
GrEEN@q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пасибо за коментарии.... все давно уже работает хорошо, теперь буду разбираться во всех тонкостях( почему так а не этак или так а не на оборот:))
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Файловый ввод-вывод
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]