Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <ctype.h>
- /*
- Во дадена датотека dat.txt да се најде најдолгиот ред во кој има барем 2 цифри. На стандарден излез да се испечатат знаците од најдолгиот ред кои се наоѓаат помеѓу првата и последната цифра (заедно со тие 2 цифри) во истиот редослед. Доколку има повеќе такви редови се печати последниот. Се претпоставува дека ниту еден ред на датотеката не е подолг од 100 знаци.
- Пример.
- Влез:
- dat.txt:
- aaa123aa222aa2aaa23aaaaa22
- aaaaaaaaaaaa 23aaaa
- 123 aaa aaa aaa aaa 12345 aaa aaa 2a
- Излез:
- 123 aaa aaa aaa aaa 12345 aaa aaa 2
- For example:
- Input
- aaa123aa222aa2aaa23aaaaa22 11112 222311111
- aaa123aa222aa2aaa23aaaaa22 11112 aaaaaaaa1
- aaa123aa222aa2aaa23aaaaa22 11112 2a23111a1
- aaa123aa222aa2aaa23aaaaa22 11112 222311aa1
- aaa123aa222aa2aaa23aaaaa22 11112 222311111
- aaa123aa222aa2aaa21aa11122 11112 aaaa11111
- 1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- Result
- 123aa222aa2aaa21aa11122 11112 aaaa11111
- */
- #define MAX 101
- // ne menuvaj ovde
- void wtf() {
- FILE *f = fopen("dat.txt", "w");
- char c;
- while((c = getchar()) != EOF) {
- fputc(c, f);
- }
- fclose(f);
- }
- int main() {
- wtf();
- FILE *dat;
- if ((dat = fopen("dat.txt","r")) == NULL){
- fprintf(stderr,"ERROR");
- return -1;
- }
- char niza[MAX];
- char najniza[MAX];
- char c;
- int i,j;
- int naj=0,br;
- int dol,start,end;
- int finstart,finend;
- while ((fgets(niza,100,dat)) != NULL){
- br = 0;
- dol = strlen(niza);
- for (i=0;i<dol;i++){
- if (isdigit(niza[i])){
- if (br == 0){
- start = i;
- }
- else{
- end = i;
- }
- br++;
- }
- }
- if ((br >= 2) && (dol >= naj)){
- naj = dol;
- strcpy(najniza,niza);
- finstart = start;
- finend = end;
- }
- }
- for (;finstart<=finend;finstart++){
- printf("%c",najniza[finstart]);
- }
- fclose(dat);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement