| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Массив |
| Автор: Georgiy 26.11.2006, 22:38 |
| В C++ Builder ввожу вещественное число с клавиатуры в код с циклом cout<<Rus("Введите предел ")<<endl; cin>>N; for(int i=1;i<=N;i++){ cout<<Rus("Введите число ")<<endl; cin>>sdelka[i]; cout<<Rus("Вот число ")<<sdelka[i];} вещественное число показывается первое и то целое ,и цикл запускается самотёком ,и показывает самые разные числа. Подскажите пожалуйста как быть. Почти полный код в подфоруме C++ Builder под автором Georgiy. |
| Автор: vinter 26.11.2006, 22:44 |
| покажи как у тебя переменная\массив объявлены.. кстати не забыл что в С, индексы с нуля начинаются?? |
| Автор: Xenon 26.11.2006, 22:47 | ||||
У тебя, для начала, в цикле
Ты за пределы массива выходишь. Нужно
Ибо в С++ массива индексируются с нуля. И где тот самый массив sdelka? Где ты выделяешь под его память? PS. И пользуйся тегами ! Читай правила сверху! |
| Автор: ip127001 27.11.2006, 14:42 |
| 100% массив int вот он и округляет не явно смени int на double,float |
| Автор: Georgiy 27.11.2006, 22:52 |
| Решил запрограммировать простенькую формулу,а упёрса лбом в стену не хочет работать прога и всё.Вот полный исходник по формулам: TWR=E(1-f*(-сделка/наибольший проигрыш):G=TWR*(1/количество сделок); #pragma hdrstop #pragma argsused //--------------------------------------------------------------------------- #include <iostream> #include <conio> #include <windows> #include <math> using namespace std; //----------------------------------------------------------------------------- char* Rus (const char* text); //---------------------------------- class TWR{ int N;//Количество сделок double sdelka[];//Массив для сделок double f;//Оптимальное f; double temp; double twr_f; double twr; double Max_Loss;//Наибольший проигрыш public: TWR();//Конструктор с кол-ом сделок void set_sdelka();//Заполнение массива сделками void set_twr();//Рассчёт TWR //---------------------------------- TWR::TWR(){ cout<<Rus("Работает конструктор")<<endl; temp1=0.0; twr_f=1; f=0.01; twr=0.0; cout<<Rus("Ввести наибольший проигрыш =")<<endl; cin>>Max_Loss; cout<<Rus("Ввести количество сделок =")<<endl; cin>>N;} //---------------------------------- void TWR::set_sdelka(){ //Инициализация массива сделок; for(int i=0,int j=1;i=N;i++,j++)//j всего лишь номер сделки; {cout<<Rus("ввести сделку ")<<j<<" ="; cin>>temp; sdelka[i]=temp;}//Напрямую cin>>sdelka[i] также не получается; } void TWR::set_twr(){ while(f<=1){ for(int i=0;i<N;i++) {twr_f*=(1-f*(-sdelka[i]/Max_Loss));}//Нахождение twr ////первого оптим. f; if(twr>twr_f){ cout<<"TWR = "<<twr<<endl; break;} f+=0.01; twr=twr_f; } double G; G=pow(twr,(1/N));//Вывод среднего геометрического cout<<Rus("Среднее геометрическое G= "<<G<<endl;} int main(int argc, char* argv[]) { TWR ob1; ob1.set_sdelka(); ob1.set_twr(); getch(); return 0; } char bufRus[256]; char* Rus(const char*text) { CharToOem (text,bufRus); return bufRus; } //--------------------------------------------------------------------------- |
| Автор: Voldemar2004 27.11.2006, 22:56 |
| Georgiy, научись выделять код цветом! Читать неприятно. Нажми на бокс "Код" выбери язык (С++) и вставь в него свой исходник. |
| Автор: Georgiy 27.11.2006, 22:59 | ||
Спасибо за подсказку |
| Автор: witex 28.11.2006, 02:08 | ||||||
а чё цикл бесконечный? У тебя вместо уравнения присваивание стоит! Тут точно цикл бесконечный! А посколько массив ещё не определён по размеру, о он просто что висит в памяти! то и кидает тебе! А на счёт дробуй! то бывает по разнуому принимает! надо черз запятую писать, а бывает через дробь! так пробуй! а цикл тогда так
Лудше создай динамический массив, чем не определённой длинны. Тем более его можно без константы создать!
Меньше проблем сразу будет! |
| Автор: Voldemar2004 28.11.2006, 13:07 | ||
|
| Автор: Georgiy 28.11.2006, 19:50 |
| Извините за не точности, а вобщем сам смысл в самом массиве.Набирал код наспех.А динамический массив создавал таже петрушка. |
| Автор: Georgiy 28.11.2006, 23:12 | ||
| Отладил код с выделением динамической памяти,всё равно вместо сделок ставит 0,если перед последующей сделкой ввести вещественное число и запускает самовольно. Вот код:
|