struct Student { char nazwisko[30]; int wiek; float ocena; }; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar];

Podobne dokumenty
int tab_a [ 2 ] [ 3 ];

#include <iostream.h> #include <conio.h>

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Co nie powinno być umieszczane w plikach nagłówkowych:

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

tablica: dane_liczbowe

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

1. Abstrakcyjne typy danych

Wyklad 7 Funkcje (c.d.). Tablice jednowymiarowe znaków

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Etap 2 - Budowa interfejsu. typedef struct ELEMENT* stos; struct ELEMENT { dane Dane; stos Nastepny; }; struct kolejka { stos Poczatek, Koniec; };

INSTRUKCJE REPETYCYJNE PĘTLE

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

( wykł. dr Marek Piasecki )

INSTRUKCJE REPETYCYJNE PĘTLE

4) Operacje na tablicy dwuwymiarowej bez wykorzystywania indeksów liczbowych:

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

ALGORYTMY I STRUKTURY DANYCH

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

C-struktury wykład. Dorota Pylak

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

TEMAT : KLASY POLIMORFIZM

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Projektowanie klas c.d. Projektowanie klas przykład

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Wprowadzenie do szablonów szablony funkcji

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Wprowadzenie do programowania i programowanie obiektowe

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

C-struktury wykład. Dorota Pylak

Programowanie w języku C++

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Wprowadzenie do szablonów szablony funkcji

Operacje wejścia/wyjścia odsłona pierwsza

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Algorytm selekcji Hoare a. Łukasz Miemus

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

Wykład 5_2 Algorytm ograniczania liczby serii za pomocą kopcowego rozdzielania serii początkowych

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Języki programowania - podstawy

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Część 4 życie programu

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

Jak napisać listę jednokierunkową?

scanf( %s,tekst); //znaki podane z klawiatury (do pierwszego białego znaku ) //s kopiowane do zmiennej tekst i dostawiany jest znak \0

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Wstęp do programowania 1

1 Podstawy c++ w pigułce.

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Algorytmy sortowania w języku C. Autor: mgr inż. Sławomir Samolej. Zagadnienie 1. (Sortowanie)

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Inicjacja tablicy jednowymiarowej

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Podstawy Programowania Obiektowego

Struktury Struktura polami struct struct struct struct

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Podstawy programowania C. dr. Krystyna Łapin

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Programowanie strukturalne i obiektowe

Wykład 6. Operacje na łańcuchach znakowych

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

Zmienne i struktury dynamiczne

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Podstawy programowania w języku C++

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Tablice deklaracja, reprezentacja wewnętrzna

Wstęp do wskaźników w języku ANSI C

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy programowania 1

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

PARADYGMATY PROGRAMOWANIA Wykład 2

Wykład 7 Abstrakcyjne typy danych kolejka priorytetowa

Podstawy programowania w języku C++

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie 2. Język C++. Wykład 3.

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

I - Microsoft Visual Studio C++

Struktury typ definiowany przez uŝytkownika.

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Język C/C++ w przykładach

Transkrypt:

PRZYKLAD p_30.cpp Przykladowa implementacja "listy studentów" z porzadkowaniem wedlug róznych kryteriów zaimplementowanym poprzez "fizyczne" sortowanie danych oraz poprzez sortowanie "logiczne" za pomoca tablic indeksowych Implementacja w/w zadania bez wprowadzenia abstrakcyjnego interfejsu do wykorzystywanych modeli danych: studenta, listy studentów struct Student char nazwisko[30]; int wiek; float ocena; ; #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar]; int indeksy_wg_wieku[max_rozmiar]; int indeksy_wg_ocen[max_rozmiar]; #include <iostream.h> #include <string.h> #include <conio.h> strcmp() clrscr(), getch() void main() int i,j; clrscr(); wczytanie danych do listy_studentow cout<<"\n\nwczytywanie danych studenta nr: "<<i; cout<<"\npodaj nazwisko: "; cin>>lista_studentow[i].nazwisko; cout<<"\npodaj wiek: "; cin>>lista_studentow[i].wiek; cout<<"\npodaj ocene: "; cin>>lista_studentow[i].ocena; prymitywne 'babelkowe' sortowanie listy w/g nazwisk if( strcmp(lista_studentow[i-1].nazwisko, lista_studentow[i].nazwisko) > 0 ) Student bufor; bufor = lista_studentow[i]; lista_studentow[i] = lista_studentow[i-1]; lista_studentow[i-1] = bufor; Przyklady do 3 wykladu - strona 1

inicjacja tablicy indeksów w/g wieku i sortowanie jej zawartosci indeksy_wg_wieku[i]=i; int pierwszy = indeksy_wg_wieku[i-1]; int drugi = indeksy_wg_wieku[i]; if( lista_studentow[pierwszy].wiek > lista_studentow[drugi].wiek ) int bufor; bufor = indeksy_wg_wieku[i]; indeksy_wg_wieku[i] = indeksy_wg_wieku[i-1]; indeksy_wg_wieku[i-1] = bufor; inicjacja tablicy indeksów w/g ocen i sortowanie jej zawartosci indeksy_wg_ocen[i]=i; int pierwszy = indeksy_wg_ocen[i-1]; int drugi = indeksy_wg_ocen[i]; if( lista_studentow[pierwszy].ocena > lista_studentow[drugi].ocena ) int bufor; bufor = indeksy_wg_ocen[i]; indeksy_wg_ocen[i] = indeksy_wg_ocen[i-1]; indeksy_wg_ocen[i-1] = bufor; dalszy ciag tej funkcji jest na nastepnej stronie Przyklady do 3 wykladu - strona 2

wyswietlanie listy studentów posortowanej w/g dowolnego kryterium int klawisz; do cout<<"\n\nmenu:"; cout<<"\n n - Wyswietlanie w/g nazwisk"; cout<<"\n w - Wyswietlanie w/g wieku"; cout<<"\n o - Wyswietlanie w/g ocen"; cout<<"\n k - Koniec programu"; cout<<"\n\nwybierz opcje: "; klawisz=getch(); switch(klawisz) case 'n': Wyswietlanie w/g porzadku "fizycznego" tzn. w/g nazwisk cout<<"\n\nlista studentow w/g nazwisk:"; cout<<endl<<lista_studentow[i].nazwisko<<", "; cout<<lista_studentow[i].wiek<<", "; cout<<lista_studentow[i].ocena; case 'w': Wyswietlanie w/g pierwszej tablicy indeksow cout<<"\n\nlista studentow w/g wieku:"; j = indeksy_wg_wieku[i]; cout<<endl<<lista_studentow[j].nazwisko<<", "; cout<<lista_studentow[j].wiek<<", "; cout<<lista_studentow[j].ocena; case 'o': Wyswietlanie w/g pierwszej drugiej indeksow cout<<"\n\nlista studentow w/g ocen:"; j = indeksy_wg_ocen[i]; cout<<endl<<lista_studentow[j].nazwisko<<", "; cout<<lista_studentow[j].wiek<<", "; cout<<lista_studentow[j].ocena; while(klawisz!='k'); Przyklady do 3 wykladu - strona 3

PRZYKLAD p_31.cpp Bardziej zaawansowana implementacja "listy studentów" z porzadkowaniem wedlug róznych kryteriów zaimplementowanym poprzez "fizyczne" sortowanie danych oraz poprzez sortowanie "logiczne" za pomoca tablic indeksowych Ta implementacja wykorzystuje "obiektowe" podejscie do wykorzystywanych modeli danych: studenta, listy studentów z wyróznieniem abstrakcyjnego interfejsu #include <iostream.h> #include <string.h> #include <conio.h> strcmp() clrscr(), getch() Definicja modelu danej typu "Student" przechowujacej informacje o studencie: nazwisko, wiek, ocena z operacjami WCZYTAJ i WYSWIETL struct Student dane studenta char nazwisko[30]; int wiek; float ocena; podstawowe operacje na danej typu Student void WCZYTAJ() cout<<"\npodaj nazwisko: "; cin>>nazwisko; cout<<"\npodaj wiek: "; cin>>wiek; cout<<"\npodaj ocene: "; cin>>ocena; void WYSWIETL() cout<<endl<<nazwisko<<", "; cout<<wiek<<", "; cout<<ocena; ;----------------------------------------------------struct Student Przyklady do 3 wykladu - strona 4

