Podstawy programowania w języku C++



Podobne dokumenty
Podstawy programowania w języku C++

Podstawy programowania w języku C++

Języki programowania. Tablice struktur, pliki struktur. Część ósma. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania w języku C++

Podstawy programowania

Podstawy programowania w języku C++

Podstawy programowania w języku C++

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Podstawy programowania w języku C++

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

Podstawy programowania w języku C i C++

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C

Programowanie w języku C++

Języki programowania obiektowego Nieobiektowe elementy języka C++

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wprowadzenie do programowania w języku C

Tablice deklaracja, reprezentacja wewnętrzna

Podstawy programowania w języku C++

Struktury. Przykład W8_1

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Funkcje zawarte w bibliotece < io.h >

Programowanie w języku C++

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

Podstawy programowania w języku C++

Podstawy programowania w języku C++

Funkcje zawarte w bibliotece < io.h >

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Podstawy programowania w języku C++

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

Struktury - wprowadzenie

Wprowadzenie do programowanie obiektowego w języku C++

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

Systemy ekspertowe Część siódma Realizacja dziedzinowego systemu ekspertowego Roman Simiński

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Systemy ekspertowe Część siódma Realizacja dziedzinowego systemu ekspertowego Roman Simiński

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Języki i metodyka programowania. Wskaźniki i tablice.

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Struktury czyli rekordy w C/C++

Lab 9 Podstawy Programowania

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Biblioteka standardowa - operacje wejścia/wyjścia

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Tablice, funkcje - wprowadzenie

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 4: Klasy i Metody

Podstawy programowania

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania w języku C++

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Plik jest reprezentowany przez strumień znaków (bajtów) o zmiennej długości. Koniec strumienia identyfikowany jest znacznikiem końca pliku EOF.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C-struktury wykład. Dorota Pylak

Podstawy Programowania

Wskaźniki. Programowanie Proceduralne 1

۰ Elementem jednostkowym takiego pliku jest bajt. ۰ Format pliku binarnego: [bajty pliku][eof]

Argumenty wywołania programu, operacje na plikach

Języki programowania obiektowego Nieobiektowe elementy języka C++

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

C-struktury wykład. Dorota Pylak

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Języki i techniki programowania Ćwiczenia 2

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

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

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

ALGORYTMY I STRUKTURY DANYCH

external Data Representation

KURS C/C++ WYKŁAD 6. Wskaźniki

Podstawy programowania 1

Język ludzki kod maszynowy

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

Podstawy Programowania Obiektowego

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

Funkcja (podprogram) void

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

Wskaźniki do funkcji. Wykład 11. Podstawy programowania ( język C ) Wskaźniki do funkcji (1) Wskaźniki do funkcji (2)

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

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Stałe i zmienne znakowe. Stała znakowa: znak

tablica: dane_liczbowe

Pliki. Informacje ogólne. Obsługa plików w języku C

7 Przygotował: mgr inż. Maciej Lasota

Referencje do zmiennych i obiektów

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

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

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

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Transkrypt:

Podstawy programowania w języku C++ Część dziesiąta Rekordy w C/C++ struktury Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

Programowanie jako tworzenie komputerowego modelu rzeczywistości Obiekty rzeczywiste Abstrakcyjny model analityczny Analityk i/lub projektant systemu informatycznego Obiekty, elementy, pojęcia ze świata zewnętrznego muszą zostać odwzorowane danymi w programie. Dane występujące w programie stanowią uproszczony, komputerowy model rzeczywistości. Copyright Roman Simiński Strona : 2

Obliczanie średniego spalania raz jeszcze ;-) Zmienna Dystans Zmienna Paliwo Dane rzeczywistego obiektu Dane opisujące komputerowy model problemu Algorytm Wylicz średnie spalanie: (Paliwo*100)/Dystans Wyświetl wynik Analityk i/lub projektant systemu informatycznego Przejechany dystans: 500km Zużyte paliwo: 37l Copyright Roman Simiński Strona : 3

Obliczanie średniego spalania raz jeszcze ;-) Zmienna Dystans Zmienna Paliwo Dane modelu są dwiema, osobnymi zmiennymi liczbowymi Analityk i/lub projektant systemu informatycznego Copyright Roman Simiński Strona : 4

Nowe zadanie system ewidencji pojazdów dla autokomisu Jakich danych potrzebujemy? Obiekty rzeczywiste Analityk i/lub projektant systemu informatycznego Copyright Roman Simiński Strona : 5

Jakie informacje będziemy przetwarzać i przechowywać? Obiekty rzeczywiste Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Analityk i/lub projektant systemu informatycznego Copyright Roman Simiński Strona : 6

