IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Готовая лаба! Откомментьте пожалуста!, всего лишь откомментить готовоё...
Unsleep
сообщение 15.10.2008, 14:38
Сообщение #1


Школьник
*

Группа: Продвинутые
Сообщений: 13
Регистрация: 4.6.2008
Город: Красноярск
Учебное заведение: СФУ



Вызвался откомментить, и только получив работу понял что я этого сделать не могу. Помогите пожалуйста, сделайте комментарии если не к каждой строке то к самым важным!

Вообщем, вот самое условие!

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

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

#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstdlib>
#include <vector>
using namespace std;
float sq(float x){return x*=x;}
bool f1 (float x){//не более 3х значащих цифр в дробнйо части
if (*x*1000-(int)*x-1000)) return 0;
else return 1;
}
bool f2(float x){ //нечетное ли число
if((int)x%2) return 0;
else return 1;
}
void main(){
ifstream in("n.txt");//читаем из файла в поток
vector<float> v;
float x;
while(in>>x,!in.eof())//добавляем числа в вектор
v.push_back(x);
copy(v.begin(),v.end(),ostream_iterator<float>(cout," "));//выводим на экран
cout<<endl;
vector<float>::iterator i=v.begin();
int cel=0;
for(i=v.begin(); i!=v.end()(IMG:style_emoticons/default/wink.gif){//удаляем, если дробная часть >3х символов
cout<<(*i*1000)-(long)(*i*1000)<<endl;
if(f1(*i)) v.erase(i);
else ++i;
}
copy(v.begin(),v.end(),ostream_iterator<float>(cout," "));
cout<<"ok2"<<endl;
vector<float>::iterator s=v.begin();
for(s=v.begin(); s!=v.end();++s)
{
if(f2(*s)) {v.insert(s,sq(*s)); ++s;}

}
copy(v.begin(),v.end(),ostream_iterator<float>(cout," "));

}

Как сказано в условии если в дробной части более 3х цифр, то удалить из вектора все эти элементы - для этого написана специальная логическая функция, которая шла перед мейном. принцип был такой умножаем число на тыщу и отнимаем целую часть, умноженную на тыщу. но у с++ есть такая забавная фишка. то есть когда число большое (знаков после запятой много) он верно домножает на 1000, верно выделяет целую часть и домножает на тыщу... но когда отнимает показывает совершенно не то, мудрые люди говорили, что надо переписать эту функцию без вычитания, раз он на нем лажает .
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Inspektor
сообщение 15.10.2008, 17:21
Сообщение #2


Аспирант
***

Группа: Активисты
Сообщений: 384
Регистрация: 11.6.2008
Город: Крыжополь
Учебное заведение: БГТУ
Вы: студент



Цитата
Вызвался откомментить, и только получив работу понял что я этого сделать не могу. Помогите пожалуйста, сделайте комментарии если не к каждой строке то к самым важным!

Комментарии должен писать автор кода, даже если религия ему этого не позволяет. Комментить чужой код при живом авторе- это извращение.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 15.10.2008, 18:44
Сообщение #3


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Функция f1 работать не должна вообще (IMG:style_emoticons/default/smile.gif)
Выгляднть она должна хотя бы так:
Код
bool f1 (double x)
{
    if ((x*1000-(int)(x*1000))==0)
        return true;
    else
        return false;
}

Комментить все - это скучно и долго. Если что-то непонятно, то можете написать сюда более конкретный вопрос (IMG:style_emoticons/default/smile.gif). А так, например, в том же Страуструпе это все объясняется.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 29.5.2025, 18:23

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru