Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

Kto pomoże w napisaniu następującego programu ? :)



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Pascal, Delphi, ...
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
MarcinKowal
Gość





PostWysłany: Sro Cze 13, 2018 6:00 am  OP    Temat postu: Kto pomoże w napisaniu następującego programu ? :) Odpowiedz z cytatem Pisownia

W pliku zapamiętujemy rekordy zawierające następujące informacje: nazwisko, imię, datę urodzenia oraz wyniki uzyskane przez sportowców w czterech konkurencjach lekkoatletycznych: bieg na 100 m, skok w dal, skok wzwyż, skok o tyczce. Zaprojektować system aby umożliwiał - dodanie nowego zawodnika, usunięcie zawodnika poprzez sprawdzenie jego imienia, nazwiska oraz daty urodzenia (dzień miesiąc rok, np 13 06 2018).
Program ma wyświetlać następujące informacje:
a) średnią wyników dla wszystkich sportowców w poszczególnych dyscyplinach,
b) sportowca o najlepszym wyniku w poszczególnych konkurencjach,
c) sportowca o najgorszym wyniku w poszczególnych konkurencjach.
Powrót do góry
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Sro Cze 13, 2018 10:54 pm      Temat postu: Odpowiedz z cytatem Pisownia

Napisałeś w dziale o algorytmach, to podpowiem ci w punktach jak taki program, działający z plikiem tekstowym, napisać.
Stwórz sobie plik tekstowy, w którym poszczególne wiersze będą zawierały:
1.Dane personalne,
2. Wyniki zawodów
W tym celu w programie stwórz:
1. Funkcje, która będzie w pętli zapisywała wyniki do pliku,
2. Funkcję, która będzie odczytywała z pliku wszystkie dane do struktury danych w momencie uruchomienia programu,
3. Strukturę danych do przechowywania pobranych danych jednego pracownika (czyli jednego wiersza, inaczej mówiąc rekordu
4. Zadeklaruj sobie Tablicę tych struktur - dla przechowywania w programie wyników wszystkich pracowników
5. Napisz sobie funkcje, które będą robić to, co wymieniłeś w podpunktach
6. Stwórz interfejs do przedstawiania wyników na ekranie.

To jest taki ogólny tok postępowania, jakby ogólny algorytm, co należałoby zrobić.
Jak to zrobić, to zależy od języka, w którym to napiszesz i od tego co potrafisz.
Jeśli jesteś początkujący, to będzie trudno.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
MarcinKowal
Gość





PostWysłany: Czw Cze 14, 2018 9:24 am  OP(?)    Temat postu: Odpowiedz z cytatem Pisownia

a tak może bardziej szczegółowo :) ?
Powrót do góry
MarcinKowal
Gość





PostWysłany: Czw Cze 14, 2018 9:26 am  OP(?)    Temat postu: Odpowiedz z cytatem Pisownia

język c lub c++
Powrót do góry
izaw



Dołączył: 12 Wrz 2008
Posty: 2181
Skąd: Łódź

PostWysłany: Czw Cze 14, 2018 5:15 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ale czego oczekujesz?
Podałeś treść i czekasz na gotowca? To w innym dziale za kasę. Pomoc owszem, ale podaj z czym masz problem i już zrobiłeś.

_________________
Program nie robi tego co chce programista, ale to co programista zaprogramował
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
MarcinKowal
Gość





PostWysłany: Czw Cze 14, 2018 8:17 pm  OP(?)    Temat postu: Odpowiedz z cytatem Pisownia

a ile chciałbyś ???????
Powrót do góry
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Czw Cze 14, 2018 9:13 pm      Temat postu: Odpowiedz z cytatem Pisownia

Podpowiem, że dla ciebie lepiej by było, gdybyś napisał to sam, przy podpowiedziach osób z forum.
Mam przeczucie, graniczące z pewnością, że jest to praca na zaliczenie. Ale mogę się mylić.
Dlatego porzuć myśli, by komuś za to płacić. Wiedzy nie doda, a pozostawi ci poczucie bycia kimś, kto się powinien zapaść w niebyt.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
MarcinKowal
Gość





PostWysłany: Pią Cze 15, 2018 10:20 am      Temat postu: Odpowiedz z cytatem Pisownia

Witam

