• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

Помош за задачава

  • Ја почнал/а темата
  • #1

sb_zakon

Intern
6 јуни 2008
7
0
Даден е некој текст во македонски јазик кој се состои од реченици одделени со точка и не содржи други интерпукциски знаци. Ако текстот е запишан во текстуална датотека со име TEKST.TXT, да се креира датотека STRANSKI.TXT која ке го содржи тој текст во форма која ја има абуџубурискиот јазик. Тој јазик е многу сличен со македонскиот и секој негов збор се добива ако на зборот на македонскиот јазик на крај се додаде Ar.

Пример:

Влез:
TEKST.TXT
Ako nekoj go zaboli glava daj mu da se napie apce i ke mu pomine. Ako

Излез:
STRANSKI.TXT
AkoAr nekojAr goAr zaboliAr glavaAr dajAr muAr daAr seAr napieAr apceAr iAr keAr muAr pomineAr. AkoAr
 

S

pwnz0r1lla
8 март 2007
1,550
52
www.it.com.mk
Programata bi odela nekako vaka:

Kje otvorish 2 stream-a edniot kon TEKST.TXT [vleznata] i drugiot kon STRANSKI.TXT [izlezna].
E sega ima povekje nachini da go storish ova no mi izgleda deka reshavash shkolska zadacha pa najchesto treba da ja chitash vleznata datoteka bukva po bukva i toa da go pravish zbor po zbor... Zborot zavrshuva koja noviot prochitan znak kje ti bide prazno mesto, od tuka ednostavno zborot koj si go prochital i koj si go zapishuval vo char string kje go zapishesh vo novata datoteka i po nego kje dodades 'Ar'.

Na kraj normalno kje gi zatvorish dvata stream-a.


Eve nekoj primer kod shto najdov za otvoranje i chitanje na datoteka:
Код:
#include <stdio.h>
#include <ctype.h>

int samog(char c){
    c = toupper(c);
return(c == 'A' || c == 'E' || c == 'O' || c == 'I' || c == 'U');
}

int main(int argc, char *argv[]){
FILE *dat;
int inword=0,i=0,br=0;
char word[16],c;

if(argc != 2) {
    printf("Usage %s dat.txt n",argv[0]);
    return(-1);
}

if((dat = fopen(argv[1],"r")) == NULL){
    printf("cant open %s n", argv[1]);
    return(-1);
}

while((c = fgetc(dat)) != EOF){
if(isalpha(c)){
    inword = 1;
    word[i] = c;
    i++;
}else{
    if(inword){
        inword = 0;
        word[i] = 0;
        if(i>4 && samog(word[0]) && !samog(word[i-1])){
            puts(word);
            br++;
        }
        i=0;
    }
 }
}

if(inword){
    word[i]=0;
    if(i>4 && samog(word[0]) && !samog(word[i-1])){
        puts(word);
        br++;
    }
}

printf("Counter %d words n",br);
return(0);
}
So taa razlika shto kodot broi nekoi si zborovi pogolemi od 4 bukvi koi zapochnuvaat so samoglaska i zavrshuvaat so soglaska.
 
  • Ја почнал/а темата
  • #3

sb_zakon

Intern
6 јуни 2008
7
0
Фала за ова ќе го разгледам, ама работиме со библиотеките <iostream> и <fstream> и автоматски се други командите и синтаксата :zbunet3:
 

no-no

Intern
17 април 2008
4
1
Здраво колега, иако помина испитот по ОП, сепак еве едно постапно решение на задачата.

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

void main()
{
string linija;
ifstream indat("tekst.txt");
ofstream outdat("stranski.txt");
if(indat.is_open() && outdat.is_open())
{

while(!indat.eof())
{
getline(indat,linija);
cout<<linija<<endl; //Proverka da vidime sto citame
for(int i=0; i<linija.size(); i++)
{
if(linija == ' ')
{
linija.insert(i,"Ar");
i=i+2;
}
if(linija == '.')
{
linija.insert(i,"AR");
i=i+3;
}
}
if(linija[linija.size()-1] != '.')
linija.append("Ar");
cout<<linija<<endl; //Proverka da vidime sto ke zapiseme
outdat<<linija<<"n";
}

}
indat.close();
outdat.close();
}
 

Нови мислења

Последни Теми

Статистика

Теми
43,530
Мислења
822,722
Членови
28,053
Најнов член
ro0tkid
На врв Дно