Vous êtes sur la page 1sur 4

1.

:
a) ,
b) , n (2<=n<=6);
c) cpy,
stringovi, cat,
rez_string;
d) ;
1.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BROJ 5
#define MAX 80

main(int argc, char *argv[])


{ int i;
char stringovi[BROJ][MAX+1], rez_string[BROJ*MAX+1]="";

printf("\nIme programa: %s", argv[0]);


printf("\nBroj ostalih podataka: %d", argc-1);

if( argc<3 || argc >7 )


{ printf("Nije odgovarajuci broj podataka u komandnoj liniji!");
exit(1);
}

if( !strcmp(argv[1],"-cpy") )
{ for(i=2; i<argc; i++)
strcpy(stringovi[i-2], argv[i]);

puts("\nRezultujuci niz stringova: ");


for(i=0; i<argc-2; i++)
puts(stringovi[i]);
}
else if( !strcmp(argv[1],"-cat") )
{ for(i=2; i<argc; i++)
strcat(rez_string, argv[i]);

puts("\nRezultujuci string: ");


puts(rez_string);
}
else
printf("Nije zadata odgovarajuca opcija!");
return 0;
}
2.
:
a) knjiga, :
naziv ( ),
autor ( ),
god_izdanja ( ),
tiraz ( );
b) ( ) spisak
n<=10 ,
;
c)
, , .
2.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 30
struct knjiga{
char naziv[MAX+1], autor[MAX+1];
int god_izdanja, tiraz; };
main( )
{ int i, j, k=0, n, tiraz, ponav;
struct knjiga *spisak, *spisak2, temp;
do{
printf("\nn: "); scanf("%d", &n); }while(n<1 || n>10);

spisak = malloc(n*sizeof(struct knjiga));


if(spisak==NULL) { printf("Greska dodele"); exit(1); }
spisak2 = malloc(n*sizeof(struct knjiga));
if(spisak2==NULL) { printf("Greska dodele"); exit(1); }

printf("\nPodaci za %d struktura(naziv autor godina_izdanja tiraz):\n", n);


for(i=0; i<n; i++)
scanf("%s%s%d%d", spisak[i].naziv, spisak[i].autor,
&spisak[i].god_izdanja, &spisak[i].tiraz);

for(i=0; i<n-1; i++)


{ ponav=0;
for(j=i+1; j<n; j++)
if( strcmp(spisak[i].naziv,spisak[j].naziv)==0)
ponav=1;
if( !ponav )
spisak2[k++]=spisak[i];
}
spisak2[k++]=spisak[n-1];

printf("\n\nSpisak bez ponavljanja: ");


for(i=0; i<k; i++)
printf("%s %s %d %d", spisak2[i].naziv, spisak2[i].autor,
spisak2[i].god_izdanja, spisak2[i].tiraz);

printf("\n\nTrazeni tiraz: "); scanf("%d", &tiraz);


for(i=0; i<k-1; i++)
for(j=i+1; j<k; j++)
if(spisak2[i].god_izdanja < spisak2[j].god_izdanja)
{ temp=spisak2[i]; spisak2[i]=spisak2[j]; spisak2[j]=temp; }

printf("\nKnjige koje imaju veci od zadatog tiraza:\n");


for(i=0; i<k; i++)
if(spisak2[i].tiraz > tiraz)
printf("%s %s %d %d\n", spisak2[i].naziv, spisak2[i].autor,
spisak2[i].god_izdanja, spisak2[i].tiraz);
free(spisak);
free(spisak2);
return 0;
}
}

3.
:
a) ( ) :
, , n<=0;
b) ,
: 1 ( ), -1 ( ) 0 (
);
c) poz_neg(),
,
1 / -1 / 0, .
3.
#include <stdio.h>
#include <stdlib.h>
int poz_neg(float niz[], int n);
main()
{ int i, n, n2=0, *novi;
float *niz;

/*Citanje i izdvajanje nizova iz jednog zadatog*/


printf("\nZadati niz spakovanih nizova:\n");
while(1)
{ scanf("%d", &n); if(n<=0) break;

/*dodela memorije za svaki izdvojeni niz*/


niz = malloc(n*sizeof(float));
if(niz==NULL) exit(1);

/*izdvajanje jednog niza u pomocni niz*/


for(i=0; i<n; i++)
scanf("%f ", &niz[i]);
if(!n2) /*za prvi izdvojeni niz*/
{ novi=malloc(sizeof(int));
if(novi==NULL) exit(1);
}
else /*za svaki sledeci izdvojeni niz*/
{ novi=realloc(novi, (n2+1)*sizeof(int));
if(novi==NULL) exit(1);
}
/*kreiranje novog elementa niza*/
novi[n2++] = poz_neg(niz, n);
/*oslobadjanje memorije za pomocni niz*/
free(niz); }
/*stampanje rezultata i oslobadjanje memorije*/
printf("\nNovi niz:\n");
for(i=0; i<n2; i++)
printf("%d ", novi[i]);
free(novi);
return 0; }
int poz_neg(float niz[], int n)
{ int i, broj_poz=0, broj_neg=0;

for(i=0; i<n; i++)


{ if(niz[i]>=0)
broj_poz++;
else
broj_neg++;
}
return( (broj_poz==broj_neg)? 0 : ( (broj_poz>broj_neg)? 1: -1) );
}

Vous aimerez peut-être aussi