Dane opisują jeden pojazd Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Dane opisujące jeden pojazd to porcja różnych informacji Analityk i/lub projektant systemu informatycznego Copyright Roman Simiński Strona : 7

Pojazdów jest wiele... Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Potrzeba wiele porcji danych. Każda z porcji jest złożona i zawiera różne dane opisujące pojazd. Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny Copyright Roman Simiński Strona : 8

Struktury zmienne do przechowywania różnych danych Definicja typu strukturalnego Dane Marka Model Rok produkcji Cena Przebieg Nr rejestracyjny struct pojazd char marka[ 20 ]; char model[ 20 ]; int rok_prod; float cena; float przebieg; char nr_rej[ 10 ]; }; Pola struktury o nazwie struct pojazd struct pojazd a; Deklaracja zmiennej strukturalnej o nazwie a Copyright Roman Simiński Strona : 9

Struktury parametryzacja rozmiarów tablic /* Dla C89 i C++ */ #define MAKS_M 20 #define MAKS_R 10 // Dla C++ const int MAKS_M = 20; const int MAKS_R = 10; struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; Struktura a jako rekord marka model rok_prod cena przebieg nr_rej struct pojazd a; Copyright Roman Simiński Strona : 10

Struktury reprezentacja w pamięci Pamięć operacyjna marka model rok_prod cena przebieg nr_rej a struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; struct pojazd a; Copyright Roman Simiński Strona : 11

Struktury odwoływanie się do pól struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; struct pojazd a; a.rok_prod = 2006; a.przebieg = 32850.5; a.cena = 45000; Wstawianie wartości do pól zmiennej strukturalnej a Pamięć operacyjna marka model rok_prod cena przebieg nr_rej 2006 45000 32850.5 a Copyright Roman Simiński Strona : 12

Struktury odwoływanie się do pól, format zapisu a. rok_prod = 20 ; Nazwa zamiennej strukturalnej lub wyrażenie lokalizujące taką zmienną w pamięci operacyjnej. Operator selekcji pola struktury Dowolne wyrażenie typu zgodnego z typem pola struktury. Nazwa pola struktury Copyright Roman Simiński Strona : 13

Struktury odwoływanie się do pól tablicowych struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; struct pojazd a; strcpy( a.marka, Honda ); strcpy( a.marka, Accord ); strcpy( a.nr_rej, S1 XXXX ); Wstawianie wartości do pól zmiennej strukturalnej a będących tablicami znaków Pamięć operacyjna marka model rok_prod cena przebieg nr_rej Honda Accord 2006 45000 32850.5 S1 XXXX a Copyright Roman Simiński Strona : 14

Wyprowadzanie zawartości pól struktury do strumienia wyjściowego struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; struct pojazd a; printf( \nmarka: %s, a.marka ); printf( \nmodel: %s, a.model ); printf( \nrok produkcji: %d, a.rok_prod ); printf( \ncena: %g, a.cena ); printf( \nprzebieg: %g, a.przebieg ); printf( \nnr rejestracyjny: %s, a.nr_rej ); Copyright Roman Simiński Strona : 15

Wyprowadzanie struktury do pliku tekstowego struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; struct pojazd a; FILE * f; if( ( f = fopen( auta.txt, wt ) )!= NULL ) fprintf( f, \nmarka: %s, a.marka ); fprintf( f, \nmodel: %s, a.model ); fprintf( f, \nrok produkcji: %d, a.rok_prod ); fprintf( f, \ncena: %g, a.cena ); fprintf( f, \nprzebieg: %g, a.przebieg ); fprintf( f, \nnr rejestracyjny: %s, a.nr_rej ); } fclose( f ); Copyright Roman Simiński Strona : 16

Wprowadzanie danych do struktury ze strumienia wejściowego struct pojazd a; char bufor[ 256 ]; printf( \npodaj dane samochodu ); printf( \nmarka: ); gets( bufor ); if( strlen( bufor ) >= MAKS_M ) bufor[ MAKS_M - 1 ] = '\0'; /* Obcięcie zbyt długiego napisu */ strcpy( a.marka, bufor ); printf( \nmodel: ); gets( bufor ); if( strlen( bufor ) >= MAKS_M ) bufor[ MAKS_M - 1 ] = '\0'; /* Obcięcie zbyt długiego napisu */ strcpy( a.model, bufor ); Copyright Roman Simiński Strona : 17

