Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Лаба не работает, хоть и сделана без ошибок!

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Лаба не работает, хоть и сделана без ошибок!
Имя
Сообщение << Старые топики   Новые топики >>
Лаба не работает, хоть и сделана без ошибок! - 2008-10-21 22:12:00.370000   
Unsleep

Сообщений: 8
Оценки: 0
Присоединился: 2008-10-15 18:21:39.370000
Помогите пожалуйста, лаба сделана без ошибок, компилятор их не выдает, но млин при запуске выдает просто черный экран и всё. Что не так? Скажи пожалуйста!


Тема: Последовательный контейнер vector. Функции члены: push_back(), insert(), erase().

Прочитать значения вектора чисел с плавающей точкой из текстового файла. Удалить из вектора все элементы, у которых дробная часть содержит больше 3-х значащих цифр. Перед каждым элементом, целая часть которого является нечетным числом, вставить значение его квадрата.


#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; #include &lt;cstdlib&gt; #include &lt;vector&gt; using namespace std; float sq(float x){return x*=x;} bool f1 (double x) { &nbsp;&nbsp; if ((x*1000-(int)(x*1000))==0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true; &nbsp;&nbsp; else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return false; } bool f2(float x){ &nbsp;&nbsp;&nbsp; if((int)x%2) return 0; &nbsp;&nbsp;&nbsp; else return 1; } void main(){ &nbsp;&nbsp;&nbsp; ifstream in("n.txt"); &nbsp;&nbsp;&nbsp; vector&lt;float&gt; v; &nbsp;&nbsp;&nbsp; float x; &nbsp;&nbsp;&nbsp; while(in&gt;&gt;x,!in.eof()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v.push_back(x); &nbsp;&nbsp;&nbsp; copy(v.begin(),v.end(),ostream_iterator&lt;float&gt;(cout," ")); &nbsp;&nbsp;&nbsp; cout&lt;&lt;endl; &nbsp;&nbsp;&nbsp; vector&lt;float&gt;::iterator i=v.begin(); &nbsp;&nbsp;&nbsp; int cel=0; &nbsp;&nbsp;&nbsp; for(i=v.begin(); i!=v.end();){ &nbsp;&nbsp; cout&lt;&lt;(*i*1000)-(long)(*i*1000)&lt;&lt;endl; &nbsp;&nbsp;&nbsp; if(f1(*i)) v.erase(i); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else ++i; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; copy(v.begin(),v.end(),ostream_iterator&lt;float&gt;(cout," ")); &nbsp;&nbsp;&nbsp; cout&lt;&lt;"ok2"&lt;&lt;endl; &nbsp;&nbsp;&nbsp; vector&lt;float&gt;::iterator s=v.begin(); &nbsp;&nbsp; for(s=v.begin(); s!=v.end();++s) &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp; if(f2(*s)) {v.insert(s,sq(*s)); ++s;} &nbsp;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; copy(v.begin(),v.end(),ostream_iterator&lt;float&gt;(cout," ")); &nbsp;&nbsp;&nbsp; }
Post #: 1
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-10-22 00:58:58.810000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Даже не читая задания скажу, что через std::vector<float> ты ничего не сделаешь. Почему? Я уже писал - смотри формат чисел с плавающей точкой. Для таких чисел недопустимы точные сравнения ( 0.1 == (float)a ).

Тебе нужно читать числа, как слова (строки), и проверять, стоит ли на 4-м справа месте точка. Если да - то число оставлять =). Так же проверить, есть ли вообще дробная часть у числа. std::vector<string> в помощь.
Post #: 2
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-05 20:05:01.146666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Почему? Я уже писал - смотри формат чисел с плавающей точкой. Для таких чисел недопустимы точные сравнения ( 0.1 == (float)a ).


хм. а умножить число на 1000 и сравнить антье числа с самим числом?
Post #: 3
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-06 00:36:08.080000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Не прокатит. Погугли на тему: почему нельзя сравнивать числа с плавающей точкой.
Post #: 4
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-06 17:26:31.823333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Не прокатит. Погугли на тему: почему нельзя сравнивать числа с плавающей точкой.


извини, но тебя в детстве головой не били?
cout &lt;&lt; (hasFraction(1., 0) ? "true" : "false") &lt;&lt; endl;&nbsp;&nbsp;&nbsp;&nbsp; // false cout &lt;&lt; (hasFraction(1.2, 0) ? "true" : "false") &lt;&lt; endl;&nbsp;&nbsp; // true cout &lt;&lt; (hasFraction(1.2, 1) ? "true" : "false") &lt;&lt; endl; &nbsp; // false cout &lt;&lt; (hasFraction(1.23, 1) ? "true" : "false") &lt;&lt; endl; // true
Post #: 5
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-06 17:42:52.636666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Тебя точно били. Ещё раз для тех, кто в танке и часто бился головой - http://www.rsdn.ru/article/alg/float.xml#EZNAC
Post #: 6
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-06 21:11:09.773333   
Archivarius

Сообщений: 164
Оценки: 0
Присоединился: 2008-10-26 00:16:25.630000
Видимо черный экран потому что прога файл найти не может. Попробуй путь явно задать. Например "C:\\n.txt".

Вот здесьvector&lt;float&gt;::iterator s=v.begin();   for(s=v.begin(); s!=v.end();++s)зачем два раза s=v.begin() ?
Post #: 7
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-06 22:42:13.070000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Видимо чёрный экран потому, что сформированный вектор оказывается пустым, и проге нечего выводить ;). Эта тема уже сегодня активно обсуждалась.
Post #: 8
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-07 20:45:19.523333   
Archivarius

Сообщений: 164
Оценки: 0
Присоединился: 2008-10-26 00:16:25.630000
Да не, в Visual C++ скопировал, у меня чёто там выводит. На счет правильности даже не вникал что именно, но что-то есть..


Post #: 9
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-07 21:11:43.680000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Archivarius

Да не, в Visual C++ скопировал, у меня чёто там выводит. На счет правильности даже не вникал что именно, но что-то есть..


тут у нас развлечение: пишем лабу по этому заданию; присоединяйся. ЯП - C++, но ограничения на библиотеки думаю можно снять ;) а, впрочем, на других языках тоже можно
Post #: 10
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-08 01:54:11.836666   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Может после выходных и я присоединюсь. У меня пока фотошоп "горит"…
Post #: 11
RE: Лаба не работает, хоть и сделана без ошибок! - 2008-11-08 19:42:58.280000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: _SaZ_

Может после выходных и я присоединюсь. У меня пока фотошоп "горит"…


жду с нетерпением. реализация парсеров на C++ - очень улекателное занятие,  с интересом понаблюдаю
Post #: 12
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Лаба не работает, хоть и сделана без ошибок!







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.