C/C++

Член од
20 јуни 2012
Мислења
147
Поени од реакции
40
Се моли некој life-saver да ми каже зошто функцијата за броење на зборови не ми работи со датотеки.
Ја тестирав цело време со внесување на низа , се функционира но кога ја ставив со датотеки не функционира дава некои погресни резултати.
Утре е испитот па ако може некој да даде брз одговор, мн ке ми помогне.

PHP:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int br_zb (char *s)
{
  char *p=s, *k ;
  int br=0,i;
 
  while ( *p != '\0' )
  {
      while ( isalpha(*p) == 0 )  p++;
 
      br++; k=p; i=0;
 
      while ( isalpha(*k) )  {  k++; i++; }
 
      p=k;
  }
  return br;
}
 
int main () {
 
int br=0;
 
char s[100];
char *p;
 
FILE *dat1, *dat2;
 
dat1 = fopen ( "zadaca3.txt" , "r" );
 
dat2 = fopen ( "rezultati.txt" , "w" );
 
 
while ( fgets(s,100,dat1) != NULL  )
 
{
    br=br+ br_zb(s);
    printf("%d  ",br);
}
 
 
 
fclose(dat1);
fclose(dat2);
 
 
return 0;
}
 
M

Mr.InF3ction

Гостин
maxmaster
Од кај ти е алгоритмот за броење зборови во реченица? :pos:
Кога и да имаш некој проблем со броење зборови користи го овој алгоритам што е подоле. Многу е добар и ако ти треба да броиш нешто внатре во зборот..пр согласки-самогласки, цифри, големи-мали букви итн ќе ти заврши работа :)
PHP:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
 
int br_zb (char *s)
{
    int brojZborovi = 0;
    int voZbor = 0; // od pocetok predpostavuvas deka ne si vozbor
    int i=0;
    while(s[i] != '\0')
    {
        if(isalpha(s[i]))
        {
                voZbor = 1;
        }
        else
        {
            if(voZbor)
            {
                brojZborovi++;
                voZbor = 0;
            }
        }
        i++;
 
    }
    if(voZbor)
        brojZborovi++;
 
    return brojZborovi;
}
 
 
int main ()
{
 
    int br=0;
 
    char s[100];
    char *p;
 
    FILE *dat1, *dat2;
 
    dat1 = fopen ( "zadaca3.txt" , "r" );
 
    dat2 = fopen ( "rezultati.txt" , "w" );
 
 
    while ( fgets(s,100,dat1) != NULL  )
 
    {
        br = br+ br_zb(s);
 
    }
 
    printf("%d  ",br);
    fprintf(dat2,"%d",br);
    fclose(dat1);
    fclose(dat2);
 
 
    return 0;
}
 
Член од
20 јуни 2012
Мислења
147
Поени од реакции
40
Mr.InF3ction fala za brziot odgovor

algoritam sto go postira e sigurno e podobar ama nemozev da se snajdam so nego koga mi teba da baram nesto vo zborot i zatoa izmisluvav nekoj moj sto ke mi e porazbirliv za mene , a toa ne znaci deka mojot e podobar.

najdov sto e greskata ili bagot vo mojot algoritam - samo namesto '\0' vo uslovot stavam '\n' za so datoteki i si funkcionira.

koristam i pokazuvaci za da znam tocno kade pocnuva i zavrsuva zborot pa da mozam da go listam i kako niza.

ovaj nacin go imam zapamteno i so ovaj planiram na ipit da odam zosto ako pocnam nov nacin da ucam sega ke mi se izmesa, se nadevam deka nema da izlezat nekoi drug greski so algorimot.
--- надополнето: 14 февруари 2013 во 00:46 ---
Mr.InF3ction

Izgleda na kraj pak ke go korsitam algoritmot sto go postira ti ,( mojov se tuku ke me iznenadi so nesto navistina neocekuvano ) neznam sto e problemot so datotekive.

However , dali mozis da mi kakzis kako bi provilo ( so algoritmot sto go postira ti )
- dali zborot zapocnuva na odredena bukva i zavrsuva na odredena cifra
- dali zborot e isti so zbor za sporeduvanje
- dolzina na zborot
- broenje samoglasi skoglaski - ova mislam deka e polesno
 
M

Mr.InF3ction

Гостин
Код:
while(s[i] != '\0')
    {
        if(isalpha(s[i]))
        {
             if(!voZbor) { // ako voZbor = 0 a si stignal do tuka znaci se naogas na pocetokot na zborot
                voZbor = 1;
               // i tuka pravis proverka dali pocnuva so nekoja bukva ili bilo sto povrzano so prvata bukva
            }
           
           //Ostanatiot del od zborot
           // tuka moze edna proverka za toa dali  (!isAlpha(s[i+1])
          // za poslednata bukva i pak  kako gore ke pravis proverki za toa sto ti treba bukva/cifra
 
        // vo ovoj del moze i da inkrementiras nekoja prolmenliva sto ke oznacuva dolzina na zbor
 
       // ili za soglaska samoglaska so proverki soodvetno inkrementiras brojac
        }
        else
        {
            if(voZbor)
            {
                brojZborovi++;
                voZbor = 0;
                // tuka znaci deka ne si vo zborot pa zatoa se zgolemuva broj na zborovi za +1
               // isto taka i se resetiraat site brojaci ,,br brsamoglaski, ili sto i da e  stavas na 0
            }
        }
        i++;
 
    }
    if(voZbor)
        brojZborovi++;
 
    return brojZborovi;
 
Член од
20 јуни 2012
Мислења
147
Поени од реакции
40
Mr.InF3ction
Thanks man, eve mu vleguvam vo sema so kodov, malce zakasnato, no ne zaboraveno.
Ova objasnuvanjevo so komentarive mn dobro i jasno, taman pobrzo da go razberam.
Me spasi vo posleden moment, kaj ke odev na ispit jas so mojot " besen " algoritam. :)
Aj ke vidime utre sto ke bidni.

Fala uste ednas.
 
Член од
12 јуни 2010
Мислења
200
Поени од реакции
61


дали ќе може малку помош со задачава од мендо е, немам никаква идеја како да ја решам, дали сеуште не сум учел таква функција или што е работата не ми текнува


Код:
Трајко
Дадена е низа од знаци која се состои само од зборовите duplo, troduplo и minus. На почетокот, Трајко има еден денар. Низата се чита по ред и ако се прочита duplo во низата од знаци, бројот на денари што ги има Трајко во тој момент се множи со 2 (се зголемува двојно), а ако се појави troduplo се множи со 3. Ако се прочита minus од парите кои ги има Трајко во моментот се одзема 1 денар. Потоа се продолжува со читање на нареден збор од низата.
 
Напишете програма која ќе пресмета колку денари има Трајко по извршувањето на горенаведените операции.
 
 
 
Влез
Влезот се состои од еден ред во кој се наоѓа низа од знаци составена само од зборовите duplo, troduplo и minus. Низата не содржи повеќе од 250 знаци.
 
 
 
Излез
Излезот се состои од еден ред во кој треба да отпечатите колку денари има Трајко по извршувањето на горенаведените операции.
 
 
 
Ограничувања
Временско ограничување: 1 секунда
Мемориско ограничување: 64 мегабајти
 
 
 
Примери
 
влез
TroDuPlotRoduPlodupLomInUsdUploMinusTroduplo
излез
99
 
M

Mr.InF3ction

Гостин
PHP:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
 
int main()
{
    char vlez[250];
    char duplo[] ="duplo";
    char troduplo[] ="troduplo";
    char mminus[] ="minus";
    int suma = 1;
    scanf("%s",vlez);
    int poz = 0;
    while(vlez[poz] !='\0'){
        if(tolower(vlez[poz]) == 'd'){
            suma = suma *2;
            poz+=strlen(duplo);
        }else if(tolower(vlez[poz]) =='t'){
            suma = suma * 3;
            poz+=strlen(troduplo);
        }else if(tolower(vlez[poz]) =='m'){
            suma--;
            poz+=strlen(mminus);
        }
        else{
            poz++;
        }
 
    }
    printf("%d", suma);
}
Ако се зема предид дека влезот се состои само од тие 3 збора ќе ти заврши работа :D
 