Wprowadzanie danych do struktury ze strumienia wejściowego, cd... printf( \nrok produkcji: ); gets( bufor ); a.rok_prod = atoi( bufer ); printf( \ncena: ); gets( bufor ); a.cena = atof( bufer ); printf( \nprzebieg: ); gets( bufor ); a.przebieg = atof( bufer ); printf( \nnumer rejestracyjny: ); gets( bufor ); if( strlen( bufor ) >= MAKS_R ) bufor[ MAKS_R - 1 ] = '\0'; /* Obcięcie zbyt długiego napisu */ strcpy( a.nr_rej, bufor ); Copyright Roman Simiński Strona : 18

Nazwa struktury różnice w C89 i C++ W języku C nazwa występująca po słowie kluczowym struct nie jest samodzielną nazwą typu strukturalnego. W deklaracja zmiennych należy użyć słowa kluczowego struct. struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; struct pojazd a; Copyright Roman Simiński Strona : 19

Nazwa struktury różnice w C89 i C++ Aby nie pisać słowa kluczowego struct, można użyć deklaracji tworzącej synonimiczną nazwę typu: typedef. struct _pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; typedef struct char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; } pojazd; typedef struct _pojazd pojazd; pojazd a; pojazd a; Copyright Roman Simiński Strona : 20

Nazwa struktury różnice w C89 i C++ W języku C++ nazwa oznacznikowa struktury występująca po słowie struct jest pełnoprawną nazwą typu strukturalnego. Nie trzeba używać słowa struct. struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; pojazd a; Copyright Roman Simiński Strona : 21

Manipulowanie strukturami przy użyciu wskaźników struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; typedef struct _pojazd pojazd; pojazd a; /* Deklaracja zmiennej strukturalnej pojazd */ pojazd * a_wsk; /* Deklaracja zmiennej wskaźnikowej do pojazd */ Pamięć operacyjna? a a_wsk Copyright Roman Simiński Strona : 22

Manipulowanie strukturami przy użyciu wskaźników, cd... struct pojazd char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; typedef struct _pojazd pojazd; pojazd a; /* Deklaracja zmiennej strukturalnej pojazd */ pojazd * a_wsk; /* Deklaracja zmiennej wskaźnikowej do pojazd */ a_wsk = &a; Zmienna a_wsk lokalizuje a pamięci zmienną a Pamięć operacyjna a a_wsk Copyright Roman Simiński Strona : 23

Manipulowanie strukturami przy użyciu wskaźników, cd... struct auto char marka[ MAKS_M ]; char model[ MAKS_M ]; int rok_prod; float cena; float przebieg; char nr_rej[ MAKS_R ]; }; typedef struct _pojazd pojazd; pojazd a; /* Deklaracja zmiennej strukturalnej pojazd */ pojazd * a_wsk; /* Deklaracja zmiennej wskaźnikowej do pojazd */ a_wsk = &a; (*a_wsk).cena = 46000; Wyrażenie *a_wsk reprezentuje strukturę a Pamięć operacyjna a 46000 a_wsk Copyright Roman Simiński Strona : 24

Odwoływanie się do pól struktury via wskaźnik Wskazywana struktura Pole struktury, wskazywanej przez a_wsk. ( * a_wsk ). cena = 46000; Zmienna wskaźnikowa Uwaga! Ze względu na priorytet i łączność operatorów, nawiasy w powyższym wyrażeniu są niezbędne. (*a_wsk).cena *a_wsk.cena To nie to samo! Copyright Roman Simiński Strona : 25

Odwoływanie się do pól struktury via wskaźnik, operator -> Zmienna wskaźnikowa Pole struktury, wskazywanej przez a_wsk. a_wsk -> cena = 46000; Operator dostępu do składowej Operator dostępu do składowej -> stosujemy dla struktur, uni i obiektów. (*a_wsk).cena a_wsk->cena To to samo Copyright Roman Simiński Strona : 26

Funkcja wyprowadzająca zawartość struktury do stdout void pokaz_info( pojazd info ) printf( \nmarka: %s, info.marka ); printf( \nmodel: %s, info.model ); printf( \nrok produkcji: %d, info.rok_prod ); printf( \ncena: %g, info.cena ); printf( \nprzebieg: %g, info.przebieg ); printf( \nnr rejestracyjny: %s, info.nr_rej ); } pojazd a; a.cena = 25000; pokaz_info( a ); Copyright Roman Simiński Strona : 27

Przekazywanie struktur przez wartość void pokaz_info( pojazd info ) printf( \nmarka: %s, info.marka ); printf( \nmodel: %s, info.model ); printf( \nrok produkcji: %d, info.rok_prod ); printf( \ncena: %g, info.cena ); printf( \nprzebieg: %g, info.przebieg ); printf( \nnr rejestracyjny: %s, info.nr_rej ); } pojazd a; a.cena = 25000; pokaz_info( a ); Pamięć operacyjna Parametr aktualny wywołania Kopiowanie Parametr formalny funkcji to struktura a info Stos Copyright Roman Simiński Strona : 28

