Да се напише функција која на влез добива низа од знаци. Како резултат функцијата треба да врати колку зборови има во низата. Како збор се смета секоја низа од знаци која е одделена со празно место или со таб. Доколку се појават последователно повеќе празни места или табулари, да се остави првото празно место или таб, а сите останати да се отфрлат. Како резултат од фукнцијата исто така да се врати колку отфрлувања на празни места или табулари биле отфрлени.
Малку ја искомплицирав ама мислам дека ќе можеш да се снајдеш. Сега незнам како би можело тоа, “како резулатат од функцијата исто така да се врати колку одфрлања има“. Направив да ги печати во самата функција, и за да видиш како работи е напишано и да си печати на секоја стапка. Главниот момент е: буквата од низата(реченицата) што ја проверуваш, дали се наоѓа во збор или надвор од збор. Затоа има и еден флаг кој ќе е дигнат кога буквата е во збор и спуштен кога е надвор од збор, а броиме колку зборови има кога флагот го менува знакот. Ама па вака е малку лошо зашто на крајот, на последниот збор( или не-збор
![Насмевка :) :)](/styles/default/xenforo/smilies/smile.png)
, ако завршува реченицата со празни места) флагот нема да се смени, па затоа мора уште една проверка да правиш надвор од циклусот.
PHP:
#include <stdio.h>
#include <string.h>
int BrojNaZborovi(char *s)
{
int count = 0, otfrlanja = 0;
char *c = s;
int InWordFlag = 0;
for(int i = 0; i < strlen(s); i++)
{
if( *c != ' ' && *c != '\t')
{
printf("zbor: %c\n", *c);
InWordFlag = 1;
c++;
}
else
{
printf("ne :\n");
if(InWordFlag)
count++; otfrlanja++; c++;
InWordFlag = 0;
}
}
if(InWordFlag)
count++;
printf("OTFRLANJA: %d", otfrlanja);
return count;
}
Колку за проба еве ти и main фукнција
PHP:
int main()
{
int n = BrojNaZborovi(" Ova e nekakva bezvezna rechenica ");
printf("\n\n\nBroj na zborovi: %d \n", n);
}
Али како и да е, можеш на многу начини да проверуваш, пробај види си како ти е нај интересно. Можеш на пример да споредуваш две букви една до друга. Ако и двете се празни места, да ги прескокне, ако се различни, значи едната е збор, и накачуваш . . . инт инт.
--- надополнето: 6 август 2012 во 20:48 ---
Aко може некој просто да ми ги објасни Покажувачиве..
Нај едноставно: Покажувач кон адреса од меморијата.
Ете ти една опасна слика што ти кажува што се случува. На почеток се создаваат променлива од тип цел број, и покажувач кон цел број. Покажувачот може да зема вредност само од адреси, конкретно покажувачов adr, може да има вредност само од адреса на некаков цел број, зашто така е дефиниран. А кога создаваш една променлива од некаков тип, таа се создава во некој дел од меморијата и си има своја адреса. За да ја видиш таа адреса, се користи операторот &(незнам како се вика операторов на македонски - веројатно оператор за адреса
![Ерр.. Што? o_O o_O](/styles/default/xenforo/smilies/O_o.png)
). Ако сакаш баш да ја видиш адресата, пиши:
printf("%p", adr);
На таа третата слика ги врзуваш покажувачот и адресата на променливата одкако ќе ги врзеш arr и broj, пиши,
printf("%p", &broj );
и ќе видиш дека имаат иста адреса.
За да видиш кон каква вредност покажува еден покажувач, се користи операторот * ( пак незнам како е на мк). Дека arr и broj се врзани,ќе имаат иста вредност.
Пиши:
printf("%d", *adr);
printf("%d", broj );
и ќе имаат иста вредност.
А тоа за кога предаваш на функција аргумент по параметар или по адреса е нешто сосема друго. Меѓу другото тоа мислам дека го нема во Ц, туку во Ц++, и за вакви основни програмчниња нема да ти користат многу.
Ја би ти рекол, научи ги покажувачиве убаво, заедно со димамично алоцирање на меморија и почни да ги учиш тие структурите (struct). Нив кога ќе ги врзеш со покажувачите е интересно. И со тоа фактички основите на Ц ќе ти се готови.
Поздрав