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

Konwertowanie string z pliku tekstowego na float i liczenie roznicy

Object Storage Arubacloud
+1 głos
207 wizyt
pytanie zadane 7 marca 2021 w C i C++ przez Bulbi Początkujący (250 p.)
Czy jest mozliwe przekonwertowanie z pliku tekstowego wiersze na typ float i wyliczenie roznicy pomiedzy dwoma ostatnimi wierszami ?

50 40 50
60 50 60
70 60 70
80 70 80

W ten sposob dane zapisuja sie do pliku, chce wyliczyc roznice miedzy pierwszym i ostatnim wierszem oraz przed ostatnim i ostatnim Czy jest to w ogole mozliwe ? Jak to mozna zapisac Chodzi mniej wiecej o to : 80-50; 70-40; 80-50;80-70;70-60;80-70

3 odpowiedzi

+1 głos
odpowiedź 7 marca 2021 przez Wiciorny Ekspert (269,790 p.)

Jest możliwe, pytanie tylko co ma to na celu ? 
Różnicę później liczysz normalnie dysponując tak  jakby po prostu wartości były liczbowe od poczatku, bo już masz je przygotowane po konwersji 
https://www.programiz.com/cpp-programming/string-float-conversion

Jest w c++ nawet gotowa funkcja do tego https://www.cplusplus.com/reference/string/stof/

float stof (const string&  str, size_t* idx = 0);
float stof (const wstring& str, size_t* idx = 0);
Convert string to float
Parses str interpreting its content
as a floating-point number
which is returned as a value of type float.

If idx is not a null pointer,
he function also sets the value
of idx to the position of the f
irst character in str after the number.


Wyliczyć średnią możesz na kilka sposobów zaleznie od tego, co ma stanowić różnice, czy pojedyncze wartości czy sumy rekordów, ale to już pewnie wiesz więc zostawiam tobie 

komentarz 8 marca 2021 przez raxonpc Użytkownik (560 p.)
następnym razem wyślij mu link do cppreference.com, a nie do cplusplus -> ta strona jest przestarzała. I tak, wiem - początkujący może mieć problem z cppreference, ale jeżeli się już nauczy, to zostanie mu to na zawsze.
I na litość boską, jak coś jest z biblioteki standardowej, to napisz w kodzie std::
komentarz 8 marca 2021 przez Wiciorny Ekspert (269,790 p.)
, wiesz ja nie piszę na co dzień w cpp - ostatni raz na studiach miałem 3-4 lata temu ;więc też dobrze wiedzieć :)
komentarz 8 marca 2021 przez raxonpc Użytkownik (560 p.)
nic się nie dzieje
+1 głos
odpowiedź 9 marca 2021 przez VBService Ekspert (253,300 p.)
edycja 9 marca 2021 przez VBService

W momencie wczytywania danych z pliku,  w zależności "do jakich" zmiennych wczytujesz, nie musisz danych rzutować (przekonwertowanie) do danego typu, typ określa sama w sobie deklaracja zmiennej np.  smiley

// C
float float_value1, float_value2, float_value3; // Liczby
char char_value1[6], char_value2[6], char_value3[6]; // Tekst

// C++
float float_value1, float_value2, float_value3;; // Liczby
string string_value1, string_value2, string_value3; // Tekst
#include <stdio.h>

int main()
{
    float float_value1, float_value2, float_value3;
    
    printf("Liczby z pliku jako float.\n");
    FILE *file_ = fopen("dane.txt", "r");
    if (file_ != NULL) {
        while (fscanf(file_, "%f %f %f", &float_value1, &float_value2, &float_value3) > 0) {
            printf("%2c %5.2f %2c %5.2f %2c %5.2f %4c %5.2f + %5.2f = %5.2f\n", 
                   32, float_value1, 32, float_value2, 32, float_value3,
                   32, float_value1, float_value3, (float_value1 + float_value3));
        }
    }
    fclose(file_);
    
    printf("\n\n");
    
    char char_value1[6], char_value2[6], char_value3[6], char_value1_3[12];
    
    printf("Liczby z pliku jako string.\n");
    file_ = fopen("dane.txt", "r");
    if (file_ != NULL) {
        while (fscanf(file_, "%s %s %s", char_value1, char_value2, char_value3) > 0) {
            sprintf(char_value1_3, "%s#%s", char_value1, char_value3);
            printf("%2c %s %2c %s %2c %s %4c %s + %s = %s\n", 
                   32, char_value1, 32, char_value2, 32, char_value3,
                   32, char_value1, char_value3, char_value1_3);
        }
    }
    fclose(file_);
    
    return 0;
}
#include <iostream>
#include <iomanip>
#include <fstream>

using namespace std;

int main()
{
    float float_value1, float_value2, float_value3;
    fstream plik;

    cout << "Liczby z pliku jako float.\n";
    plik.open("dane.txt", ios::in);
    if (plik.is_open()) {
       while (plik >> float_value1 >> float_value2 >> float_value3) {
            cout.width(7); cout << fixed << setprecision(2) << float_value1;
            cout.width(7); cout << float_value2;
            cout.width(7); cout << float_value3;
            cout.width(9); cout << float_value1 << " + " << float_value3
                                << " = " << (float_value1 + float_value3) << endl;
        } 
    }
    plik.close();
    
    cout << "\n\n";
    
    string string_value1, string_value2, string_value3;
    
    cout << "Liczby z pliku jako string.\n";
    plik.open("dane.txt", ios::in);
    if (plik.is_open()) {
       while (plik >> string_value1 >> string_value2 >> string_value3) {
            cout.width(7); cout << string_value1;
            cout.width(7); cout << string_value2;
            cout.width(7); cout << string_value3;
            cout.width(9); cout << string_value1 << " + " << string_value3
                                << " = " << (string_value1 + "#" + string_value3) << endl;
       }
    }
    plik.close();

    return 0;
}

 

dane.txt

50.00 40.00 50.00
60.00 50.00 60.00
70.00 60.00 70.00
80.00 70.00 80.00

 

komentarz 11 marca 2021 przez Bulbi Początkujący (250 p.)
Chodzilo o to zeby program odejmowal 80-50 czyli zeby liczyl roznice pomiedzy ostatnia a pierwsza kolumna
0 głosów
odpowiedź 8 marca 2021 przez raxonpc Użytkownik (560 p.)

Podobne pytania

0 głosów
1 odpowiedź 340 wizyt
+1 głos
1 odpowiedź 133 wizyt
pytanie zadane 26 sierpnia 2021 w C# przez Mixteraks Początkujący (360 p.)
+1 głos
1 odpowiedź 279 wizyt
pytanie zadane 13 października 2020 w C# przez bartodziej2137 Nowicjusz (160 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 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!

...