Program mam napisany w Turbo pascalu 7.0, ale mam wątpliwości czy jest on dobrze napisany z wytycznymi zadania ? Choć mi się wydaje, że działa dobrze. Czy zechciałbyś ktoś przeanalizować program i porównać, go z wytycznymi zadania ?
Kod:
uses
    Crt, Dos;
const
     lzawodnikow = 40;
type
    tab_daty_urodzenia = array[1..8] of integer;
    tab_zawodow = array[1..4] of real;

    indentyfikacja = record
         imie,
         nazwisko: string[20];
         data_urodzenia: tab_daty_urodzenia
    end;

    zawodnik = record
            nazw: indentyfikacja;
            dyscypliny: tab_zawodow;
            srednia: real
    end;

    tab_zawod =  array[1..lzawodnikow] of zawodnik;
var
   zawodnicy: tab_zawod;
    tab_daty_ur: tab_daty_urodzenia;
    tablica_zawodow: tab_zawodow;
    plik: file of zawodnik;
    dyscy: char;
    n,  zawodnika_dzien, zawodnika_miesiac, zawodnika_rok: integer;
    info: SearchRec;
    koniec: boolean;
    zawodnika_imie, zawodnika_nazwisko: string[20];

procedure Odczytaj_z_pliku(var ld: integer);
{ Procedura odczytujaca zawodnikow z pliku i wczytujaca ich to tablicy zawodnicy }
begin
     assign(plik,'bzawodnicy');
     reset(plik);

     while not eof(plik) do
          begin
               ld := ld + 1;
               read(plik,zawodnicy[ld])
          end;

     close(plik)
end;

procedure Wpisywania_Daty(var tablica: tab_daty_urodzenia);
var
   a,b,c,i: integer;
begin
     readln(a,b,c);

     tablica[1] := a div 10;
     tablica[2] := a mod 10;

     tablica[3] := b div 10;
     tablica[4] := b mod 10;

     for i := 8 downto 5 do
        begin
             tablica[i] := c mod 10;
             c := c div 10
        end
end;

procedure Dodaj_Nowego_Zawodnika(liczba_zawodnikow: integer);
{ Procedura dodawania nowego zawodnika }
begin
     with zawodnicy[liczba_zawodnikow], nazw do
         begin
              writeln('Podaj imie zawodnika:');
              readln(imie);
              writeln('Podaj nazwisko zawodnika:');
              readln(nazwisko);
              writeln('Podaj date urodzenia: dzien miesiac rok');
              Wpisywania_Daty(data_urodzenia);
              writeln('Podaj wynik w biegu na 100 m:');
              readln(dyscypliny[1]);
              writeln('Podaj wynik w skoku w dal:');
              readln(dyscypliny[2]);
              writeln('Podaj wynik w skoku wzwyľ:');
              readln(dyscypliny[3]);
              writeln('Podaj wynik w skok o tyczce:');
              readln(dyscypliny[4]);
              srednia := (dyscypliny[1] + dyscypliny[2] + dyscypliny[3] + dyscypliny[4]) / 4
         end
end;

procedure Usu_Zaw(imie_zaw,nazwisko_zaw: string; dzien_ur, miesiac_ur, rok_ur: integer);
{ Procedura usuwania zawodnika }
var
   f: boolean;
   i,j,l: integer;
begin
     for i := 1 to n do
        begin
             f := true;

             with zawodnicy[i], nazw do
                 if (imie = imie_zaw) and (nazwisko = nazwisko_zaw) and (data_urodzenia[1] = dzien_ur div 10)
                   and (data_urodzenia[2] = dzien_ur mod 10) and (data_urodzenia[3] = miesiac_ur div 10)
                   and (data_urodzenia[4] = miesiac_ur  mod 10) then
                                                                    for j := 8 downto 5 do
                                                                       if data_urodzenia[j] = rok_ur mod 10 then
                                                                         rok_ur := rok_ur div 10
                                                                       else
                                                                           begin
                                                                                f := false;
                                                                                break
                                                                           end
                 else
                     f := false;

             if not f then
               continue
             else
                 begin
                      l := i;
                      n := n - 1;
                      break
                 end
        end;

     if f then
       begin
            for i := l to n do
               zawodnicy[i] := zawodnicy[i + 1];
            writeln('Zawodnik zostal usuniety')
       end
     else
         writeln('BLAD DANYCH');

     readln
