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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2009, 23:58   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Парсифаль, здесь так быстро не разобраться. Это для вас ваша программа понятна и очевидна.

Скажите, какой смысл читать по одному символу, переводить его в цифру, на что-то умножать...? Это крайне малоэффективно.

Скажите лучше, что должна делать программа?
Что у вас делает функция term?
Что делает функция symBase?

Почему бы вам не читать файл построчно? Из полученной строки брать подстроку (цену) и уже ее переводить в число?
Вы пишете на C++, так почему бы вам не использовать класс string?

Цитата:
Все цены я хочу загнать в массив.
А что потом? Просто загнать?

-------------
Цитата:
В начале надо ввести число строк в файлике RIM9.
Могу сказать, что у меня программа вылетает даже при вводе 3.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 00:09   #12
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Отвечаю на вопросы:

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

Функция терм показывается мне с помощью двух переменных col и sym, к какому столбику принадлежит символ, который я считываю. И если набирается достаточное кол-во символов (в первом столбике это 8) он сбрасывает col на второй.

SymBase показывает, сколько символьные числа должны стоять в этой колонке.

Насчет построчного прочтения. Я простоне умею это делать. Моя единственная книга Джесса Либерти "С++ за 21 день" этого не описывает. Там есть только про чтение символов. Поэтому я придумал такой искусственный метод.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 29.04.2009, 00:31   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот. Предлагаю вам такой вариант.
Он намного проще. Добавил комменты.
Читаем из файла заданное количетсво строк (rows) и пишем в массив price цены.
Код:
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string.h>
using namespace std;

int main()
{
char *fileName = "RIM9.txt";
ifstream fin(fileName);
int rows;
long *price,i;
char buf[100],*p;

cout << "Enter the rows number: ";
cin >> rows;

price = new long[rows];

fin.getline(buf,100,'\n'); // читаем первую строку с названиями столбцов - она нам не нужна

for(i=0;i<rows;i++)
 {
  fin.getline(buf,100,'\n');
  p = strtok(buf,";"); //получаем дату
  p = strtok(NULL,";"); // получаем время
  p = strtok(NULL,";"); // получаем цену
  price[i] = atoi(p);  // конвертим и пишем в массив
 }

// для теста распечатаем цену из 5-й строчки
cout<<price[4]<<endl;

delete[] price;
fin.close();

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 00:57   #14
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Сейчас опробую. Премного благодарен. Жалко только, что Вам нельзя писать личные сообщения во время сложностей(
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 29.04.2009, 01:07   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Жалко только, что Вам нельзя писать личные сообщения во время сложностей(
Сможете через 2 дня, когда станете "Пользователем".
Если возникнут вопросы или сложности, пишите тут (естественно, вопросы должны касаться именно этой программы). Если не отвечу я, то ответит кто-нибудь другой.

Приведенный пример рабочий. Здесь нового для вас - всего пара функций.
Советую разобраться, т.к. то, что написали вы... ну не делают так )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 01:08   #16
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Спасибо большое
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 30.04.2009, 14:32   #17
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Задача такая.
Считывается файл с достаточно большим количеством строк от 60 тысяч до 200 тысяч, хотя может быть и больше. Из каждой строки считывается третье число и инициализируется. Надо сначала узнать количество строк в файле а уже потом создавать динамический массив, потому что если каждый раз создавать массив на 200 тысяч элементов - это не экономично. Так проблема в том, что с помощью

if (fin.getline(buf,100,'\n') != EOF) сделать это не получается.

Программа сама указана 3 поста назад. Надеюсь на помощь. Вроде вопрос не очень сложный. Спасибо!
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 30.04.2009, 15:50   #18
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string.h>
using namespace std;

int main()
{
char *fileName = "RIM9.txt";
ifstream fin;
long rows;
long *price,i;
char buf[100],*p;

fin.open(fileName);
//cout << "Enter the rows number: ";
//cin >> rows;

//price = new long[rows];
rows = -1;
while(!fin.eof())
 {
  fin.getline(buf,100,'\n');
  rows++;
 }
fin.close();
fin.clear();
fin.open(fileName);
fin.getline(buf,100,'\n'); // читаем первую строку с названиями столбцов

cout<<"Vsego "<<rows<<" strok\n";
price = new long[rows];

for(i=0;i<rows;i++)
 {
  fin.getline(buf,100,'\n');
  p = strtok(buf,";"); //получаем дату
  p = strtok(NULL,";"); // получаем время
  p = strtok(NULL,";"); // получаем цену
  price[i] = atoi(p);  // конвертим и пишем в массив
 }

// для теста распечатаем цену из 39-й и 5-й строчки
cout<<price[40]<<endl;
cout<<price[4]<<endl;

delete[] price;
fin.close();

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 30.04.2009, 17:20   #19
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

И вновь огромное спасибо, Сазари!
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 30.04.2009, 17:22   #20
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

А conio.h зачем вообще добавляется? Вроде все функции, которые были использованы существуют в остальных указанных библиотеках
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Учебники - Создание динамических web-страниц Salomon Свободное общение 2 23.04.2009 18:25
Процедуры для динамических объектов Fruit Общие вопросы Delphi 8 30.12.2008 21:10
сцепить несколько динамических значений StasSv Microsoft Office Excel 0 22.10.2008 12:20
Как работать с файлами с помощью динамических массивов Герыч Общие вопросы Delphi 4 10.01.2008 12:22
Создание и использование динамических структур Oksana11 Помощь студентам 5 09.01.2008 19:39