Witam , mam do napisania program w c++ ,który ma za zadanie pobrać wartość z pliku, przeliczyć je z użyciem funkcji zewnętrznych z metrów na jednostki angielskie i zapisać do pliku kolejnego, w przypadku kiedy plik wsadowy nie istnieje ma być o tym odpowiednia informacja
Niby wiem jak odczytać , zapisać dane z pliku czy też przeliczyć jednostki w c++ ale jak to połączyć w spójną całość ?
A co już masz zrobione ? Dawno w C++ nie programowałem, ale może Cię naprowadzę, bo myśleć jeszcze potrafię
Wyniki dla kolejno:
11113249.395
abcd123
150
<pusto>
brak pliku
Głównie to inspirowałem się kodem z filmików pana Zelenta z kanału pasja informatyki o zapisie i odczycie plików w c++ , tylko nie umiem pobranych danych z pliku zmodyfikować tak aby przeliczyły jednostki a potem zapisały wyniki w drugim pliku
To łap, może coś się nauczysz (napisałem pod Linuxem, ale pod Windows też chyba powinno działać):
#include <iostream>
#include <fstream>
using namespace std;
/* FUNKCJA przeliczająca metry na mile i zwracająca wynik */
double mtomi(double m) {
return m * 0.00062137119223733;
}
/* KONIEC FUNKCJI */
int main()
{
ifstream infile("wsad.txt"); //zainicjowanie pliku tylko do odczytu
if (infile.fail()) //sprawdzenie, czy istnieje
{
//jeżeli nie to wypisanie błędu i zakończenie programu
cerr << "Błąd: Nie znaleziono pliku wsadowego, przerywam!" << endl;
exit(1);
} else if (infile.peek() == EOF) { //sprawdzenie, czy plik jest pusty
cerr << "Błąd: Plik wsadowy istnieje, ale jest pusty, przerywam!" << endl;
exit(1);
}
double m; //zadeklarowanie zmiennej typu precyzyjnego (metry)
infile >> m; //odczyt pliku i podstawienie wartości pod zmienną
cout.precision(10); //dla poprawienia czytelności, przy większych liczbach (wyświetlanie z precyzją do 10)
cout << m << " m.";
infile.close(); //zamknięcie pliku
double miles = mtomi(m); //zainicjowanie funkcji i podstawienie jej wyniku pod zmienną miles (mile)
cout << " to " << miles << " mi." << endl << "(wyniki zapisano w pliku wyniki.txt)" << endl;
ofstream outfile("wyniki.txt", ios::app); //zainicjowanie pliku w trybie do zapisu przyrostowego
outfile << m << ";" << miles << endl; //zapisanie wyników w pliku w postaci metry;mile
outfile.close(); //zamknięcie pliku
return 0;
}
1 polubienie
dziękuje , kod działa , teraz analizując linijkę po linijce nie było to takie trudne