Bir çox programmerin çətinlik çəktiyi bir sual. Tamami özüme aiddir. Zaten Text Manipulation dediktə Programmer-in yadina düşmelidir ki, o hansı sualdir. Biraz əziyyət cəkmisəm amma dəydi. Tam işləyir.
Bilməyənlər üçün sualın izahı:
Ingilis dilində:
Azərbaycan dilində
Programlama Dili: C++
Compiler: gnuc++
Tövsiyyə olunan Editor: CodeBlocks vəya Dev-C++
Kod:
#include <iostream>
#include <fstream>
#include <stdio.h>
int gw(FILE *g);
int checkdd(char c, char *delim);
int getword(FILE *g, char *word, char *delim);
using namespace std;
int main()
{ FILE *f=NULL; char w[100];
char dd[]={'.',',',' ',';',':','!','?',10,12,'\0'};
f=fopen("input.txt","r");
if(!f){cout<<"not"<<endl;return 0;}
while(1)
{
int t=getword(f,w,dd);
if(t==-1)break;
cout<<w<<endl;
}
return 0;
}
int gw(FILE *g)
{ char c;
if((fscanf(g,"%c",&c))==-1 )
{cout<<"end"<<endl;return -1;}
printf("%c",c);
return 0;
}
int getword(FILE *g, char *word, char *delim)
{ char c; int i=0;
while(1)
{
if( fscanf(g,"%c",&c) == -1){return -1;}
if(!checkdd(c, delim))break;
}
word[0] = c;
i = 1;
while(1)
{
if( fscanf(g,"%c",&c)==-1){return -1;}
if(!checkdd(c, delim))word[i++]=c;
else break;
}
word[i]='\0';
return 0;
}
int checkdd(char c, char *delim)
{
int i = 0;
while(delim[i] != '\0' && delim[i] != c) i++;
if(delim[i] == '\0') return 0;
return 1;
}
Sualınız olsa mənə yazın...