Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2.
- #include <stdio.h>
- #include <stdlib.h>
- struct Grad {
- char naziv[30];
- int br_stanovnika;
- };
- void visak(char* s)
- {
- char* kraj = s;
- while(*kraj != '\0') kraj++;
- while(!(*kraj >= 'a' && *kraj <= 'z')) kraj--;
- *(kraj+1) = '\0';
- }
- int ucitaj(struct Grad *niz, int max)
- {
- int i = 0;
- FILE* extract = fopen("gradovi.txt","r");
- if(!extract) {
- printf("Greska pri otvaranju 'gradovi.txt'!");
- exit(1);
- }
- while(fscanf(extract, "%[^0-9] %d", niz[i].naziv, &niz[i].br_stanovnika) == 2 && i < max) {
- visak(niz[i].naziv);
- i++;
- }
- fclose(extract);
- return i;
- }
- void zapisi(struct Grad *niz, int vel, int min_st)
- {
- FILE* izlaz = fopen("izlaz.txt","w");
- if(!izlaz) {
- printf("Greska pri otvaranju 'gradovi.txt'!");
- exit(1);
- }
- for(int i = 0; i < vel; i++) {
- if(niz[i].br_stanovnika > min_st) {
- fprintf(izlaz,"%s\n",niz[i].naziv);
- }
- }
- fclose(izlaz);
- }
- void ispis(struct Grad *niz, int vel, char c)
- {
- char* poq;
- for(int i = 0; i < vel; i++) {
- poq = niz[i].naziv;
- if(*poq == c)
- printf("%s\n",niz[i].naziv);
- }
- }
- int main()
- {
- /* Puno gradova */
- int i, br_gradova;
- struct Grad gradovi[10000];
- FILE* ulaz = fopen("gradovi.txt", "w");
- char tekst[] = "A B C Grad";
- for (i=10000; i<20000; i++) {
- fprintf(ulaz, "%s %d", tekst, i);
- fputc(10, ulaz);
- tekst[0]++;
- if (tekst[0] > 'Z') {
- tekst[0] = 'A';
- tekst[2]++;
- }
- if (tekst[2] > 'Z') {
- tekst[2] = 'A';
- tekst[4]++;
- }
- if (tekst[4] > 'Z') {
- tekst[4] = 'A';
- }
- }
- fclose(ulaz);
- br_gradova=ucitaj(gradovi, 10000);
- ispis(gradovi, br_gradova, 'Z');
- return 0;
- }
- 3.
- #include <stdio.h>
- #include <string.h>
- struct Student {
- char ime[20];
- char prezime[20];
- };
- struct Ocjena {
- struct Student s;
- char predmet[100];
- int ocjena;
- };
- struct Predmet {
- int id;
- char naziv[100];
- float prosjek;
- };
- int uporedi(struct Student s1, struct Student s2)
- {
- if(!(strcmp(s1.ime,s2.ime) || strcmp(s1.prezime,s2.prezime))) return 1;
- return 0;
- }
- struct Student top_student(struct Ocjena o[],int vel)
- {
- struct Student maxStudent;
- struct Student tmp;
- double prosjek=0;
- double maxProsjek=0;
- double suma=0;
- int brojOcjena=0;
- int i,j;
- for(i=0; i<vel; i++) {
- suma=0;
- prosjek=0;
- brojOcjena=0;
- tmp=o[i].s;
- for(j=0; j<vel; j++) {
- if(uporedi(tmp,o[j].s)) {
- suma+=o[j].ocjena;
- brojOcjena++;
- }
- }
- prosjek=suma/brojOcjena;
- if(prosjek>maxProsjek) {
- maxStudent=tmp;
- maxProsjek=prosjek;
- }
- if(prosjek==maxProsjek) {
- if(strcmp(maxStudent.prezime,tmp.prezime)>0) maxStudent=tmp;
- }
- }
- return maxStudent;
- }
- int main() {
- printf("ZSR 13, Zadatak 3");
- return 0;
- }
- 4.
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct Grad {
- char naziv[20];
- int br_stanovnika;
- };
- struct Drzava {
- char naziv[50];
- struct Grad glavni;
- };
- struct Regija {
- char naziv[50];
- struct Grad glavni;
- };
- int filtriraj(struct Drzava *niz1, int vel1,struct Regija *niz2, int vel2)
- {
- for(int i = 0; i < vel1; i++) {
- if(niz1[i].naziv[0] == 'Z') {
- for(int k = i; k < vel1-1; k++) {
- niz1[k] = niz1[k+1];
- }
- vel1--;
- i--;
- }
- if(i<0) continue;
- if(niz1[i].glavni.br_stanovnika < 10000) {
- for(int k = i; k < vel1-1; k++) {
- niz1[k] = niz1[k+1];
- }
- vel1--;
- i--;
- }
- if(i<0) continue;
- for(int j = 0; j < vel2; j++) {
- if(!strcmp(niz1[i].glavni.naziv,niz2[j].glavni.naziv)) {
- for(int k = i; k < vel1-1; k++) {
- niz1[k] = niz1[k+1];
- }
- vel1--;
- i--;
- }
- }
- }
- return vel1;
- }
- int ucitaj_drzave(struct Drzava *niz, int vel){
- FILE* fp = fopen("drzave.dat","rb");
- if(!fp){
- printf("Greska pri otvaranju 'drzave.dat'!");
- exit(1);
- }
- int i = 0;
- while(!ferror(fp) && !feof(fp) && i < vel){
- fread(&niz[i],sizeof(struct Drzava),1,fp);
- i++;
- }
- fclose(fp);
- return i;
- }
- int ucitaj_regije(struct Regija *niz, int vel){
- FILE* fp = fopen("regije.txt","r");
- if(!fp){
- printf("Greska pri otvaranju 'regije.txt'!");
- exit(1);
- }
- int i = 0;
- while(fscanf(fp, "%[^,],%[^,],%d\n",niz[i].naziv,niz[i].glavni.naziv,&niz[i].glavni.br_stanovnika) == 3 && i < vel){
- niz[i].glavni.naziv[19] = '\0';
- i++;
- }
- fclose(fp);
- return i;
- }
- struct Grad max_glavni(struct Drzava *niz, int vel){
- int i,j;
- struct Grad max;
- for(i = 0; i < vel; i++){
- max = niz[i].glavni;
- for(j = 0; j < vel; j++){
- if(niz[j].glavni.br_stanovnika > max.br_stanovnika)
- max = niz[j].glavni;
- }
- return max;
- }
- }
- void drzave_regije(struct Drzava *niz1, int vel1, struct Regija *niz2, int vel2){
- struct Grad max = max_glavni(niz1,vel1);
- for(int i = 0; i < vel2; i++){
- if(!strcmp(max.naziv,niz2[i].glavni.naziv))
- printf("%s\n",niz2[i].naziv);
- }
- }
- void zapisi_regije(struct Regija *niz, int vel){
- FILE *fp = fopen("regije.txt","w");
- if(!fp){
- printf("Greska pri otvaranju 'regije.txt'!");
- exit(1);
- }
- int i = 0;
- while(i < vel){
- fprintf(fp,"%s,%s,%d\n",niz[i].naziv,niz[i].glavni.naziv,niz[i].glavni.br_stanovnika);
- i++;
- }
- fclose(fp);
- }
- int main()
- {
- printf("ZSR 13, Zadatak 4");
- return 0;
- }
- 5.
- #include <stdio.h>
- struct Zaposlenik{
- char ime_prezime[40];
- int id_zadatka;
- int sektor;
- };
- struct Zadaci{
- int id;
- char opis[100];
- int sektor;
- };
- void unesi(char niz[], int velicina) {
- char znak = getchar();
- if (znak == '\n') znak = getchar();
- int i = 0;
- while(i < velicina - 1 && znak != '\n') {
- niz[i] = znak;
- i++;
- znak = getchar();
- }
- niz[i]='\0';
- }
- void zadatak_gotov(struct Zadaci *z, int id, int broj){
- int i;
- for(i = 0; i < broj; i++){
- if(z[i].id == id){
- for(int j = i; j < broj-1;j++){
- z[j] = z[j+1];
- }
- }
- }
- }
- void obrisan_zad(struct Zaposlenik *z, int vel, int id){
- for(int i = 0; i < vel; i++){
- if(z[i].id_zadatka == id)
- z[i].id_zadatka = -1;
- }
- }
- void obrisi_zaposlenika(struct Zaposlenik *z, int id, int broj){
- for(int i = id; i < broj-1; i++){
- z[i] = z[i+1];
- }
- }
- void azurirajZaposlene(struct Zaposlenik *z, int vel){
- FILE* azuriraj = fopen("zaposleni.txt","w");
- int i = 0;
- while(i < vel){
- fprintf(azuriraj,"%40s%d%d\n",z[i].ime_prezime,z[i].id_zadatka,z[i].sektor);
- i++;
- }
- fclose(azuriraj);
- }
- void azurirajZadatke(struct Zadaci *z, int vel){
- FILE* azuriraj = fopen("zaposleni.txt","w");
- int i = 0;
- while(i < vel){
- fprintf(azuriraj,"%d%100s%d\n",z[i].id,z[i].opis,z[i].sektor);
- i++;
- }
- fclose(azuriraj);
- }
- void noviZaposlenik(struct Zaposlenik *z, int vel){
- printf("Ime i prezime: ");
- unesi(z[vel].ime_prezime,40);
- z[vel].id_zadatka = -1;
- printf("Sektor: ");
- scanf("%d",&z[vel].sektor);
- }
- int noviZadatak(struct Zadaci *niz1, int vel1, struct Zaposlenik *niz2, int vel2){
- printf("ID: ");
- scanf("%d",&niz1[vel1].id);
- printf("Opis: ");
- unesi(niz1[vel1].opis,100);
- printf("Sektor: ");
- scanf("%d",&niz1[vel1].sektor);
- for(int i = 0; i < vel2; i++){
- if((niz1[vel1].sektor == niz2[i].sektor) && (niz2[i].id_zadatka == -1)){
- niz2[i].id_zadatka = niz1[vel1].id;
- return 1;
- }
- }
- return -1;
- }
- int main() {
- struct Zaposlenik zaposleni[1000];
- struct Zadaci lista[1000];
- FILE* upis = fopen("zaposleni.txt","r");
- if(!upis){
- printf("Greska pri otvaranju 'zaposleni.txt'!");
- return 1;
- }
- int i = 0;
- while(fscanf(upis,"%40s%d%d\n",zaposleni[i].ime_prezime,&zaposleni[i].id_zadatka,&zaposleni[i].sektor) == 3 && i<1000)
- i++;
- int vel1 = i;
- fclose(upis);
- upis = fopen("zadaci.txt","r");
- if(!upis){
- printf("Greska pri otvaranju 'zadaci.txt'!");
- return 1;
- }
- i = 0;
- while(fscanf(upis,"%d%100s%d\n",&lista[i].id,lista[i].opis,&lista[i].sektor) == 3 && i<1000)
- i++;
- int vel2 = i;
- fclose(upis);
- return 0;
- }
- 10.
- #include <stdio.h>
- #include <string.h>
- struct Oblik {
- char naziv[20];
- int br_stranica;
- float stranice[300];
- };
- double obim(struct Oblik oblik)
- {
- int i;
- double o=0;
- for(i=0; i<oblik.br_stranica; i++) {
- o+=oblik.stranice[i];
- }
- return o;
- }
- int dodaj_oblik(struct Oblik oblik)
- {
- FILE* unos=fopen("oblici.dat","rb+");
- if(!unos) return 0;
- int n=0;
- fread(&n,2,1,unos);
- n++;
- fseek(unos,0,SEEK_SET);
- fwrite(&n,2,1,unos);
- fseek(unos,0,SEEK_END);
- fwrite(oblik.naziv,1,20,unos);
- fwrite(&oblik.br_stranica,1,1,unos);
- fwrite(oblik.stranice,4,oblik.br_stranica,unos);
- fclose(unos);
- return 1;
- }
- int izbaci_duple()
- {
- FILE* unos=fopen("oblici.dat","rb");
- if(!unos) return 0;
- struct Oblik oblici[1000]={0};
- int i=0,j,k;
- int n=0;
- fread(&n,2,1,unos);
- for(i=0; i<n; i++) {
- fread(oblici[i].naziv,1,20,unos);
- fread(&oblici[i].br_stranica,1,1,unos);
- fread(oblici[i].stranice,4,oblici[i].br_stranica,unos);
- }
- for(i=0; i<n; i++) {
- for(j=i+1; j<n; j++) {
- if(strcmp(oblici[i].naziv,oblici[j].naziv)==0) {
- for(k=j; k<n-1; k++) {
- oblici[k]=oblici[k+1];
- }
- n--;
- j--;
- }
- }
- }
- fclose(unos);
- unos=fopen("oblici.dat","wb");
- fwrite(&n,2,1,unos);
- for(i=0; i<n; i++) {
- fwrite(oblici[i].naziv,1,20,unos);
- fwrite(&oblici[i].br_stranica,1,1,unos);
- fwrite(oblici[i].stranice,4,oblici[i].br_stranica,unos);
- }
- fclose(unos);
- return n;
- }
- struct Oblik daj_najveci()
- {
- FILE* citaj=fopen("oblici.dat","rb");
- struct Oblik oblici[1000]= {0};
- int i=0;
- int n=0;
- fread(&n,2,1,citaj);
- for(i=0; i<n; i++) {
- fread(oblici[i].naziv,1,20,citaj);
- fread(&oblici[i].br_stranica,1,1,citaj);
- fread(oblici[i].stranice,4,oblici[i].br_stranica,citaj);
- }
- fclose(citaj);
- int maxIndex=0;
- int maxObim=obim(oblici[0]);
- for(i=1; i<n; i++) {
- if(obim(oblici[i])>maxObim) {
- maxObim=obim(oblici[i]);
- maxIndex=i;
- }
- }
- return oblici[maxIndex];
- }
- void ispisiBroj()
- {
- FILE* unos=fopen("oblici.dat","rb");
- unsigned short a=0;
- fread(&a,sizeof(a),1,unos);
- printf("Broj oblika: %d\n",a);
- struct Oblik oblici[10]= {0};
- int i,n;
- for(i=0; i<a; i++) {
- fread(&oblici[i].naziv,20,1,unos);
- fread(&oblici[i].br_stranica,1,1,unos);
- n=oblici[i].br_stranica;
- fread(&oblici[i].stranice,4,n,unos);
- }
- for(i=0; i<a; i++) {
- printf("Naziv: %s Broj stranica: %d\n",oblici[i].naziv,oblici[i].br_stranica);
- }
- fclose(unos);
- }
- int main()
- {
- //struct Oblik test = {"Sestougao", 6, {1,2,3,4,5,6}};
- //dodaj_oblik(test);
- //ispisiBroj();
- //FILE * pravi= fopen("oblici.dat","wb");
- struct Oblik rez = daj_najveci();
- printf("%s %g %g %g\n", rez.naziv, rez.stranice[0], rez.stranice[1], rez.stranice[2]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement