27 maj
Laboratoria nr 13 program nr 1
Przekazywanie argumentów do funkcji przez wartość i referencje. Rekurencyjne wywołanie funkcji. Argumenty funkcji main.
#include "stdafx.h" #include <string> #include <iostream> using namespace std; /** Podstawowa struktura do przetwarzania w programie */ struct statStr { std::string uName; int cLetter; int cToken; }; /** Prototyp funkcji do uzupelniania struktury Struktura przekazywana jest przez referencje a nie wartosc. Jesli ktoras grupa chce korzystac z tego rozwiazania, to prosze podac uzasadnienie tego zabiegu oraz tego jak takie przekazywanie dziala. Proponuje zastosowania przekazywania przez wartosc, ktore latwiej jest na poczatku zrozumiec. */ void fillStr(statStr &sStr); /** Prototyp funkcji do pokazywania elementow (pol) struktury. Struktura przekazywana jest przez referencje a nie przez wartosc. Do czego sluzy modyfikator const w zapisie w przypadku gdy przekazujemy strukture przez referencje? Czy taki modyfikator jest potrzebny w przypadku przekazywania przez wartosc? Jesli ktoras grupa chce korzystac z tego rozwiazania, to prosze podac uzasadnienie tego zabiegu oraz tego jak takie przekazywanie dziala. Proponuje zastosowania przekazywania przez wartosc, ktore latwiej jest na poczatku zrozumiec. */ void showStr(const statStr &sStr); /** Prototy funkcji do laczenia pol struktury. Struktury przekazywane sa przez referencje a nie przez wartosc. Do czego sluzy modyfikator const w zapisie w przypadku gdy przekazujemy strukture przez referencje? Czy taki modyfikator jest potrzebny w przypadku przekazywania przez wartosc? Jesli ktoras grupa chce korzystac z tego rozwiazania, to prosze podac uzasadnienie tego zabiegu oraz tego jak takie przekazywanie dziala. Proponuje zastosowania przekazywania przez wartosc, ktore latwiej jest na poczatku zrozumiec. */ statStr joinStr(const statStr &sStr1, const statStr &sStr2); /** Prototyp funkcji do zliczania ilosci znakow w podanym lancuhcu @todo :: Dla zaintersowanych - sprawdzenie co to jest przeciazanie funkcji @todo :: Alterantywnie mozna napisac funkcje przetwarzajaca tablice znakow. @todo :: Dla zaintersowanych - Tworzenie przeciazonej wersji funkcji cLetter pobierajaca jako argument tablice znakow */ int cLetter(string s); /** Prototyp funkcji do zliczania ilosci wyrazen w podanym lancuchu @todo :: Alterantywnie mozna napisac funkcje przetwarzajaca tablice znakow. @todo :: Dla zaintersowanych - sprawdzenie co to jest przeciazanie funkcji @todo :: Dla zaintersowanych - Tworzenie przeciazonej wersji funkcji cToken pobierajaca jako argument tablice znakow */ int cToken(string s); /** Program prezentujacy mozliwosc wykorzystania funkcji operujacych na zdefiniowanej strukturze. @author Marcin Mironczuk */ int main() { using namespace std; // Tworzenie zmiennych o typie statStr (struktura) statStr s1, s2; // Tworzenie zmiennej przechowujacej informacje z obu ww. struktur statStr sumaStr; // Uzupelnianie struktur fillStr(s1); fillStr(s2); std::cout << std::endl; // Pokazanie zawartosci struktur showStr(s1); showStr(s2); // Polaczenie struktur sumaStr = joinStr(s1, s2); // Pokazanie zawartosci struktury polaczonej showStr(sumaStr); std::cin.get(); std::cin.get(); return 0; } void fillStr(statStr &sStr) { std::string temp; int countLetter = 0; int countToken = 0; std::cout << "Podaj imie i nazwisko: " << std::endl; getline(std::cin, sStr.uName); std::cout << "Podaj lancuch do wprowadzenia: " << std::endl; getline(std::cin, temp); countLetter = cLetter(temp); countToken = cToken(temp); sStr.cLetter = countLetter; sStr.cToken = countToken; } void showStr(const statStr &sStr) { std::cout << "Podane imie i nazwisko to: " << sStr.uName << std::endl; std::cout << "Ilosc znakow w wprowadzonym lancuchu to: " << sStr.cLetter << std::endl; std::cout << "Ilosc wyrazen w wprowadzonym lancuchu to: " << sStr.cToken << std::endl; std::cout << std::endl; } statStr joinStr(const statStr &sStr1, const statStr &sStr2) { // Algorytm sumowania pol przekazywanych struktur statStr s; return s; } int cLetter(string s) { return s.length(); } int cToken(string s) { // Algorytm zaimplementowany na wczesniejszych zajeciach return 0; }
Skomentuj ten wpis