Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Napisać program, który będzie wczytywał słowa z pliku wejściowego, słowa nie są
- uporządkowane alfabetycznie, w jednym wierszu zapisane jest jedno słowo. Program ma
- odrzucić dublety, a w pliku wyjściowym zapisać słowa uporządkowane alfabetycznie.
- Program ma być uruchamiany z linii poleceń z dwoma argumentami, którymi będą
- nazwy odpowiednio pliku wejściowego i wyjściowego.
- */
- //poprawić forme argc argv
- // pozbyć się numer lini ipozbyc sie dubletow
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <conio.h>
- struct Slowo
- {
- char wyraz[30];
- int numer_linij;
- struct Slowo *Nastepny;
- };
- int numer = 1; //zmienna przechowujaca numer lini slowa
- /*funkcja liczaca ile slow jest w pliku tekstowym*/
- int iloscslow(char *argv[])
- {
- FILE *plik = fopen(argv[1], "r");
- int n = 0;
- char bufor[30];
- while (!feof(plik))
- {
- fscanf(plik, "%s", &bufor);
- n++;
- }
- fclose(plik);
- return n;
- }
- /*Funkcja pobierajaca pojedyncze slowa z pliku tekstowego*/
- struct Slowo *pobierz_dane(char *argv[], FILE *plik)
- {
- struct Slowo * nowy = (struct Slowo *)malloc(sizeof(struct Slowo));
- fscanf(plik, "%s", &nowy->wyraz);
- nowy->numer_linij = numer;
- nowy->Nastepny = NULL;
- numer++;
- return nowy;
- }
- /*Funkcja wstawiajaca pobrane slowa do listy*/
- struct Slowo *wstaw_do_listy(struct Slowo *lista, struct Slowo *element)
- {
- if (lista == NULL)
- {
- lista = element;
- return lista;
- }
- if (stricmp(element->wyraz, lista->wyraz) < 0)
- {
- element->Nastepny = lista;
- lista = element;
- return lista;
- }
- if (lista->Nastepny == NULL)
- {
- lista->Nastepny = element;
- return lista;
- }
- struct Slowo * glowa = lista;
- while (glowa->Nastepny)
- {
- if ((stricmp(element->wyraz, glowa->wyraz) >= 0) && (stricmp(element->wyraz, glowa->Nastepny->wyraz) <= 0))
- {
- struct Slowo * temp = glowa->Nastepny;
- element->Nastepny = temp;
- glowa->Nastepny = element;
- return lista;
- }
- glowa = glowa->Nastepny;
- }
- glowa->Nastepny = element;
- return lista;
- }
- //void wyswietl_liste(struct Slowo *lista)
- //{
- //
- // while (lista != NULL)
- // {
- // printf("Slowo w linijce %d to %s\n", lista->numer_linij, lista->wyraz);
- //
- // lista = lista->Nastepny;
- // }
- //}
- /*Funkcja zapisujaca do pliku slowa uporzadkowane alfabetycznie wraz z numerem lini w ktorym sie znajduja*/
- void zapisz(struct Slowo* pHead, char *argv[])
- {
- FILE *plik = fopen(argv[2], "w");
- struct Slowo *temp = pHead;
- fprintf(plik, "Ponizej znajduja sie uporzadkowane alfabetycznie slowa z pliku wejsciowego wraz numerem lini w ktorym sie znajduja\n\n");
- while (temp != NULL)
- {
- fprintf(plik, "Slowo: %s, numer linijki w pliku wejsciowym: %d\n", temp->wyraz, temp->numer_linij);
- temp = temp->Nastepny;
- }
- fclose(plik);
- }
- int main(int argc, char *argv[])
- {
- if (argc != 3)
- {
- printf("Blad! Nalezy uruchomic wprowadzajac 2 argumenty: plik wejsciowy, plik wyjsciowy\n\n ");
- system("pause");
- exit(1);
- }
- struct Osoba * pHead = NULL;
- FILE *plik = fopen(argv[1], "r");
- int n = iloscslow(argv);
- while (!feof(plik))
- {
- for (int i = 0; i < n; i++)
- pHead = wstaw_do_listy(pHead, pobierz_dane(argv, plik));
- }
- fclose(plik);
- zapisz(pHead, argv);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement