Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <ctype.h>
- #define MAX 100
- /*
- Во дадена датотека 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
- */
- // 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!!11");
- return -1;
- }
- char niza[MAX][MAX];
- int kol=0;
- int red[MAX]={0,};
- char c;
- int nums=0;
- int maxred=0;
- int maxkol=0;
- int DELETOR;
- int i;
- while ((c = getc(dat)) != EOF){
- if (c == '\n'){
- DELETOR=0;
- for (i=red[kol];i!=-1;i--){
- if (isalpha(niza[kol][i])){
- DELETOR++;
- }
- if (isdigit(niza[kol][i])){
- break;
- }
- }
- red[kol]-=DELETOR;
- if ((nums >= 2) && (red[kol] >= maxred)){
- maxred = red[kol];
- maxkol = kol;
- }
- kol++;
- nums=0;
- continue;
- }
- if (isdigit(c)){
- nums++;
- }
- if (nums>0){
- niza[kol][red[kol]] = c;
- red[kol]++;
- }
- }
- for (i=0; i< maxred;i++){
- printf("%c",niza[maxkol][i]);
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment