Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- 1. Napišite program koji učitava broj N koji ne smije biti manji od 3 niti veći do 20
- Zatim kreirajte tekstualnu datoteku, pripremite za pisanje i upišite u nju broj N
- formatirano.
- N puta računajte slijedeće:
- - Generirajte slučajni cijeli broj M iz intervala [5, 15].
- - Generirajte M cijelih brojeva iz intervala [32,127] i uvrstite ih u dinamički alocirano
- polje od M elemenata.
- - Upišite u datoteku broj M i polje od M elemenata formatirano u jedan redak (zapis).
- - Sve to isto ispisujte na zaslonu monitora.
- - Oslobodite memoriju za prethodno alocirano polje.
- Nakon toga zatvorite datoteku.
- Na kraju izvršenja programa (na primjer, za N = 3) datoteka treba izgledati kao na
- primjeru:
- 3
- 7 55 53 125 80 68 45 48
- 8 59 63 90 73 41 113 50 53
- 5 94 58 78 46 103
- 2. Napišite funkciju koja će otvoriti datoteku iz prvog zadatka. Nakon toga treba učitati
- sve podatke iz datoteke, na isti način kako su prethodno u njoj zapisani.
- Ispisivati na zaslon sve zapise, a nakon učitavanja svih zapisa ispisati redni broj
- zapisa s najvećim zbrojem vrijednosti polja. Na kraju u funkciji zatvoriti datoteku i
- vratiti najveći pronađeni zbroj. Funkciju dodati u program iz prvog zadatka, pozvati
- na kraju glavne funkcije i ispisati najveći zbroj.
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- void fileOpen() {
- int procitano = 0, i = 0, j=0, loopCounter = 0, totalCounter = 0, suma = 0, maxRedak = 0, maxSuma = 0;
- char c[500];
- FILE *read = fopen("newDatoteka.txt", "r");
- //citanje prvog broja
- fscanf (read, "%d", &totalCounter);
- printf("\n%d", totalCounter);
- //petlja se vrti N puta (prvi broj iz fajla)
- for (j=0; j<totalCounter; j++) {
- //broj brojeva u redu
- fscanf (read, "%d", &loopCounter);
- printf("\n%d ", loopCounter);
- //petlja se vrti M puta (broj brojeva u redu)
- for (i=0; i<loopCounter; i++) {
- fscanf (read, "%d", &procitano);
- printf("%d ", procitano);
- //zbrajanje cijelog reda
- suma+=procitano;
- }
- //postavljanje najvece sume
- if (suma > maxSuma) {
- maxSuma = suma;
- maxRedak = j+1;
- }
- // resetiranje sume
- suma = 0;
- }
- printf ("\n\n\nNajveca suma je %d i nalazi se u %d. redu", maxSuma, maxRedak);
- fclose (read);
- }
- int main(){
- int N, M, i=0, j=0, interval2;
- int *polje;
- FILE *dat = fopen("newDatoteka.txt", "w");
- srand((unsigned int)time(NULL));
- printf("\nUpisite broj koji nije manji od 3 niti veci od 20: ");
- do {
- scanf("%d", &N);
- if (N<3 || N>20) printf ("\nPonovi unos: ");
- }
- while(N<=3||N>=20);
- fprintf(dat, "%d\n", N);
- for(i=0; i<N; i++){
- M=rand()%(15-5)+5;
- fprintf(dat, "%d ", M);
- polje = malloc(M * sizeof(int));
- for (j=0; j<M; j++) {
- polje[j] = rand()%(127-32)+32;
- fprintf(dat, "%d ", polje[j]);
- }
- fprintf(dat, "\n");
- }
- fclose(dat);
- free(polje);
- fileOpen();
- return 0;
- }
Add Comment
Please, Sign In to add comment