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;
}