end;

procedure Srednia_Wynikow(tab: tab_zawod; nazwa_dyscy: string; nr_kon: integer);
{ Procedura obliczajaca srednia wynikow dla wszystkich sportowcow w poszczegolnych dyscyplinach }
var
   sr: real;
    i: integer;
begin
     sr := 0.00;

     for i := 1 to n do
        with tab[i] do
            sr := sr + dyscypliny[nr_kon];

     sr := sr / n;

     writeln('Srednia wynikow dla wszystkich sportowcow w ',nazwa_dyscy,' wynosi: ',sr:6:2);
end;
procedure Sport_O_NAJL(tab: tab_zawod; nazwa_dyscy: string; nr_kon: integer);
{ Procedura wyswietlajaca sportowca o najlepszym wyniku w poszczegolnych konkurencjach }
var
   najlepszy: array[1..lzawodnikow] of string;
   wynik: string[5]; { wynik w postaci zmiennej string do wyswietlenia }
   i,j,numer_zawodnika: integer;
   minimalna_liczba_pun: real; { maksymalna liczba punktow mozliwych do uzyskania }
begin
     minimalna_liczba_pun := 0;
     j := 1;

     for i := 1 to n do
        with tab[i] do
            if minimalna_liczba_pun <= dyscypliny[nr_kon] then
              begin
                   if minimalna_liczba_pun = dyscypliny[nr_kon] then
                     inc(j)
                   else
                       j := 1;

                   minimalna_liczba_pun := dyscypliny[nr_kon];
                   numer_zawodnika := i;

                   str(minimalna_liczba_pun:6:2,wynik);

                   with zawodnicy[numer_zawodnika], nazw do
                       najlepszy[j] := imie+' '+nazwisko+' '+wynik;

              end;

     writeln('Najlepszy sportowiec w ',nazwa_dyscy,' to: ');

     for i := 1 to j do
        writeln(najlepszy[i])

end;

procedure Sport_O_NAJG(tab: tab_zawod; nazwa_dyscy: string; nr_kon: integer);
{ Procedura wyswietlajaca sportowca o najgorszym wyniku w poszczegolnych konkurencjach }
var
   najgorszy: array[1..lzawodnikow] of string;
   wynik: string[5]; { wynik w postaci zmiennej string do wyswietlenia }
   i,j,numer_zawodnika: integer;
   max_liczba_pun: real; { maksymalna liczba punktow mozliwych do uzyskania }
begin
     max_liczba_pun := 120;
     j := 1;

     for i := 1 to n do
        with tab[i] do
            if max_liczba_pun >= dyscypliny[nr_kon] then
              begin
                   if max_liczba_pun = dyscypliny[nr_kon] then
                     inc(j)
                   else
                       j := 1;

                   max_liczba_pun := dyscypliny[nr_kon];
                   numer_zawodnika := i;

                   str(max_liczba_pun:6:2,wynik);

                   with zawodnicy[numer_zawodnika], nazw do
                       najgorszy[j] := imie+' '+nazwisko+' '+wynik;
              end;

     writeln('Najgorszy sportowiec w ',nazwa_dyscy,' to: ');

     for i := 1 to j do
        writeln(najgorszy[i])
end;

procedure Zapisz_Na_Dysk;
{ Procedura zapisywania zawartosci tablicy na dysk }
var
   i: integer;
begin
     assign(plik,'bzawodnicy');
     rewrite(plik);

     for i := 1 to n do
        write(plik,zawodnicy[i]);

     close(plik);
end;

function Menu: char;
{ funkcja Menu wyboru }
var
   i: char;
begin
     ClrScr;
     writeln('Dodanie nowego zawodnika do bazy danych - N');
     writeln('Usuwanie zawodnika z bazy danych - U');
     writeln('Srednia wynikow dla wszystkich sportowcow w poszczegolnych dyscyplinach - 1');
     writeln('Sportowca o najlepszym wyniku w poszczegolnych konkurencjach - 2');
     writeln('Sportowca o najgorszym wyniku w poszczegolnych konkurencjach - 3');
     writeln('Wyjscie z programu - 0');
     i := readkey;
     Menu := i
end;