Член од
19 јули 2012
Мислења
19
Поени од реакции
1
Средна цифра

Направете програма која ќе ја најде средната цифра на даден троцифрен цел број K.

На пример, кај бројот 123 средната цифра е 2, кај бројот 311 средната цифра е 1, додека кај 759 средната цифра е 5.



Влез

Во првиот ред се наоѓа троцифрениот број K (100 <= K <= 999).


Излез

Излезот се состои од еден ред во кој треба да ја отпечатите средната цифра на дадениот број.


Ограничувања

Временско ограничување: 1 second
Мемориско ограничување: 64 megabytes

ako mozete da mi pomognete blagodaram odnapred
 

Indigo

баниран/а
Член од
8 септември 2012
Мислења
763
Поени од реакции
414
Ограничен, во кој програмски јазик?
 
Член од
19 јули 2012
Мислења
19
Поени од реакции
1
vo c++
--- надополнето: 21 февруари 2013 во 20:11 ---
brat ke mozes da mi objasnes ke ti bidam mnogu blagodaren
 
M

Mr.InF3ction

Гостин
Fords

Брат гледаш дека има посебна тема за C/C++, ако може нареден пат да постираш таму ќе ти бидам многу благодарен.
 

Indigo

баниран/а
Член од
8 септември 2012
Мислења
763
Поени од реакции
414
PHP:
int main()
 
{
 
int c;
 
ASD:
 
cin>>c;
 
if (c <= 99 || c >= 1000)
 
{
 
cout<<"Vneseniot broj treba da bide 3 cifren.";
 
goto ASD;
 
}
 
cout<<"Srednata cifra od vneseniot broj e "<<c / 10 % 10;
 
system("PAUSE");
 
}
Среќен божиќ.
Клучот на програмата е во делењето со остаток.
пример:
Внесуваш 894:
поделено на 10 ќе добиеш 89 (во променлива од типот "int" може да стои само цел број како вредност).
Е сега, кога еден број ќе поделиш со %, го добиваш остатокот од делењето. Да речеме 10 го делиш со 4. Остатокот е 2.
Па така и во овој случај, 89, поделено со 10 со остаток, добиваш 9. Нели, 8 * 10 = 80 (остануваат уште 9)

Се надевам ме сфати.
 
Член од
19 јули 2012
Мислења
19
Поени од реакции
1
nema problem a ke mozes li da mi pomognes i ke ja izbrisan posle temata pls ako moze samo daj mi ideja
--- надополнето: 21 февруари 2013 во 20:23 ---
int main()
{
int c;
ASD:
cin>>c;
if (c <= 99 || c >= 1000)
{
cout<<"Vneseniot broj treba da bide 3 cifren.";
goto ASD;
}
cout<<"Srednata cifra od vneseniot broj e "<<c / 10 % 10;
system("PAUSE");
}

Среќен божиќ.
Клучот на програмата е во делењето со остаток.
пример:
Внесуваш 894:
поделено на 10 ќе добиеш 89 (во променлива од типот "int" може да стои само цел број како вредност).
Е сега, кога еден број ќе поделиш со %, го добиваш остатокот од делењето. Да речеме 10 го делиш со 4. Остатокот е 2.
Па така и во овој случај, 89, поделено со 10 со остаток, добиваш 9. Нели, 8 * 10 = 80 (остануваат уште 9)

Се надевам ме сфати.
fala mnogu
 
Член од
23 април 2010
Мислења
10
Поени од реакции
0
Ke mozi li nekoj da mi pomogne, mi treba programa za predstavuvane na broj kako proizvod od prosti broevi. na pr za 12 = 2*2*3
 
Член од
10 јули 2012
Мислења
87
Поени од реакции
54
PHP:
int main()
{
    unsigned n;
    cin >> n;
    cout << n << " : ";
    for(int i = 2; i <= n; i++)
    {
      while(n % i == 0) { cout << i << "  "; n /= i; }
    }
}
Ако сакаш можеш наместо да ги печатиш во циклусот, да ги ставаш во некоја низа или како и да е. ;)
 

Kajgana Shop

На врв Bottom