Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- //ANALIZATOR
- int main(char argc, char* argv[]) {
- //ciag znakow przechowjacy nazwe sklepu, dla ktorego ma byc przeprowadzona analiza
- char* shop_name;
- //zmienne z wyniakmi analizy
- float tax = 0;
- float loss = 0;
- float profit = 0;
- if (argc == 2) {
- //odczytanie nazwy sklepu
- shop_name = argv[1];
- }
- else {
- //nazwa sklepu nie zostala podane
- printf("Podaj nazwe sklepu, dla ktorego chcesz przeprowadzic analize!");
- return 0;
- }
- //strumien obslugujacy plik z lista zyskow i strat
- FILE* data_file;
- //nazwa pliku do otwarcia
- char file_name[256];
- //przygotowanie nazwy pliku do otwarcia
- sprintf_s(file_name, "%s.csv", shop_name);
- //otwarcie pliku z lista zyskow i strat
- fopen_s(&data_file, file_name, "r");
- if (data_file == NULL) {
- //zostala podana nieprawidlowa nazwa sklepu
- printf("Dla tego sklepu nie istnieje lista zyskow i strat!");
- return 0;
- }
- //bufor linii
- char line[256];
- //odczytywanie pliku linia po linii
- while (fgets(line, sizeof(line), data_file)) {
- //licznik przechowujacy indeks ostatniego przecinka
- int last = 0;
- //flaga zatrzymania petli
- int stop = 0;
- //informacja o tym, ktora z wartosci jest odczytywana
- int val = 0;
- //petla odczytujaca linie znak po znaku
- for (int i = 0; line[i] < 256; i++) {
- //jesli trafiono na przecinek
- if (line[i] == ',' || line[i] == '\n') {
- //bufor aktualnie odczytywanej liczby
- char number[256];
- //odczytanie wszystkich cyfr od ostatniego przecinka do aktualnego
- for (int j = last; j < i; j++) {
- number[j - last] = line[j];
- }
- //zakonczenie ciagu cyfer znakiem konca
- number[i] = '\0';
- //ustawienie indeksu na znak po przecinku
- last = i + 1;
- if (val == 0) {
- //odczytano zysk
- profit += (float)atof(number);
- }
- else if (val == 1) {
- //odczytano strate
- loss += (float)atof(number);
- }
- else {
- //odczytano podatek
- tax += (float)atof(number);
- }
- val++;
- //jesli natrafiono na koniec
- if (line[i] == '\n') {
- //last = i + 2;
- //ustawienie flagi konca na 1
- stop = 1;
- }
- }
- //jesli natrafiono na koniec linii, to zatrzymanie petli
- if (stop == 1) {
- break;
- }
- }
- }
- //zamkniecie pliku z lista zyskow i strat
- fclose(data_file);
- //strumien obslugujacy plik z wynikami analizy
- FILE* return_data_file;
- //nazwa pliku z wynikami analizy
- char return_file_name[256];
- //przygotowanie nazwy pliku z wynikami analizy
- sprintf_s(return_file_name, "analyzed_%s.csv", shop_name);
- //otwarcie pliku
- fopen_s(&return_data_file, return_file_name, "w");
- //zapisanie w pliku wynikow analizy
- fprintf_s(return_data_file, "zyski,straty,podatki\n%.2f,%.2f,%.2f\n", profit, loss, tax);
- //zamkniecie pliku
- fclose(return_data_file);
- printf("Analiza zakonczona powodzeniem!");
- return 0;
- }
Add Comment
Please, Sign In to add comment