Przekazywanie wskaźnika do struktury void pokaz_info( pojazd * info ) printf( \nmarka: %s, info->marka ); printf( \nmodel: %s, info->model ); printf( \nrok produkcji: %d, info->rok_prod ); printf( \ncena: %g, info->cena ); printf( \nprzebieg: %g, info->przebieg ); printf( \nnr rejestracyjny: %s, info->nr_rej ); } pojazd a; a.cena = 25000; pokaz_info( &a ); Pamięć operacyjna Parametr aktualny wywołania Wskazanie na a Parametr formalny funkcji to wskaźnik a info Stos Copyright Roman Simiński Strona : 29

Przekazywanie przez wartość a przekazywanie wskaźnika do struktury Zmienne strukturalne mają często duży rozmiar. Przekazywanie ich przez wartość: zabiera dodatkową pamięć parametr formalny (alokowany na stosie) jest pełnowymiarową kopią parametru formalnego, trwa robienie kopii parametru aktualnego wywołania wymaga przesyłu pamięć-pamięć, potencjalnie dużej liczby bajtów, blokuje modyfikacje modyfikacje wykonane na parametrze formalnym funkcji nie przenoszą się na parametr wywołania funkcji. Copyright Roman Simiński Strona : 30

Przekazywanie przez wartość a przekazywanie wskaźnika do struktury Przekazywanie wskaźników do struktury: oszczędza pamięć parametr formalny (alokowany na stosie) zawiera jedynie adres parametru formalnego, jest szybkie przekazanie wskaźnika to przesył małej liczby bajtów, pozwala na modyfikacje modyfikacje wykonane na parametrze formalnym funkcji przenoszą się na parametr wywołania funkcji. Jeżeli modyfikacje obiektu wskazywanego mają być zabronione, używamy słowa kluczowego const w deklaracji parametru. void pokaz_info( const pojazd * info ) printf( \nmarka: %s, info->marka ); printf( \nmodel: %s, info->model ); printf( \nrok produkcji: %d, info->rok_prod ); printf( \ncena: %g, info->cena ); printf( \nprzebieg: %g, info->przebieg ); printf( \nnr rejestracyjny: %s, info->nr_rej ); } Copyright Roman Simiński Strona : 31

Przekazywanie referencji do struktur W języku C++ można przekazywać parametry referencyjne. Nie trzeba wtedy używać wskaźników, a działanie jest analogiczne. Referencja ustalona (const) nie pozwala na modyfikację parametru aktualnego wywołania. void pokaz_info( pojazd & info ) printf( \nmarka: %s, info.marka ); printf( \nmodel: %s, info.model ); printf( \nrok produkcji: %d, info.rok_prod ); printf( \ncena: %g, info.cena ); printf( \nprzebieg: %g, info.przebieg ); printf( \nnr rejestracyjny: %s, info.nr_rej ); } void pokaz_info( const pojazd & info ) printf( \nmarka: %s, info.marka ); printf( \nmodel: %s, info.model ); printf( \nrok produkcji: %d, info.rok_prod ); printf( \ncena: %g, info.cena ); printf( \nprzebieg: %g, info.przebieg ); printf( \nnr rejestracyjny: %s, info.nr_rej ); } Copyright Roman Simiński Strona : 32

Funkcja wczytująca zawartość struktury z stdin void czytaj_info( pojazd * info ) char bufor[ 128 ]; printf( "\nmarka: " ); gets( bufor ); if( strlen( bufor ) >= MAKS_M ) bufor[ MAKS_M - 1 ] = '\0'; strcpy( info->marka, bufor ); printf( "Model: " ); gets( bufor ); if( strlen( bufor ) >= MAKS_M ) bufor[ MAKS_M - 1 ] = '\0'; strcpy( info->model, bufor ); printf( "Rok produkcji: " ); gets( bufor ); info->rok_prod = atoi( bufor ); printf( "Cena: " ); gets( bufor ); info->cena = atof( bufor ); printf( "Przebieg: " ); gets( bufor ); info->przebieg = atof( bufor ); } printf( "Numer rejestracyjny: " ); gets( bufor ); if( strlen( bufor ) >= MAKS_R ) bufor[ MAKS_R - 1 ] = '\0'; strcpy( info->nr_rej, bufor ); Copyright Roman Simiński Strona : 33