zapętlenie programu ...

0

Witam mam taki problem bo ja sobie już z nim nie radzę w którym miejscu jest powód że mój program się zapętla wiem ,że moja składnia jest paskudna jak przysłowiowa teściowa. ale to dlatego że mam czas na gardle... Z góry dziękuję za pomoc :)

 #include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <cstring>
#include <cmath>
#include <stdlib.h>
#define EXIT_MULTI 2;
using namespace std;


double toDouble(string& var)
{
    double res;
    //char abc=var.str_c();
    if(strcmp(var.c_str(),"F"))
    {
        res=96485.3399;
        return res;
    }
    if(strcmp((var.c_str()),"pi")){
         res=3.1415926536;
        return res;
    }
    if(strcmp((var.c_str()),"c")){
         res=299792458;
        return res;
    }
    if(strcmp((var.c_str()),"G")){
         res=(299792458*pow(10,-11));
        return res;
    }

    istringstream iss(var);
    iss >> res;
    return res;
}

int main(int argc, char *argv[])
{
    fstream plik=argv[1];

    string tmp;
    vector<double> tablica;
    vector<double> a;
    vector<double> b;
    vector<double> roznica;
    int k;
    int i;
    float min;
//    vector<double> tablica2;

    plik.open(argv[1], ios::in | ios::binary );
if(plik.good()){
    while(getline(plik, tmp)){

        tablica.push_back(toDouble(tmp));
        // tablica2.push_back(toDouble(tmp));
    }
    plik.close();
}
else return EXIT_FAILURE;
       // cout << tablica[2];

        //for(int i=0;i<=sizeof(tablica); i++)
        //tablica2[i] = tablica[i] ;
        vector<double> najmniejsz_skladnik;
         vector<double> najmniejsz_skladnik2;
         vector<double> najmniejsza_roznica;

        for (i = 0 ; i<=(tablica.size()-1) ; i++ ){
              for ( k = 0 ; k<=(tablica.size()-1) ; k++ ){
//cout<<k<<endl;
                  double static min=0;
                  min=abs((tablica[i]-tablica[k]));
                  if(min>abs((tablica[i+1]-tablica[k+1]))){
                  min=abs((tablica[i+1]-tablica[k+1]));

                  }

                  //if
                    //cout<<k<<endl;
   if (min==(abs((tablica[i+1]-tablica[k+1]))))
                {


            najmniejsz_skladnik.push_back(tablica[i]);
                  najmniejsz_skladnik2.push_back(tablica[k]);
                  najmniejsza_roznica.push_back(min);
            }

            }
         //   cout<<k<<endl;

}
cout<<""<<endl;
if(najmniejsza_roznica.size()>1){
    for ( int x=0 ; x <= najmniejsza_roznica.size();x++){
        

        if (a[x] > b[x] ){
        cout.precision(3);
        cout << "(";
        cout << a[x];
        cout << b[x];
        cout << ") " ;
cout << "lub ";
        }
        else{ cout.precision(3);
        cout << "(" ;
        cout << b[x] ;
        cout << ",";
        cout << a[x];
        cout << ") ";
cout << "lub ";}

     return EXIT_MULTI;}
    }
if (najmniejsza_roznica.size()==1){
    for(int x=0;x<=najmniejsza_roznica.size();x++){
      

        if(a[x]>b[x]){
        cout.precision(3);
        cout<<"(";
        cout<<a[x];
         cout<<",";
        cout<<b[x];
        cout<<") ";

        }
        else{ cout.precision(3);
        cout<<"(";
        cout<<b[x];
        cout<<",";
        cout<<a[x];
        cout<<") ";
}

     return EXIT_SUCCESS;}
    }

}
0

A rzesz potwora spłodziłeś!! Zobacz samo wczytanie:

while(plik>>ws)
  {
   double v;
   if(!(plik>>v))
     {
      plik.clear();
      string value;
      plik>>value;
      if(value=="F") v=96485.3399;
      else if(value=="pi") v=3.1415926536;
      else if(value=="c") v=299792458;
      else if(value=="G") v=299792458*E-11;
      else return EXIT_FAILURE;
     }
   tablica.push_back(v);
  }

A co dalej próbujesz zrobić to jakiś koszmar. Czy rozumiesz ze masz dwie niezależne zmienne o nazwie min?

0

jak to 2 niezalezne zmienne min? bo mam zrobić zadanie które jest tutaj //weeia.edu.p.lodz.pl/pluginfile.php/24062/mod_resource/content/3/PP%20PD%204.pdf

0

Może skopiuj treść, bo trzeba być na tej Twojej stronce zalogowanym ;)

0

W pewnym pliku tekstowym zapisano liczby. Są to zarówno liczby całkowite jak i
zmiennoprzecinkowe. Zadaniem programu jest odczytanie wszystkich liczb i wyświetlenie dwóch,
między którymi różnica (wartość bezwzględna) jest najmniejsza.

2

A przeczytałeś zadanie? Bo to:

#include <vector>
#include <fstream>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;

int main(int argc,char *argv[])
  {
   fstream file(argc>1?argv[1]:"");
   vector<double> tab;
   copy(istream_iterator<double>(file),istream_iterator<double>(),back_inserter<vector<double> >(tab));
   if(tab.size()>1)
     {
      sort(tab.begin(),tab.end());
      vector<double>::iterator b=tab.begin(),a=b++;
      double Min=*b-*a;
      while(b!=tab.end()) Min=min(Min,*(b++)-*(a++));
      cout<<Min<<endl;
     }
   return 0;
  }
  • wszystko co potrzebujesz.
0

dlaczego ten program nic nie wyświetla?

 #include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <cstring>
#include <cmath>
#include <stdlib.h>
#define EXIT_MULTI 2;
using namespace std;


float toDouble(string& var)
{
    //cout<<var<<endl;
    float res;
    //char abc=var.str_c();
    if((var.compare("F"))==0)
    {
        res=96485.3399;

    }
    if((var.compare("pi"))==0){
         res=3.1415926536;

    }
    if((var.compare("c"))==0){
         res=299792458;

    }
    if(var.compare("G")==0){
         res=(299792458*pow(10,-11));

    }



    res=strtod(var.c_str(), NULL);

   // cout<<res<<endl;
    return res;
}


int main(int argc, char *argv[])
{

fstream plik;
    string tmp;
    vector<double> tablica;
    vector<double> a;
    vector<double> b;
    vector<double> roznica;
    int k;
    int i;
   // float min;
//    vector<double> tablica2;

    plik.open(argv[1], ios::in );
if(plik.good()){
    while(!plik.eof()){
        float kk;
        getline(plik, tmp);
       // scanf(,"%f",&kk);
        //cout<<kk<<endl;
        //cout<<tmp<<endl;
        tablica.push_back(toDouble(tmp));
        //cout<<toDouble(tmp)<<endl;
        // tablica2.push_back(toDouble(tmp));
        }
    plik.close();
}
else return EXIT_FAILURE;
       // cout << tablica[2];

        //for(int i=0;i<=sizeof(tablica); i++)
        //tablica2[i] = tablica[i] ;
        vector<double> najmniejsz_skladnik;
         vector<double> najmniejsz_skladnik2;
         vector<double> najmniejsza_roznica;
         double min;
//for(int e=0; e<tablica.size();e++) cout<<tablica[e]<<endl;
        for (i = 0 ; i<=(tablica.size()) ; i++ ){
              for ( k = 0 ; k<=(tablica.size()) ; k++ ){
                  if (min==(abs((tablica[i]-tablica[k]))))
                {

            najmniejsz_skladnik.push_back(tablica[i]);
                  najmniejsz_skladnik2.push_back(tablica[k]);
                  najmniejsza_roznica.push_back(min);
            }

                    if( tablica[i] == tablica [ k ] ) break ;
               else{
                  //min=abs((tablica[i]-tablica[k]));
                  if(min>abs(tablica[i]-tablica[k])){
                  min=abs((tablica[i+1]-tablica[k+1]));

                  }
               }
                  //if
                    //cout<<k<<endl;


            }
         //   cout<<k<<endl;

}

if((najmniejsza_roznica.size())>1){
    for(int x=0;x<=najmniejsza_roznica.size();x++){
        //double a1;
     //double b1;

        if(a[x]>b[x]){
        cout.precision(3);
        cout<<"(";
        cout<<a[x];
        cout<<b[x];
        cout<<") ";
cout<<"lub ";
        }
        else{ cout.precision(3);
        cout<<"(";
        cout<<b[x];
        cout<<",";
        cout<<a[x];
        cout<<") ";
cout<<"lub ";}

     return EXIT_MULTI;}
    }
if(najmniejsza_roznica.size()==0){
    for(int x=0;x<=najmniejsza_roznica.size();x++){
        //double a1;
     //double b1;

        if(a[x]>b[x]){
        cout.precision(3);
        cout<<"(";
        cout<<a[x];
         cout<<",";
        cout<<b[x];
        cout<<") ";

        }
        else{ cout.precision(3);
        cout<<"(";
        cout<<b[x];
        cout<<",";
        cout<<a[x];
        cout<<") ";
}

     return EXIT_SUCCESS;}
    }


}

1 użytkowników online, w tym zalogowanych: 0, gości: 1