Laboratoria nr 14 program nr 1

Pliki tekstowe i binarne. Operacje na plikach tekstowych.

Przyjmijmy, że jest dostępny plik tekstowy txt np. example.txt do którego, z procesu pomiarowego napięcia, co 10 minut poprzez Wi-fi zapisywane są dane pomiarowe. Przykładowa zawartość tego pliku została pokazana poniżej.

example.txt

12.3

12.4

12.3

11.98

11.93

12.3

12.5

12.5

Należy napisać program który odczyta zawartość podanego pliku, wyświetli wyniki pomiarów napięcia na standardowe wyjście konsoli oraz obliczy i poda użytkownikowi wartość średnią napięcia (wartość średnia napięcia ma być obliczana za pomocą funkcji). Plik pomiarowy może zawierać dowolną ilość zarejestrowanych wartości napięć.

Szkielet przykładowej aplikacji został umieszony poniżej. Szkielet ten zawiera elementy które należy odpowiednio uzupełnić. Oczywiście można zaproponować własne, oryginalne rozwiązania.

#include "stdafx.h"

/**
	@note :: Prosze zapoznac sie z nizej podanymi bibliotekami
*/
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>

using namespace std;

/**
	Prototyp funkcji do obliczenia sredniej z pomiarow
*/
double sampleMean(???, ???, ... ???);

/**
	Program C/C++ demonstrujacy mozliwosc pobierania danych z pliku
	w raz z dodatkowym przetwarzaniem tych danych.Przetwarzanie polega
	na obliczeniu wartosci sredniej z pomiarow zapisanych w pobranym pliku.

	@author Marcin Mironczuk
*/
int main()
{
	// Zmienna tymczasowa do przechowywania odczytanej lini z pliku
	string line;

	// Uchwyt do pliku
	ifstream myfile;
	// Otworzenie pliku
	myfile.METODA_DO_OTWERANIA_PLIKU(???);
  
	// Wykonanie zadanego algorytmu do przetwarzania zawartosci pliku
	if (myfile.is_open()) {
		
		double suma = 0;
		int i = 0;

		// Przejzenie zawartosci pliku w petli
		while (myfile.METODA_NADZORUJACA_CZY_OSIAGNIETO_KONIEC_PLIKU()) {
			// Pobranie lini danych
			getline(???,line);
			
			// Pierwszy sposob rzutowania C++
			std::istringstream stm;
			stm.str(line);
			
			// Zmienna do ktorej bedzie przypisywana wartosc z rzutowania 
			double d1;
			stm >> ???;

			// Drugi sposob rzutowania specyficzny dla C
			// Zmienna do ktorej bedzie przypisywana wartosc z rzutowania 
			double d2;
			d2 = FUNCKJA_C_SLUZACA_DO_RZUTOWANIA(line.METODA_DO_PRZEKSZTALCENIA_LANCUCHA_DO_TABLICY_W_STYLU_C());
					
			// Wyswetlenie wartosci
			cout << ??? << endl;
			cout << ??? << endl;
			cout << ??? << endl;

			// Sumowanie zapisanych wartosci
			???;
			i++;
		}
		
		// Wykorzystanie funkcji do obliczenia sredniej z pomiarow ktorych wartosci zostaly zapisane
		// w pliku i wyzej przetworzone
		cout << "Srednia z zarejestrowanych pomiarow wynosi: " << ??? << endl;

		// Zamkniecie pliku
		myfile.close();
	} else {
		// Informacja uzytkownika w przypadku gdy nie udalo sie otworzyc pliku
		cout << "Proba otworzenia pliku nie powiodla sie";
	}

	cin.get();

	return 0;
}

double sampleMean(???) {
	// Algorytm do obliczania sredniej
}

Skomentuj ten wpis