begin
     n := 0;
     FindFirst('bzawodnicy',Archive,info);
     if DosError <> 18 then { jesli plik istnieje }
       Odczytaj_z_pliku(n);
     writeln('Liczba zawodnikow w bazie: ',n);
     koniec := false;

     repeat
           case Menu of
               'N': if n < lzawodnikow then
                      begin
                           n := n + 1;
                           Dodaj_Nowego_Zawodnika(n)
                      end;
               'U': if n > 1 then
                      begin
                           writeln('Podaj dane zawodnika, kt˘rego chcesz usunĄ†');
                           write('Podaj imie zawodnika: '); readln(zawodnika_imie);
                           write('Podaj nazwisko zawodnika: '); readln(zawodnika_nazwisko);
                           write('Podaj dzien urodzenia: '); readln(zawodnika_dzien);
                           write('Podaj miesiac urodzenia: '); readln(zawodnika_miesiac);
                           write('Podaj rok urodzenia: '); readln(zawodnika_rok);
                           Usu_Zaw(zawodnika_imie,zawodnika_nazwisko,zawodnika_dzien,zawodnika_miesiac,zawodnika_rok);
                      end;
               '1': begin
                         writeln('Srednia wynik˘w dla wszystkich sportowc˘w w poszczeg˘lnych konkurencjach');
                         writeln(' a - w biegu na 100m, b - w skoku w dal,');
                         writeln(' c - w skoku wzwyľ, d - w skoku o tyczce');

                         repeat
                               dyscy := readkey;
                               case dyscy of
                                   'a': Srednia_Wynikow(zawodnicy,'biegu na 100 m',1);
                                   'b': Srednia_Wynikow(zawodnicy,'skoku w dal',2);
                                   'c': Srednia_Wynikow(zawodnicy,'skoku wzwyľ',3);
                                   'd': Srednia_Wynikow(zawodnicy,'skoku o tyczce',4);
                               end
                         until not (dyscy in ['a'..'d'])
                    end;
               '2': begin
                         write('Najlepszy sportowiec w: ');
                         writeln('a - w biegu na 100m, b - w skoku w dal,');
                         writeln(' c - w skoku wzwyľ, d - w skoku o tyczce');

                         repeat
                               dyscy := readkey;
                               case dyscy of
                                   'a': Sport_O_NAJL(zawodnicy,'biegu na 100 m',1);
                                   'b': Sport_O_NAJL(zawodnicy,'skoku w dal',2);
                                   'c': Sport_O_NAJL(zawodnicy,'skoku wzwyľ',3);
                                   'd': Sport_O_NAJL(zawodnicy,'skoku o tyczce',4)
                               end
                         until not (dyscy in ['a'..'d'])
                    end;
               '3': begin
                         write('Najgorszy sportowiec w: ');
                         writeln('a - w biegu na 100m, b - w skoku w dal,');
                         writeln(' c - w skoku wzwyľ, d - w skoku o tyczce');

                         repeat
                               dyscy := readkey;
                               case dyscy of
                                   'a': Sport_O_NAJG(zawodnicy,'biegu na 100 m',1);
                                   'b': Sport_O_NAJG(zawodnicy,'skoku w dal',2);
                                   'c': Sport_O_NAJG(zawodnicy,'skoku wzwyľ',3);
                                   'd': Sport_O_NAJG(zawodnicy,'skoku o tyczce',4)
                               end
                         until not (dyscy in ['a'..'d'])
                    end;
               '0': begin koniec := true; Zapisz_Na_Dysk end
           end
     until koniec
end.

Jak ktoś, będzie miał jakieś uwagi to zapraszam.
Pozdrawiam Marcin
Powrót do góry
samolot



Dołączył: 26 Sty 2006
Posty: 8273
Skąd: Toruń

PostWysłany: Pią Cze 15, 2018 10:39 pm      Temat postu: Odpowiedz z cytatem Pisownia

Ponieważ przedstawiony kod jest napisany w Pascalu, to przeniosłem temat do tego działu.
Poczekaj, może odpowie ktoś, kto zna ten język.

_________________
Nie zadawaj bezcelowych pytań / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
MarcinKowal
Gość





PostWysłany: Pon Cze 18, 2018 2:12 pm      Temat postu: Odpowiedz z cytatem Pisownia

Jak to będzie w C napisane ?
Powrót do góry
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Pascal, Delphi, ... Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.19381 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |