#include #include void obrada(int i[], int N); int main() { FILE *ulaz = fopen("ulaz.txt", "r"); int N; int *i, *dg, *gg; int j; if (ulaz == NULL) { printf("Neuspelo otvaranje datoteke \"ulaz.txt\"\n"); return EXIT_FAILURE; } if (fscanf(ulaz, "%d", &N) == EOF) { printf("Ne moze se procitati prvi broj\n"); return EXIT_FAILURE; } i = (int*) malloc(sizeof(int)*N); dg = (int*) malloc(sizeof(int)*N); gg = (int*) malloc(sizeof(int)*N); if (i == NULL || dg == NULL || gg == NULL) { printf("Nema dovoljno memorije\n"); return EXIT_FAILURE; } for (j = 0; j < N; ++j) { if (fscanf(ulaz, "%d%d", &dg[j], &gg[j]) == EOF) { printf("Nema dovoljno podataka u datoteci\n"); return EXIT_FAILURE; } if (dg[j] > gg[j]) { printf("Podaci u datoteci su neispravni\n"); return EXIT_FAILURE; } i[j] = dg[j]; } do { obrada(i, N); for (j = N - 1; j >= 0; --j) { if (i[j] < gg[j]) { int k; ++i[j]; for (k = j + 1; k < N; ++k) { i[k] = dg[k]; } break; } } } while (j >= 0); return EXIT_SUCCESS; } void obrada(int i[], int N) { int j; if (N > 0) { printf("%d", i[0]); } for (j = 1; j < N; ++j) { printf(", %d", i[j]); } printf(".\n"); }