Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

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

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

Program 14. #include <iostream> #include <ctime> using namespace std;

PDF stworzony przez wersję demonstracyjną pdffactory Pro Program 15

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wstęp do programowania

Wstęp do programowania

Struktury Struktura polami struct struct struct struct

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Programowanie i struktury danych

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

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Część 4 życie programu

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

Wstęp do programowania

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

Programowanie i struktury danych

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

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

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

Inicjacja tablicy jednowymiarowej

Programowanie - wykład 4

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

C-struktury wykład. Dorota Pylak

Zmienne i struktury dynamiczne

Struktura pliku projektu Console Application

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

Wstęp do programowania

Projektowanie klas c.d. Projektowanie klas przykład

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Podstawy Programowania Podstawowa składnia języka C++

Wstęp do programowania

1 Podstawy c++ w pigułce.

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Wstęp do Programowania, laboratorium 02

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

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

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Programowanie komputerowe. Zajęcia 4

1 Podstawy c++ w pigułce.

Algorytmy i język C++

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

I - Microsoft Visual Studio C++

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

Pytania sprawdzające wiedzę z programowania C++

Programowanie obiektowe i C++ dla matematyków

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Programowanie komputerowe. Zajęcia 1

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Kontrola przebiegu programu

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wstęp do Informatyki

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

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

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

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

Wprowadzenie do programowania i programowanie obiektowe

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

Struktury typ definiowany przez uŝytkownika.

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

XVII. Funkcje w C Ogólna budowa funkcji Definicja funkcji Co waŝnego powinniśmy wiedzieć o funkcjach

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Programowanie Procedurale

Programowanie proceduralne w języku C++ Pętle, tablice

Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje

Wstęp do informatyki- wykład 7

C-struktury wykład. Dorota Pylak

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie obiektowe W3

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie.

Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi.

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... }

Techniki Programowania wskaźniki 2

Programowanie Obiektowe i C++

Wstęp do programowania

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Wstęp do programowania

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Przekazywanie argumentów wskaźniki

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

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

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

Transkrypt:

Program 22 Zadeklarować strukturę Osoba przechowującą dane osoby: imię, nazwisko (ciągi znaków), płeć (pojedynczy znak) oraz rok urodzenia (liczba całkowita). Napisać następujące funkcje: funkcje pobierającą zawartość tablicy osób podanej jako parametr, o długości podanej jako parametr; funkcje wypisującą dane osoby podanej jako parametr; funkcje wypisującą wszystkie dwuosobowe zespoły złoŝone z osób urodzonych w tym samym roku, jakie moŝna utworzyć mając do dyspozycji osoby zapamiętane w tablicy podanej jako parametr o długości podanej jako parametr. Wykorzystać powyŝsze funkcje do napisania programu tworzącego tablice osób o podanej przez uŝytkownika długości, pobierającego dane do tej tablicy i wypisującego wszystkie dwuosobowe zespoły złoŝone z osób znajdujących sie w tablicy i mających jednakowy rok urodzenia. #include <iostream> using namespace std; struct Osoba string Imie; string Nazwisko; char Plec; int RokUr; ; void Pobierz(Osoba t[],int r); void Wypisz(Osoba a); void Zesp2Osob(Osoba t[],int r); int main() int n; cout<<"podaj liczbe studentow: "; cin>>n; Osoba *tab=new Osoba[n]; Pobierz(tab,n); Zesp2Osob(tab,n); delete [] tab; system("pause"); return 0;

void Pobierz(Osoba t[],int r) for(int i=0;i<r;i++) cin>>t[i].imie; cin>>t[i].nazwisko; cin>>t[i].plec; cin>>t[i].rokur; void Wypisz(Osoba a) cout<<"imie: "<<a.imie<<endl; cout<<"nazwisko: "<<a.nazwisko<<endl; cout<<"plec: "<<a.plec<<endl; cout<<"rokur: "<<a.rokur<<endl; void Zesp2Osob(Osoba t[],int r) for(int i=0;i<r-1;i++) for(int j=i+1;j<r;j++) if(t[i].rokur==t[j].rokur) cout<<"zespol "<<endl; cout<<"osoba 1:"<<endl; Wypisz(t[i]); cout<<"osoba 2:"<<endl; Wypisz(t[j]);

Omówienie programu Na początku programu deklarujemy strukturę Osoba (o strukturach moŝesz przeczytać w omówieniu Programu 6): struct Osoba string Imie; string Nazwisko; char Plec; int RokUr; ; Struktura ma 4 pola: Imie, Nazwisko (ciągi znaków - string), Plec (pojedynczy znak) i RokUr (liczba całkowita). W programie wykorzystane są 4 funkcje. Funkcja Pobierz void Pobierz(Osoba t[],int r) for(int i=0;i<r;i++) cin>>t[i].imie; cin>>t[i].nazwisko; cin>>t[i].plec; cin>>t[i].rokur; Funkcja nie zwraca Ŝadnej wartości (słówko void przed nazwą funkcji). Funkcja posiada dwa argumenty/parametry. Pierwszy to tablica typu Osoba o nazwie t, argument drugi to liczba całkowita (int) będąca rozmiarem tablicy t. Wewnątrz funkcji mamy pętlę for: for(int i=0;i<r;i++)

