Funkcje, ogólna struktura funkcji. Umieszczanie definicji funkcji w programie. Zmienne lokalne i globalne. Zasięg i widzialność identyfikatorów.
#include "stdafx.h"
#include <iostream>
#include <cstring>
// Stale okreslajace wielkosc zalokowanej pamieci dla wykorzystywanych tablic
const int ArrSize = 50;
const int tempArrSize = 50;
// Funkcja zliczająca ilość słów w podanym łańcuchu znaków
int getTokenCout(const char *str);
/**
*
* Program Główny prezentujący funckje C++ wyprowadzania treści na wyjście konsoli.
* Demonstracja przeniesienia strategii nr. 1 z Laboratoria nr 10 program nr 2 (http://profind.pl/2011/05/18/laboratoria-nr-10-program-nr-2/) do funkcji.
* Prosze zwrocic uwage na interpretacje znaku spacji. Algorytmy w dalszym ciągu jest
* w najprostszej postaci nie chronia przed podwojnymi spacjami. Mozna to wykryc poprzez wprowadzenie
* nastepujacego lancucha znakow: "1 2 3 "
*
* @author Marcin Mirończuk
*
*/
int main()
{
// Tablica przechowujaca lancuch podany przez uzytkownika
char slowa[ArrSize];
// Wprwadzanie lancucha znakow
std::cout << "Podaj slowa: " << std::endl;
std::cin.getline(slowa, ArrSize);
std::cout << "Ilosc wprowadzonych slow to: " << getTokenCout(slowa) << std::endl;
std::cin.get();
std::cin.get();
return 0;
}
// Modyfikator const - zabezpiecznie przed modyfikacja wartosci wskazanej
int getTokenCout(const char *str) {
// Ustawienie zmiennych tymczasowych
int k = 0;
int iloscSlow = 0;
// Przetwarzanie wprowadzonego lanucha znakow
for(int i = 0; i < strlen(str); i++) {
// Tymczasowa tablic do przechowywania znakow a nastepnie lanucha znakow w postaci osobnych tokenow
char temp[tempArrSize];
// Najprostszy sposob wykrywania spacji oraz konca lancucha
if(isspace(str[i]) || str[i+1] == '\0') {
temp[k] = '\0';
iloscSlow++;
k = 0;
temp[k] = '\0';
} else {
// Zapis znaku to tablicy tymczasowej
temp[k] = str[i];
k++;
}
}
return iloscSlow;
}