Definicja modelu danej typu "Lista_Studentow" przechowujacej informacje o liscie danych typu "Student" z podstawowymi operacjami: INICJUJ, WCZYTAJ, WYSWIETL operacjami sterujacymi porzadkiem wyswietlania: SORTUJ, USTAW_INDEKS i pomocniczymi operacjami sortowania: ZAMIEN(student1,student2) ZAMIEN(indeks1,indeks2) struct Lista_Studentow reprezentacja danych listy studentów #define MAX_ROZMIAR 3 Student lista_studentow[max_rozmiar]; int indeksy_wg_wieku[max_rozmiar]; int indeksy_wg_ocen[max_rozmiar]; int *aktywny_indeks; podstawowe operacje void INICJUJ(void) aktywny_indeks=null; void USTAW_INDEKS(int *indeks) aktywny_indeks = indeks; void WCZYTAJ(void) cout<<"\n\nwczytywanie listy studentow"; for(int i=0; i<max_rozmiar; i++) cout<<"\n\nwczytywanie danych studenta nr: "<<i; lista_studentow[i].wczytaj(); void WYSWIETL(void) if( aktywny_indeks==null ) for(int i=0; i<max_rozmiar; i++) lista_studentow[i].wyswietl(); else for(int j,i=0; i<max_rozmiar; i++) j = aktywny_indeks[i]; lista_studentow[j].wyswietl(); Przyklady do 3 wykladu - strona 5

void ZAMIEN( Student &s1, Student &s2) Student bufor; bufor = s1; s1 = s2; s2 = bufor; void ZAMIEN( int &i1, int &i2) int bufor; bufor = i1; i1 = i2; i2 = bufor; void SORTUJ( void ) int i,j; poczatkowa inicjacja tablic indeksów for(i=0;i<max_rozmiar; i++) indeksy_wg_wieku[i]=i; indeksy_wg_ocen[i]=i; "fizyczne" sortowanie w/g nazwisk if( strcmp(lista_studentow[i-1].nazwisko, lista_studentow[i].nazwisko) > 0 ) ZAMIEN( lista_studentow[i-1], lista_studentow[i] ); "indeksowe" sortowanie w/g wieku i ocen int pierwszy = indeksy_wg_wieku[i-1]; int drugi = indeksy_wg_wieku[i]; if( lista_studentow[pierwszy].wiek > lista_studentow[drugi].wiek ) ZAMIEN( indeksy_wg_wieku[i-1], indeksy_wg_wieku[i]); pierwszy = indeksy_wg_ocen[i-1]; drugi = indeksy_wg_ocen[i]; if( lista_studentow[pierwszy].ocena > lista_studentow[drugi].ocena ) ZAMIEN( indeksy_wg_ocen[i-1], indeksy_wg_ocen[i]); ;--------------------------------------------struct Lista_Studentow Przyklady do 3 wykladu - strona 6

void main() Lista_Studentow lista_inf; Lista_Studentow inf_2, eit; clrscr(); lista_inf.inicjuj(); lista_inf.wczytaj(); lista_inf.sortuj(); wyswietlanie listy studentów posortowanej w/g dowolnego kryterium int klawisz; do cout<<"\n\nmenu:"; cout<<"\n n - Wyswietlanie w/g nazwisk"; cout<<"\n w - Wyswietlanie w/g wieku"; cout<<"\n o - Wyswietlanie w/g ocen"; cout<<"\n k - Koniec programu"; cout<<"\n\nwybierz opcje: "; klawisz=getch(); switch(klawisz) case 'n': Wyswietlanie w/g porzadku "fizycznego" tzn. w/g nazwisk cout<<"\n\nlista studentow w/g nazwisk:"; lista_inf.ustaw_indeks(null); lista_inf.wyswietl(); case 'w': Wyswietlanie w/g pierwszej tablicy indeksow cout<<"\n\nlista studentow w/g wieku:"; lista_inf.ustaw_indeks(lista_inf.indeksy_wg_wieku); lista_inf.wyswietl(); case 'o': Wyswietlanie w/g pierwszej drugiej indeksow cout<<"\n\nlista studentow w/g ocen:"; lista_inf.ustaw_indeks(lista_inf.indeksy_wg_ocen); lista_inf.wyswietl(); while(klawisz!='k'); Przyklady do 3 wykladu - strona 7