• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapisanie dużej liczby z pliku.

Object Storage Arubacloud
+1 głos
273 wizyt
pytanie zadane 22 grudnia 2020 w C i C++ przez Maciek Pestka Nowicjusz (220 p.)

Próbuje wczytać z pliku dużą liczbę, ale wyświetla mi jedynie 6-cyfr, nieważnie czy używam double, float i innych typów, ten sam efekt.

#include <iostream>
#include <fstream>

using namespace std;

long double	  ** dane;
long double a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
string s;
int main()
{

    ifstream odczyt("log.txt");
    string line;
    int numer_linii=0;
    while(getline(odczyt,line)){
        numer_linii++;
        cout<<numer_linii<<endl;
    }

    dane = new long double * [numer_linii];
    for(int i=0; i<numer_linii; i++){
        dane[i]=new long double [2];
    }
    odczyt.clear();
    odczyt.seekg(0);

    while(odczyt>>a1>>a2>>a3>>a4>>a5>>a6>>a7>>a8>>a9>>a10){
        cout<<a1<<" "<<a10<<endl;
    }


	return 0;
}

Plik wyjściowy:

       0   -88736.542    275.98334   -88460.559     191.0604    19403.072    191865.02          300    18450.185          300 
       1   -88736.026    280.72122   -88455.304    194.34039    19453.575    191865.02     299.5099    18473.358     298.1845 
       2   -88734.625    295.08589    -88439.54     204.2849    19613.927    191865.02    298.04231    18550.887    296.25412 
       3   -88732.344    319.08803   -88413.256    220.90133    19882.004    191865.02    295.60955    18680.612    294.21227 
       4   -88729.183    352.74249   -88376.441    244.19997    20260.809    191865.02    292.23215    18865.492     291.9984 
       5   -88725.144    396.06857   -88329.076    274.19417    20747.721    191865.02    287.93862    19102.856    289.49798 
       6   -88720.227    449.09077   -88271.136    310.90088    21343.971    191865.02    282.76517    19393.868    286.56133 
       7   -88714.432    511.83931   -88202.593    354.34105    22048.886    191865.02     276.7554     19737.77    283.02148 
       8   -88707.761     584.3515   -88123.409    404.54048    22863.433    191865.02    269.95988    20135.422    278.72699 
       9   -88700.216    666.67281   -88033.544    461.53068     23786.82    191865.02    262.43569    20585.889    273.57396 

 

komentarz 23 grudnia 2020 przez VBService Ekspert (254,480 p.)

Spróbuj z long long. 
Is there any need of “long” data type in C and C++?

#include <bits/stdc++.h> 
using namespace std; 
  
int main()  
{  
    cout << "Size of int = "<< sizeof(int) << endl;  
    cout << "Size of long = " << sizeof(long) << endl;  
    cout << "Size of long long = " << sizeof(long long);  

 

komentarz 23 grudnia 2020 przez Maciek Pestka Nowicjusz (220 p.)
Próbowałem z long nawet z long long szybciej, wtedy w ogóle wartości nie są się pojawić.

2 odpowiedzi

+1 głos
odpowiedź 23 grudnia 2020 przez Oscar Nałogowiec (29,320 p.)
wybrane 23 grudnia 2020 przez Maciek Pestka
 
Najlepsza

std::cout << std::setprecision(n)

komentarz 23 grudnia 2020 przez Maciek Pestka Nowicjusz (220 p.)
Dziękuje, ta metoda mi pomogła i jest krótka.
komentarz 23 grudnia 2020 przez Maciek Pestka Nowicjusz (220 p.)
Tylko musiałem dodać #include <iomanip> by działała.
+1 głos
odpowiedź 23 grudnia 2020 przez TOM_CPP Pasjonat (22,640 p.)

Spróbuj tak:

#include <iomanip>
#include <fstream>
#include <vector>
#include <iterator>

using namespace std;

int main()
{
    ifstream file {"log.txt"};
    vector<double> data { istream_iterator<double>{file} , {} };

    int counter {0};
    for( auto element : data )
    {
        if( counter++%10 == 0 ) cout << endl << setw(3) << counter/10;
        else cout << fixed << setw(15) << setprecision(5) << element;
    }
}

https://wandbox.org/permlink/L4UdfAvqQykmXBtu

komentarz 23 grudnia 2020 przez Maciek Pestka Nowicjusz (220 p.)
Dziękuje za pomoc, także ta metoda działa (sprawdziłem), ta metoda jest trochę długa jak dla mnie.

Dobrze nie rozumiem vectorów w c++ i chciałbym uniknąć ich używanie.

Podobne pytania

+1 głos
3 odpowiedzi 504 wizyt
pytanie zadane 17 lutego 2023 w Python przez blaccli Nowicjusz (180 p.)
+1 głos
0 odpowiedzi 295 wizyt
0 głosów
1 odpowiedź 103 wizyt
pytanie zadane 5 czerwca 2019 w C# przez Cureit Nowicjusz (140 p.)

92,632 zapytań

141,499 odpowiedzi

319,877 komentarzy

62,011 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...