Laboratoria nr 12 program nr 2

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

Skomentuj ten wpis