Untitled
unknown
plain_text
3 years ago
3.6 kB
5
Indexable
#define _CRT_SECURE_NO_WARNINGS
#włącz <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 40 //ilosc litr w celu wydania i nazwiska oraz długosc napisu
naucz studenta
{
int nr_ID;
char nazwisko[MAX];
char imie[MAX];
podwójne punkty;
};
struktura wynik
{
student* wsk;
wewn. rozmiar;
};
int pierwszy(PLIK* plik)
{
licznik licznika = 0;
pomoc studenta;
while (!feof(plik))
{
licznik++;
fscanf(plik, "%d %s %s %lf", &pomoc.nr_ID, &pomoc.nazwisko, &pomoc.imie, &pomoc.punkty);
}
przewiń(plik);
powrót licznika;
}
wynik druga(char nazwa[])
{
PLIK* plik;
student* tablica;
wynik dane;
if ((plik = fopen(nazwa, "r")) == NULL)
{
printf("Problem z odczytem pliku...\n");
wyjście(0);
}
w przeciwnym razie
{
printf("Plik stworzony istniejący!\n");
napis;
napis = fgetc(plik);
if (feof(plik))
{
printf("Plik pusty!\n");
fzamknij(plik);
wyjście(0);
}
w przeciwnym razie
przewiń(plik);
}
int rozmiar = pierwsza(plik);
printf("Rozmiar tablicy do: %d\n", rozmiar);
if (tablica = (student*)malloc(rozmiar * sizeof(student*)))
{
printf("\nAlokacja pamieci udanej\n");
przewiń(plik);
for (int i = 0; !feof(plik) && i < rozmiar; i++)
{
fscanf(plik, "%d %s %s %lf", &tablica[i].nr_ID, &tablica[i].nazwisko, &tablica[i].imie, &tablica[i].punkty);
}
}
w przeciwnym razie
{
printf("\nBrak pamieci na alokacje tablicy\n");
wyjście(0);
}
dane.wsk = tablica;
dane.rozmiar = rozmiar;
fzamknij(plik);
dane zwrotne;
}
void trzecia(student* tablica, int rozmiar)
{
printf("\nZawartosc tablicy: \n");
for (int i = 0; i < rozmiar; i++)
{
printf("%d %s %s %lf\n", tablica[i].nr_ID, tablica[i].nazwisko, tablica[i].imie, tablica[i].punkty);
}
}
wynik czwarta(student* tablica1, int rozmiar)
{
int id, test = 0; //0 do numeru ID hamulca
wynik tablica2;
tablica2.rozmiar = rozmiar - 1;
if (tablica2.wsk = (student*)malloc(tablica2.rozmiar * sizeof(student*)))
printf("\nAlokacja pamieci udanej!\n");
w przeciwnym razie
{
printf("\nBrak pamieci na alokacje tablicy!\n");
wyjście(0);
}
podczas (test == 0)
{
printf("\nPodaj nr ID studenta, ktory ma zostac usuniety: ");
while (scanf_s("%d", &id) != 1 || getchar() != '\n')
{
printf("\nBledne dane, uzupełnij ponownie: ");
while (getchar() != '\n');
}
for (int i = 0; i < rozmiar; i++)
{
if (id == tablica1[i].nr_ID)
test++; //jak zawsze raz znajdzie numer z listy
}
jeśli (test != 0)
przerwanie; //znalazł więc koniec
}
for (int i = 0, j = 0; i < rozmiar; i++)
{
if (id != tablica1[i].nr_ID)
{
tablica2.wsk[j].nr_ID = tablica1[i].nr_ID;
strcpy(tablica2.wsk[j].nazwisko, tablica1[i].nazwisko);
strcpy(tablica2.wsk[j].imie, tablica1[i].imie);
tablica2.wsk[j].punkty = tablica1[i].punkty;
j++;
}
}
powrót tablica2;
}
int main()
{
wynik dane, dane2;
PLIK* plik;
char nazwa[MAX] = "test.txt";
char zapis[MAX];
printf("Laboratorium poziom 1, Autor: Adam Abramczyk.\n\n");
dane = druga(nazwa);
trzecia(dane.wsk, dane.rozmiar);
dane2 = czwarta(dane.wsk, dane.rozmiar);
printf("\nPodaj nazwę pliku do zapisu: ");
scanf_s("%s", &zapis, MAX);
if ((plik = fopen(zapis, "w")) == NULL)
{
printf("Problem z obecnościm pliku...\n");
wyjście(0);
}
printf("\nZawartośc po usunieciu jednej osoby: \n");
trzecia(dane2.wsk, dane2.rozmiar);
for (int i = 0; i < dane2.rozmiar; i++)
{
fprintf(plik, "%d %s %s %lf\n", dane2.wsk[i].nr_ID, dane2.wsk[i].nazwisko, dane2.wsk[i].imie, dane2.wsk[i] .punkty);
}
fzamknij(plik);
wolny(dane.wsk);
wolny(dane2.wsk);
printf("\n\nKoniec programu.\n");
zwróć 0;
}Editor is loading...