2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Лаба не работает, хоть и сделана без ошибок!
Сообщение21.10.2008, 21:25 
Помогите пожалуйста, лаба сделана без ошибок, компилятор их не выдает, но млин при запуске выдает просто черный экран и всё. Что не так? Скажи пожалуйста!


Тема: Последовательный контейнер 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 (double x)
{
   if ((x*1000-(int)(x*1000))==0)
       return true;
   else
       return false;
}
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();){
   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," "));
   
}

 
 
 
 
Сообщение22.10.2008, 15:42 
Аватара пользователя
Что-то у меня это вообще не компилится на MinGW версии 3.4.2 ... :( Какой компилятор Вы использовали?

 
 
 
 
Сообщение24.10.2008, 17:29 
Аватара пользователя
Sanyok писал(а):
Что-то у меня это вообще не компилится на MinGW версии 3.4.2 ... Sad Какой компилятор Вы использовали?

Скорее всего, чтобы это скомпилировалось в MinGW необходимо добавить
Код:
#include <iterator>


Unsleep писал(а):
Помогите пожалуйста, лаба сделана без ошибок, компилятор их не выдает, но млин при запуске выдает просто черный экран и всё. Что не так? Скажи пожалуйста!

У меня ваша программа что-то выводит:
Код:
1.1 1.2 0 10 20
0
0
0
0
0
1.1 1.2 ok2
1.1 1.2

На файле n.txt вида
Код:
1.1 1.2 0.0 10 20

Убедитесь, что программа находит такой файл, иначе на самом деле ничего выводиться не будет.

 
 
 
 Лаб.работа (проблема с выводом)
Сообщение05.11.2008, 18:55 
Помогите пожалуйста, написал лабораторную, компилятор не выдает ни одной ошибки, код по заданному заданию написано совершенно правильно. НО, при запуске программа выдает лишь строчку "vot oni:" (ниже в см. коде) и всё! Никого ничего больше!!!

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

Код:
#include<iostream>
#include<vector>
#include<fstream>
#include<cmath>
using namespace std;
int function(double n)
{
   int temp;
if((n/2)-(int)(n/2)==0)

   temp=1;
else temp=0;
return temp;
}
void main()
{
   double temp;
int j,k;
vector <double> v;
vector <double>::iterator i;
fstream f;
f.open("1.txt",ios::in);
cout<<"vot oni:"<<endl;
while(!f.eof())
{    f>>temp;
     if((fabs(temp)-fabs((int)(temp)))!=0)
        v.push_back(temp);
}
for(i=v.begin();i!=v.end();i++)
    cout<<*i<<" ";
cout<<endl;
f.close();

do
{k=0;
for(i=v.begin(),j=0;i!=v.end();i++,j++)
     if((fabs(v[j]*1000)-fabs((int)(v[j]*1000)))>0)
    {    v.erase(i);
        k++;
         break;
    }
}
while(k==1);
for(i=v.begin();i!=v.end();i++)
    cout<<*i<<" ";
cout<<endl;

j=0;
i=v.begin();
for(;i!=v.end();i++,j++)
   if(function(fabs((int)(v[j])))==0)
   {    v.insert(i,v[j]*v[j]);
        k++;
       j++;
       i=v.begin()+j;
   }
for(i=v.begin();i!=v.end();i++)
    cout<<*i<<" ";
cout<<endl;
}




P.S. В файле 1.txt все элементы (числа) правильно расположены и написаны.

 
 
 
 
Сообщение06.11.2008, 09:17 
Аватара пользователя
 !  PAV:
Строгое замечание за дублирование. Темы объединены.

 
 
 
 
Сообщение06.11.2008, 16:40 
Кто сказал, что код правильный?
Основной цикл обработки написан ошибочно.
Попробуйте так:
функция main()
{
double temp;
int j,k;
vector <double> v;
vector <double>::iterator i;
fstream f;
f.open("1.txt",ios::in);
cout<<"vot oni:"<<endl;
while(!f.eof())
{ f>>temp;
if((fabs(temp)-fabs((int)(temp)))!=0)
v.push_back(temp);
}
for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;
f.close();

//исправлен
k=0;
for(i=v.begin(),j=0;i!=v.end();i++,j++)
if((fabs(v[j]*1000)-(int)fabs((v[j]*1000)))>0)
v.erase(i);



for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;

j=0;
i=v.begin();
for(;i!=v.end();i++,j++)
if(function(fabs((int)(v[j])))==0)
{ v.insert(i,v[j]*v[j]);
k++;
j++;
i=v.begin()+j;
}
for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;
}
У меня работает.

 
 
 
 
Сообщение08.11.2008, 12:15 
Lotos писал(а):
Кто сказал, что код правильный?
Основной цикл обработки написан ошибочно.
Попробуйте так:
функция main()
{
double temp;
int j,k;
vector <double> v;
vector <double>::iterator i;
fstream f;
f.open("1.txt",ios::in);
cout<<"vot oni:"<<endl;
while(!f.eof())
{ f>>temp;
if((fabs(temp)-fabs((int)(temp)))!=0)
v.push_back(temp);
}
for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;
f.close();

//исправлен
k=0;
for(i=v.begin(),j=0;i!=v.end();i++,j++)
if((fabs(v[j]*1000)-(int)fabs((v[j]*1000)))>0)
v.erase(i);



for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;

j=0;
i=v.begin();
for(;i!=v.end();i++,j++)
if(function(fabs((int)(v[j])))==0)
{ v.insert(i,v[j]*v[j]);
k++;
j++;
i=v.begin()+j;
}
for(i=v.begin();i!=v.end();i++)
cout<<*i<<" ";
cout<<endl;
}
У меня работает.


Всё попрежнему :( Можешь весь код выложить? Посмотрел в созданый файл - вроде числа нормально расположены, cкинь какие ты числа указал, ну или вообще содержимое файла 1.txt

 
 
 
 
Сообщение08.11.2008, 15:06 
Текстовый файл имеет вид:
1.2 1.3678 1.4 2.5 1.6 1.7

Весь код я выложила, только подключения убрала у меня среда разработки Builder. :?

Если твоя среда разработки VisualStudio, то в консоли возможен не вывод информации в случае ошибки чтения из файла. Что у тебя в файле (даже стало интересно? :?:

 
 
 
 
Сообщение08.11.2008, 15:28 
Аватара пользователя
Unsleep
а пройти по коду с отладчиком не пробовали?

 
 
 
 
Сообщение08.11.2008, 22:43 
Lotos писал(а):
Текстовый файл имеет вид:
1.2 1.3678 1.4 2.5 1.6 1.7

Весь код я выложила, только подключения убрала у меня среда разработки Builder. :?

Если твоя среда разработки VisualStudio, то в консоли возможен не вывод информации в случае ошибки чтения из файла. Что у тебя в файле (даже стало интересно? :?:


Вообщем я нашел свою проблему. Проблема исчерпана - лабораторная сделана. Всём спасибо =)

 
 
 [ Сообщений: 10 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group