cin>>t[i].imie; cin>>t[i].nazwisko; cin>>t[i].plec; cin>>t[i].rokur; Pętla ta umoŝliwia wpisanie danych (imienia, nazwiska, płci i roku urodzenia) do tablicy osób t o rozmiarze r. Dla i=0 wpisujemy dane do pierwszego elementu tablicy (tab[0]): cin>>t[0].imie; cin>>t[0].nazwisko; cin>>t[0].plec; cin>>t[0].rokur; Dla pozostałych wartości i (1,2,3,,r-1) wprowadzamy wartości do pozostałych elementów tablicy. Funkcja Wypisz void Wypisz(Osoba a) cout<<"imie: "<<a.imie<<endl; cout<<"nazwisko: "<<a.nazwisko<<endl; cout<<"plec: "<<a.plec<<endl; cout<<"rokur: "<<a.rokur<<endl; Funkcja Wypisz wypisuje wartości pól Imie, Nazwisko, Plec i RokUr osoby przesłanej do niej jako parametr a.

Funkcja Zesp2Osob void Zesp2Osob(Osoba t[],int r) for(int i=0;i<r-1;i++) for(int j=i+1;j<r;j++) if(t[i].rokur==t[j].rokur) cout<<"zespol "<<endl; cout<<"osoba 1:"<<endl; Wypisz(t[i]); cout<<"osoba 2:"<<endl; Wypisz(t[j]); Funkcja nie zwraca Ŝadnej wartości (słówko void przed nazwą funkcji). Funkcja posiada dwa argumenty/parametry. Pierwszy to tablica typu Osoba o nazwie t, argument drugi to liczba całkowita (int) będąca rozmiarem tablicy t. Działanie funkcji polega na wypisaniu wszystkich dwuosobowych zespołów złoŝonych z osób urodzonych w tym samym roku, jakie moŝna utworzyć mając do dyspozycji osoby zapamiętane w tablicy podanej jako parametr o długości podanej jako parametr. Wewnątrz funkcji mamy dwie pętle for. Przyjmijmy, Ŝe i=0 (zewnętrzna pętla for). Wówczas zmienna j (wewnętrzna pętla for) przyjmuje wartości 1,2,3,,r-1 gdzie r jest rozmiarem tablicy t. Dla j=1 wewnątrz pętli mamy: if(t[0].rokur==t[1].rokur) Dla j=2 wewnątrz pętli mamy: if(t[0].rokur==t[2].rokur)

itd Dla j=r-1 wewnątrz pętli mamy: if(t[0].rokur==t[r-1].rokur) A zatem dla i=0 (zewnętrzna pętla for) porównujemy rok urodzenia pierwszej osoby w tablicy z rokiem urodzenia kaŝdej następnej osoby (j=1,2,3,,r-1). Analogicznie dla i=1 (zewnętrzna pętla for) porównujemy rok urodzenia drugiej osoby w tablicy z rokiem urodzenia kaŝdej następnej osoby (j=2,3,4,r-1). (UWAGA: nie porównujemy juŝ roku urodzenia osoby drugiej i pierwszej osoby w tablicy bo zrobiliśmy to dla i=0) itd. Dla maksymalnej wartości i=r-2 (zewnętrzna pętla for) porównujemy rok urodzenia przedostatniej osoby w tablicy z rokiem urodzenia ostatniej osoby (j=r-1). W ten sposób porównamy rok urodzenia kaŝdych dwóch osób zapisanych w tablicy. Schematycznie (r rozmiar tablicy czyli liczba osób): i=0, j=1 porównujemy rok urodzenia pierwszego elementu tablicy i drugiego elementu. i=0, j=2 porównujemy rok urodzenia pierwszego elementu tablicy i trzeciego elementu. itd i=0, j=r-1 porównujemy rok urodzenia pierwszego elementu tablicy i ostatniego elementu.

i=1, j=2 porównujemy rok urodzenia drugiego elementu tablicy i trzeciego elementu. i=1, j=3 porównujemy rok urodzenia drugiego elementu tablicy i czwartego elementu. itd i=1, j=r-1 porównujemy rok urodzenia drugiego elementu tablicy i ostatniego elementu. JeŜeli rok urodzenia dwóch porównywanych osób (osoby t[i] i osoby t[j]) jest ten sam wówczas spełniony jest warunek: t[i].rokur==t[j].rokur Oznacza to, Ŝe osoby te mogą utworzyć zespół - wypisywane są informacje o tych osobach (przy uŝyciu funkcji Wypisz). if(t[i].rokur==t[j].rokur) cout<<"zespol "<<endl; cout<<"osoba 1:"<<endl; Wypisz(t[i]); cout<<"osoba 2:"<<endl; Wypisz(t[j]);