Untitled
unknown
plain_text
3 years ago
3.6 kB
3
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...