You are on page 1of 87

#include <stdio.

h>
#define max 100
main()
{
int niz1[max], niz2[]={0,1,2,3,4}, i, n, suma=0;
do{
printf("Unesite dimenziju noza 1: ");
scanf("%d", &n);}while(n<1 || n>max);
printf("Unesite elemente niza 1 :\n");
for(i=0;i<n;i++) //unos elemenata
{
printf("Unesite %d. clan, ciji je indeks ustvari %d: ", i+1, i);
scanf("%d", &niz1[i]);
}
printf("Elementi niza 1: \n");
for(i=0;i<n;i++) //ispis svih elemenata
printf("%d\n", niz1[i]);
printf("\n");
printf("Elementi niza 2: \n");
for(i=0;i<5;i++)
printf("%d\n", niz2[i]);
for(i=0;i<n;i++)
suma+=niz1[i];
printf("Suma el niza 1 je suma=%d", suma);
printf("\n");
//obrnut ispis
printf("Clanovi niza 1 obrnuto: \n");
for(i=n; i>0; i--)
printf("%d\n", niz1[i-1]); //jer indeks pocinje od n-1
system("pause");
}
/*MAX MIN el niza, zamijeniti im mjesta, poredak elemenata*/
#include <stdio.h>
#define max 100
main()
{
int niz1[max], niz2[]={0,1,2,3,4}, i, n, suma=0, MAX, MIN, imax, imin, pom, pom1,
j;
do{
printf("Unesite dimenziju noza 1: ");
scanf("%d", &n);}while(n<1 || n>max);
printf("Unesite elemente niza 1 :\n");
for(i=0;i<n;i++) //unos elemenata
{
printf("Unesite %d. clan, ciji je indeks ustvari %d: ", i+1, i);
scanf("%d", &niz1[i]);
}
MAX=niz1[0];
MIN=niz1[0];
imax=0;
imin=0;
for(i=0;i<n;i++)
{
if(niz1[i]<MIN)
MIN=niz1[i];
if(niz1[i]>MAX)
MAX=niz1[i];
}
for(i=0;i<n;i++)
{
if(niz1[i]<niz1[imin])
imin=i;
if(niz1[i]>niz1[imax])
imax=i;
}

printf("max je %d. clan, MAX=%d, a min je %d. clan, MIN=%d.\n", imax+1,


MAX, imin+1, MIN);
//zamjena mjesta max i min clanu niza
//prvo pronalazk MAX I MIN pa imax i iminu ODVOJENIM PETLJAMA
for(i=1;i<n;i++)
{
if(niz1[i]>niz1[imax])
imax=i;
if(niz1[i]<niz1[imin])
imin=i;
}
pom=niz1[imax];
niz1[imax]=niz1[imin];
niz1[imin]=pom;
printf("Novi redoslijed niza 1: \n");
for(i=0;i<n;i++)
printf("%d\n", niz1[i]);
for(i=0;i<(n-1);i++)
{
for(j=i+1;j<n;j++) //da se porede 2 susjedna clana niza
{
if(niz1[i]>niz1[j]) //ako je prethodni veci od sledeceg nek
zamjene mjesta, analogno za nerastuci, tj, opadajuci poredak
{
pom1=niz1[i];
niz1[i]=niz1[j];
niz1[j]=pom1;
}
}}
printf("Niz 1 sortiran u neopadajucem, tj. rastucem poretku:\n");
for(i=0;i<n;i++)
printf("%d\n", niz1[i]);

system("pause");
}

//presek dva skupa predstavljena nizovima


#include <stdio.h>
main()
{
int a[50], b[50], c[50], n, m, i, j, k, p;
printf("unesite dimenzije skupova a i b\n");
scanf("%d %d", &n, &m);
printf("unesite elemente skupa a\n");
for(i=0; i<n; i++)
scanf("%d", &a[i]);
printf("unesite elemente skupa b\n");
for(j=0; j<m; j++)
scanf("%d", &b[j]);
k=0;
for(i=0; i<n; i++)
{
p=0;
j=0;
while(j<m && !p)
{
if (a[i] == b[j])
p=1;
j++;
}
if(p==1)
{
c[k]=a[i];
k=k+1;
}
}
printf("elementi skupa c su\n");
for(i=0; i<k; i++)
printf("%d ", c[i]);
//system("pause");
}
/*1. Napisati program na C-u kojim se sa tastature unosi niz celih brojeva A,
pri èemu su njegovi elementi višecifreni celi brojevi,
a potom se od njega formira drugi celobrojni niz B èiji su elementi jednaki pojedinaènim
ciframa elemenata niza A.*/

#include <stdio.h>
#define max 100
main()
{
int a[max], b[max], n, i, c, j=0, br=0; /*br el niza b*/
do{
printf("Unesite deimneziju niza a:\n ");
scanf("%d", &n);
}while(n<1 || n>max);
for(i=0;i<n;i++)
{
do{
printf("Unesite %d. element niza a: ", i+1);
scanf("%d", &a[i]);
}while(a[i]<10);
}
for(i=0;i<n;i++)
{
while(a[i]!=0)
{
c=a[i]%10;
a[i]/=10;
b[j]=c;
j++;
br++;
}
}
printf("Elementi niza b su:\n");
for(j=0;j<br;j++)
printf("%d\n",b[j]);
system("pause");
}
/*//2. Napisati program na C-u kojim se u celobrojnom nizu nalazi i
prikazuje element niza koji se javlja najmanji broj puta.*/

#include <stdio.h>
#define max 100
main()
{
int a[max], n, i, min, p, minb, b=0, j; /*br el niza b*/
do{
printf("Unesite deimneziju niza a:\n ");
scanf("%d", &n);
}while(n<1 || n>max);
for(i=0;i<n;i++)
{

printf("Unesite %d. element niza a: ", i+1);


scanf("%d", &a[i]);

}
min=n; //pretp da je n broj min javljanja
minb=a[0]; // pretp da je to prvi element niza, j je clan niza koji se najmanje
puta ponavlja
for(i=0;i<n;i++)
{
b=0; //vracanje pocetne vr za svakiclan niza
for(j=0;j<n;j++)
{
if(a[i]==a[j])
b++;
}
if(b<min)
{
min=b;
minb=a[i];
}
}
printf("Broj %d se javlja najmanji broj puta, tj. %d puta.\n", minb, min);

system("pause");
}
ŠTA AKO SE VIŠE BROJEVA JAVLJA MIN PUTA ?????
*RAZLIKA SKUPOVA_3. Data su dva skupa celih brojeva A od N elemenata i B od M elemenata.
Skupovi su predstavljeni celobrojnim nizovima. Napisati program na C-u kojim se odreðuje
skup C=A\B -To su elemnti iz A kojih nem u B.
A\B i B\A NIJE ISTOO!!!!!!*/
#include <stdio.h>
#define max 100
main()
{
int a[max],b[max], c[max],i,n,m, j, brojac=1,k=0, el=0;
do{
printf("Unesite deimneziju niza a:\n ");
scanf("%d", &n);
}while(n<1 || n>max);
for(i=0;i<n;i++)
{

printf("Unesite %d. element niza a: ", i+1);


scanf("%d", &a[i]);

}
do{
printf("Unesite deimneziju niza b:\n ");
scanf("%d", &m);
}while(m<1 || m>max);
for(i=0;i<m;i++)
{

printf("Unesite %d. element niza b: ", i+1);


scanf("%d", &b[i]);

}
for(i=0;i<n;i++)
{
brojac=0;
for(j=0;j<m;j++)
{
if(a[i]!=b[j])
brojac++; //jedino mi radi ako je poc vr brojaca jedan, a u uslovu
brojac==m, a za brojac=0 i uslov brojac=m-1 dobijem PRESJEK
}
if(brojac==(m)) //znaci da je clan razlicit od svih elemenata iz B
{
c[k]=a[i];
k++;
el++;
}
}
printf("Elementi razlike skupova su: \n");
for(k=0;k<el;k++)
printf("%d\n", c[k]);

system("pause");
}
/*UNIJA SKUPOVA_4. Data su dva skupa celih brojeva A od N elemenata i B od M elemenata.
Skupovi su predstavljeni celobrojnim nizovima. Napisati program na C-u kojim se odreðuje
skup C=A U B .
*/
#include <stdio.h>
#define max 100
main()
{
int a[max],b[max], c[max],i,n,m, j, brojac=1,k=0,u;
do{
printf("Unesite deimneziju niza a:\n ");
scanf("%d", &n);
}while(n<1 || n>max);
for(i=0;i<n;i++)
{
printf("Unesite %d. element niza a: ", i+1);
scanf("%d", &a[i]);

}
do{
printf("Unesite deimneziju niza b:\n ");
scanf("%d", &m);
}while(m<1 || m>max);
for(i=0;i<m;i++)
{

printf("Unesite %d. element niza b: ", i+1);


scanf("%d", &b[i]);

}
u=m+n; //broj elemenata unije skupova
for(i=0;i<n;i++)
{
c[k]=a[i];
k++;
}

for(i=0;i<m;i++)
{
c[k]=b[i];
k++;
}
printf("Elementi unije skupova su: \n");
for(k=0;k<u;k++)
printf("%d\n",c[k]);
system("pause");
}

/*//6. Napisati program na C-u kojim se u celobrojni niz èiji su elementi sortirani u
rastuæi redosled, umeæe 5 novih brojeva.
// Obezbediti da posle umetanja svakog broja niz ostane sortiran. Rezultujuæi niz
štampati na ekranu.*/

#include <stdio.h>
#define max 100
main()
{
int a[max],b[max], c[max],n,m, i, p,j, pom;
do{
printf("Unesite deimneziju niza:\n ");
scanf("%d", &m);
}while(m<1 || m>max);
n=m+5;
printf("Unesite prvi element niza: ");
scanf("%d", &a[0]);
p=a[0];
for(i=1;i<n-5;i++) //unosenje elemenata u rastucem poretku
{
do{
printf("Unesite %d. element niza a: ", i+1);
scanf("%d", &a[i]);
}while(p>a[i]);
p=a[i];
}
printf("Pocetni niz je : \n");
for(i=0;i<n-5;i++)
printf("%d\n", a[i]);

printf("Naknadno unesite 5 brojeva:\n");


for(i=0;i<5;i++)
{
printf("Unesite %d. dodatni clan", i+1);
scanf("%d", &a[m]);
m++;
}
//ponovno sortiranje
for(i=0;i<(n-1);i++)
{
for(j=i+1;j<(n);j++)
{
if(a[i]>a[j]) //prethodnik veci od sljedeceg
{
pom=a[i];
a[i]=a[j];
a[j]=pom;
}
}
}
printf("Sortirani niz sa novim elementima:\n ");
for(i=0;i<n;i++)
printf("%d\n", a[i]);

system("pause");
}

#include <stdio.h>
#include <string.h>
main()
{
char niz[50], novi[50];

int i, j=0, d=0, k=0;

do{
printf("Unesite niz karaktera: ");
gets(niz);

for(i=strlen(niz)-1; i>=0; i--)


{
novi[j++] = niz[i];
}
novi[j]='\0';

if(strcmp(niz, novi) == 0)
{
printf("\nUnesen je palindrom\n");
}
j=0;
}
while(strcmp(niz, novi) != 0);

#include <stdio.h>
#include <string.h>

main()
{
char niz[50];
int i, j, pal;
do{
pal = 1;
gets(niz);
for(i=0, j=strlen(niz)-1; i<strlen(niz), j>=0; i++, j--){
if(niz[i] != niz[j]){
pal = 0;
}
}
}while(pal == 0);

system("pause");

/* duzina niza stringova*/


#include <stdio.h>
main()
{
char niz[20];
int i, duzina=0;
scanf("%s", &niz);
for(i=0; niz[i]!= '\0';i++)
duzina++; //racunanje duzine niza
printf("Duzina niza karakter je %d.\n", duzina);
system("pause");
}
/* unijeti niz stringova i ispisati polovinu tog niza*/
#include <stdio.h>
main()
{
char niz[20], niz1[10];
int i, duzina=0;
scanf("%s", &niz);
for(i=0; niz[i]!= '\0';i++)
duzina++; //racunanje duzine niza
printf("Duzina niza karakter je %d.\n", duzina);
for(i=0;i<duzina/2;i++)
niz1[i]=niz[i];
niz1[duzina/2]='\0'; //INDIKATOR ZA KRAJ NIZA !!
printf("Novi niz je %s\n", niz1);
system("pause");
}
/* dva niza karaktera spojiti u jedan*/
#include <stdio.h>
main()
{
char niz[20], niz1[10], niz2[10];
int i, duzina=0, duzina1=0,j=0 /*j je brojac elemenata novog niza*/;
printf("Unesite prvi niz:\n ");
scanf("%s", &niz1);
for(i=0; niz1[i]!= '\0';i++)
duzina++; //racunanje duzine niza
printf("Duzina niza karakter je %d.\n", duzina);
printf("Unesite drugi niz: \n");
scanf("%s", &niz2);
for(i=0; niz2[i]!= '\0';i++)
duzina1++; //racunanje duzine niza
printf("Duzina niza karakter je %d.\n", duzina1);
for(i=0;niz1[i]!='\0';i++) //uslov za izlaz iz petlje je niz[i]!='\0';
niz[j++]=niz1[i];
for(i=0;niz2[i]!='\0';i++)
niz[j++]=niz2[i];
niz[j]='\0'; //ne zaboravljati ovo
printf("Spojeni niz je %s\n", niz);
system("pause");
}
/* brojanje pojavljivanja slova Z*/
#include <stdio.h>
main()
{
char niz[100];
int i, b=0;
printf("Unesite niz:\n");
scanf("%s", &niz);
for(i=0;niz[i]!='\0';i++) //prolazak kroz sve clanove niza
if(niz[i]=='Z')
b++;
printf("Broj pojavljivanja karaktera Z je %d.\n", b);

system("pause");
}
/*koliko je koje vrste znakova: v slova, m slova, cifre, ostalo*/
#include <stdio.h>
main()
{
char niz[100];
int i, v=0, m=0, c=0, o=0;
printf("Unesite niz:\n");
scanf("%s", &niz);
for(i=0;niz[i]!='\0';i++) //prolazak kroz sve clanove niza
{
if(niz[i]>='a' && niz[i]<='z')
m++;
else if(niz[i]>='A' && niz[i]<='Z')
v++;
else if(niz[i]>='0' && niz[i]<='9')
c++;
else
o++;
}
printf("Broj v slova je %d, br m slova je %d, br cifara je %d, ostalih je %d.\n",
m, v, c, o);

system("pause");
}
/*od unesenig niza formirati novi tkd svaka cifra bude zamijenjena sa 2 slova c: cc*/
#include <stdio.h>
main()
{
char niz[100], niz1[200]; //duzina novog niza duplo veca za slucaj da su sve
cifre, a max uneseno
int i, j=0;
printf("Unesite niz:\n");
scanf("%s", &niz);
for(i=0;niz[i]!='\0';i++) //prolazak kroz sve clanove niza
{

if(niz[i]>='0' && niz[i]<='9')


{
niz1[j]='c';
niz1[j+1]='c';
j+=2; //jer smo dva mjesta popunili
}
else
{ niz1[j]=niz[i]; //ili niz[j++]
j++;
}
}
niz1[j]='\0';
printf("Trazeni niz je %s\n", niz1);

system("pause");
}
/*od unesenig niza formirati novi tkd svaka malo slovo bude veliko
u ASCII idu prvo velika pa mala slova*/
#include <stdio.h>
main()
{
char niz[100], niz1[200]; //duzina novog niza duplo veca za slucaj da su sve
cifre, a max uneseno
int i, j=0;
printf("Unesite niz:\n");
scanf("%s", &niz);
for(i=0;niz[i]!='\0';i++) //prolazak kroz sve clanove niza
{

if(niz[i]>='a' && niz[i]<='z')

niz[i]=niz[i]-('a'-'A'); //da postane veliko dec vr mu se mora


smanjiti za razliku izmedju velikih i malih slova
else
niz1[i]=niz[i];

}
niz1[j]='\0';
printf("Transformisani niz je %s\n", niz);

system("pause");
}
/*ispis u obrnutom redoslijedu*/
#include <stdio.h>
main()
{
char niz[100], niz1[200]; //duzina novog niza duplo veca za slucaj da su sve
cifre, a max uneseno
int i, j=0, d=0;
printf("Unesite niz:\n");
scanf("%s", &niz);
//prvo nadjemo duzinu niza
for(i=0;niz[i]!='\0';i++)
d++;
for(i=d-1;i>=0;i--)//jer imamo d elemenata u nizu sa indexima od 0 do d-1
{niz1[j]=niz[i];
j++;}
niz1[j]='\0';
printf("Transformisani niz je %s\n", niz1);

system("pause");
}
#include <stdio.h>
main()
{
char niz1[20], niz2[20], niz[40];
int i, j, k=0;
scanf("%s", &niz1);
scanf("%s", &niz2);
for(i=0;niz1[i]|='\0';i++)
{
for(j=1;j<=3;j++)
{
if(niz[i]+j>'z')
niz[k]=niz1[i]+j-26;
else
niz[k]=niz[i]+j;
k++;
}
}
niz[k]='\0';
printf("%s\n", niz);
system("pause");
}
/* gdje su razmaci upisat R*/
#include <stdio.h>
main()
{
char s[50], r[50];
int i;
gets(s);
for(i=0;s[i]!='\0';i++)
if(s[i]==' ')
r[i]='R';
else
r[i]=s[i];
r[i]='\0';
printf("Transf niz je:\n ");
printf("%s",r); //ili puts(r);

system("pause");
}
/*PALINDORM*/
#include <stdio.h>
#include <string.h>
main()
{
char prvi[500], drugi[500];
int i, d=0, j=0;
gets(prvi);
// da bismo obrnuli niz prvo nam treba njegova duzina
for(i=0;prvi[i]!='\0';i++)
d++;
for(i=d-1;i>=0;i--)
{drugi[j++]=prvi[i];
}
drugi[j]='\0'; //NE ZAB****
if(strcmp(prvi,drugi)==0)
printf("JESTE PALINDROM!\n");
else
printf("NIJE PALINDROM !\n");
system("pause");
}
/*Omogućiti unošenje stringova sve dok se ne unese palindrom. Kada se unese palindrom
ispisati poruku
„Unesen je palindrom!“.
*/
#include <stdio.h>
#include <string.h>
main()
{
char prvi[333], drugi[333];
int i, d=0, j=0;
do{
i=0;
j=0;
d=0;
printf("Unesite string: \n");
scanf("%s", &prvi);
for(i=0;prvi[i]!='\0';i++)
d++;
for(i=d-1;i>=0;i--)
drugi[j++]=prvi[i];//j++ prvo uradi pa onda inkrementira
drugi[j]='\0';
if(strcmp(drugi,prvi)==0)
printf("PALINDROM JE UNESEN!\n");
}while(strcmp(drugi,prvi)!=0);
system("pause");
}
/*Ispitati da li je uneseni niz palindrom bez koristenja pomocnog niza;
*/
#include <stdio.h>
#include <string.h>
main()
{
char prvi[333];
int i, d=0, j=0;
do{
i=0;
j=0;
d=0;
printf("Unesite string: \n");
scanf("%s", &prvi);
for(i=0;prvi[i]!='\0';i++)
d++; //ili srlen(prvi)
for(i=0;i<d/2;i++)
if(prvi[d-i-1]==prvi[i]) //KRETANJE KROZ NIZ U DVA SMJERA
j=1;
if(j==1)
printf("UNIJET JE PALINDROM!\n");
}while(j!=1);
system("pause");
}
/*Napisati program koji pronalazi broj pojavljivanja trazenog pojma u unesenom tekstu.*/
#include <stdio.h>
#include <string.h>
main()
{
char tekst[100], pojam[100], pom[100];
int i, d, d1, puta=0, j;
printf("Unesite tekst: \n");
gets(tekst);
printf("Unesite pojam: \n");
gets(pojam);
d=strlen(tekst);
d1=strlen(pojam);
for(i=0; i<d;i++)
{
if(tekst[i]==pojam[0])
{
for(j=i;j<d1+i;j++)
{
pom[j-i]=tekst[j];
}
pom[j-i]='\0';
if(strcmp(pom,pojam)==0)
puta++;
}
}
printf("Trazeni pojam je pronadjen %d puta\n\n",puta);
system("pause");
}
Уноси се стринг са тастаруте чија је дужина 10. Омогућити да у случају да корисник унесе
краћи или дужи стирнг може да уноси све док не унесе стринг дужине 10, уз одговарајућу
поруку. Избацити из стринга свако појављивање подстринга "аb". Исписати тако
трансформисан стринг. Није дозвољен коришћење помоћног стринга.
#include<stdio.h>
#include<string.h>

main()
{
int i, n, z, j;
char str[80];
do{
printf("Unesi string duzine 10:");
gets(str);
n=strlen(str);
if(n<10)
printf("Duzina manja od 10.");
}while(n!=10);
z = n;
for(i=0; i<n; i++)
{
if(str[i]=='a' && str[i+1]=='b')
{
for(j=i; j<n; j++)
{
str[j]=str[j+2];
z-=2;
i-=2;
}
}
}
str[i]='\0';
puts(str);
system("pause");
}

Учитати низ карактера, па од њега креирати нови низ који се састоји од карактера учитаног
низа у обрнутом редослиједу с тим да је избачено свако појављивање слова а.
/*Учитати низ карактера,па од њега креирати нови низ који се састоји од карактера
учитаног низа у обрнутом редослиједу
с тим да је избачено свако појављивање слова а. */
#include <stdio.h>
#include <string.h>
main()
{
char s[100],s1[100];
int i, n, j=0;
gets(s);
n=strlen(s);
for(i=n-1;i>=0;i--)
{ if(s[i]!='a')
{
s1[j]=s[i];
j++;
}
}
s1[j]='\0';
puts(s1);

system("pause");
}

3.

Написати програм на C-у којим се унутар функције main() са тастатуре уноси стринг А, а
потом се врши трансформација стринга А тако што се сваке двије узастопне појаве карактера
G замјењују карактерима К. При трансформацији није дозовољено кориситити помоћне
низове.

Нпр. string A => abGGdeGMaGGba послије трансформације постаје

abKKdeGMaKКba

У функцији main() штампати трансформисани стринг.

/*Написати програм на C-у којим се унутар функције main() са тастатуре уноси стринг А,
а потом се врши трансформација стринга А тако што се сваке двије узастопне појаве
карактера G замјењују карактерима К.
При трансформацији није дозовољено кориситити помоћне низове. */
#include <stdio.h>
#include <string.h>
main()
{
char A[100];
int i, n, j=0;
gets(A);
n=strlen(A);
for(i=0;i<n;i++)
{
if(A[i]=='K' && A[i+1]=='K')
{
A[i]='G';
A[i+1]='G';
}
}
puts(A);
system("pause");
}

4. У функцији main() уноси се са тастатуре стринг. Трансформисати тај стринг тако да се из


сринга избаце сви вишеструки размаци. Ако је један рамак између карактера не уклања се, а
ако је два или више размака уклања се сваки размак. Штампати стринг послије
трансформације. Није дозвољено коришћење помоћног стринга.
#include <stdio.h>
#include <string.h>
main()
{
char niz1[50], niz2[50];
int i, brojac=0, razmak = 0, n, j;

gets(niz1);

n = strlen(niz1);
for(i=0; i<strlen(niz1); i++){
if(niz1[i] == ' '){
brojac++;
razmak = 1;
}
else{
razmak = 0;
}
if(razmak == 0 && brojac >1){
for(j=i-brojac; j<strlen(niz1); j++){
niz1[j] = niz1[j+brojac];
}
n-=brojac;
brojac = 0;
}
else if(razmak == 0 && brojac <=1){
brojac = 0;
}
}
niz1[n] = '\0';

puts(niz1);
system("pause");
}

#include<stdio.h>
#include<string.h>

// elemente i-te vrste pomjera za i+1 mjesta ulijevo


main()
{
int red, kol, br_red_kol, i=0, k=0, pom, j;
int matrica[50][50];

printf("Unesite dimenziju kvadratne matrice: ");


scanf("%d", &br_red_kol);

printf("\nUnesite elemente matrice: \n");


for(red=0; red<br_red_kol; red++)
{
for(kol=0; kol<br_red_kol; kol++)
scanf("%d", &matrica[red][kol]);
}

printf("\nUnesena matrica je: \n");


for(red=0; red<br_red_kol; red++)
{
for(kol=0; kol<br_red_kol; kol++)
printf("%d\t", matrica[red][kol]);

printf("\n");
}

for(red=0; red<br_red_kol; red++)


{
for(k=0; k<red+1; k++)
{
pom=matrica[red][0];
for(j=1; j<=br_red_kol-1; j++)
matrica[red][j-1] = matrica[red][j];

matrica[red][br_red_kol-1] = pom;
}
}
printf("\n Transformisana matrica je: \n");
for(red=0; red<br_red_kol; red++)
{
for(kol=0; kol<br_red_kol; kol++)
printf("%d\t", matrica[red][kol]);

printf("\n");
}
system("pause");
}

//MATRICE, UNOS, ISPIS, MIN, MAX ČLAN I NJIHOVI INDEKSI


#include <stdio.h>
#include <string.h>
main()
{
int mat[100][100], n, m, i, j, max, min,imax, jmax, imin, jmin;
do{
printf("Unesite broj redova matrica:\n ");
scanf("%d", &n);
}while(n<2 || n>100);
do{
printf("Unesite broj kolona matrice:\n");
scanf("%d", &m);
}while( m<2 || m>100); //ponovni unos ako se ne unesu odg dimenzije
printf("Ukupan broj elemenata matrice je %d.\n",n*m);
printf("Unesite elemente matrice: \n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("mat[%d][%d]: ",i+1,j+1); //da korisnik fino vidi koji element, koje
indekse unosi
scanf("%d", &mat[i][j]);
printf("\n"); // da se predje u novi red nakon sto se prethodni popuni
}
}
printf("Unesena matrica je: \n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n"); // da se predje u novi red nakon sto se prethodni ispise
}
max=mat[0][0];
imax=0;
jmax=0;
min=mat[0][0];
imin=0;
jmin=0;
//MAX I MIN ELEMENT MATRICE
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(mat[i][j]>max)
{
max=mat[i][j];
imax=i;
jmax=j;
}
if(mat[i][j]<min)
{
min=mat[i][j];
imin=i;
jmax=j;
}
}
}
printf("MAX element je %d, na poziciji [%d][%d], a MIN element je %d, na poziciji [%d]
[%d].\n", max, imax+1, jmax+1, min, imin+1, jmin+1); //da korisnik bolje zna koji je
indeks jer u C indeks ide od 0.
system("pause");
}
//suma elemenata na glavnoj dijagonali, proizvod onih koji nisu
#include <stdio.h>
#include <string.h>
main()
{
int mat[100][100], n, m, i, j, p=1, s=0, b=0, b1=0;
do{
do{
printf("Unesite broj redova matrica:\n ");
scanf("%d", &n);
}while(n<2 || n>100);
do{
printf("Unesite broj kolona matrice:\n");
scanf("%d", &m);
}while( m<2 || m>100); //ponovni unos ako se ne unesu odg dimenzije
printf("Ukupan broj elemenata matrice je %d.\n",n*m);
printf("Unesite elemente matrice: \n");
if(n!=m)
printf("Matrica nije kvadratna. Ponoviti unos. \n");
}while(n!=m); //MATRICA MORA BITI KVADRATNA
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("mat[%d][%d]: ",i+1,j+1); //da korisnik fino vidi koji element, koje
indekse unosi
scanf("%d", &mat[i][j]);
printf("\n"); // da se predje u novi red nakon sto se prethodni popuni
}
}
printf("Unesena matrica je: \n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n"); // da se predje u novi red nakon sto se prethodni ispise
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i==j)
{
s+=mat[i][j];
b++;
}
else
{p*=mat[i][j];
b1++;}
}
}
printf("Na glavnoj dijagonali je %d elemenata, njihova suma je %d, na njoj NIJE %d
elemenata, njihov proizvod je %d.\n", b, s, b1, p);
system("pause");
//inkrementacija elemenata na glavnoj dijagonali, x2 ispod, x3 iznad nje
#include <stdio.h>
#include <string.h>
main()
{
int mat[100][100], n, m, i, j, p=1, s=0, b=0, b1=0;
do{
do{
printf("Unesite broj redova matrica:\n ");
scanf("%d", &n);
}while(n<2 || n>100);
do{
printf("Unesite broj kolona matrice:\n");
scanf("%d", &m);
}while( m<2 || m>100); //ponovni unos ako se ne unesu odg dimenzije
printf("Ukupan broj elemenata matrice je %d.\n",n*m);
printf("Unesite elemente matrice: \n");
if(n!=m)
printf("Matrica nije kvadratna. Ponoviti unos. \n");
}while(n!=m); //MATRICA MORA BITI KVADRATNA
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("mat[%d][%d]: ",i+1,j+1); //da korisnik fino vidi koji element, koje
indekse unosi
scanf("%d", &mat[i][j]);
printf("\n"); // da se predje u novi red nakon sto se prethodni popuni
}
}
printf("Unesena matrica je: \n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n"); // da se predje u novi red nakon sto se prethodni ispise
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i==j)
mat[i][j]=mat[i][j]+1;
else if(i<j) //element IZNAD gl dijagonale
mat[i][j]*=2;
else
mat[i][j]*=3;

}
}
printf("Transformisana matrica je: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n"); //NE ZABORAVLJATI
}
system("pause");
}
//inicijalizacija matrice pri deklaraciji, sporedna dijagonala KVADRATNE MATRICE, IZNAD i
ISPOD nje
#include <stdio.h>
#include <string.h>
main()
{
int mat[4][4]={
{1,2,3},
{4,5,6},
{7, 8,9},
{10,11,12}
//PODRAZUMIJEVA SE DA JE ZADNJI ELEMNT 0 U SVAKOM REDU
}, k, r, i,j, d;
printf("Data matrice je:\n");
r=4;k=4; //POSTOJI LI NEKI NACIN DA SE ODREDE DIMENZIJE DATE MATRICE?
d=4; //jedna dimenzija jer je kvadratna
for(i=0;i<r;i++)
{
for(j=0;j<k;j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n");
}
//SPOREDNA DIJAGONALA
printf("Elementi na sporednoj dijagonali su:\n");
for(i=0;i<r;i++)
{
for(j=0;j<k;j++)
{
if(i+j==d-1)
printf("%d, \n", mat[i][j]);

}
}
//ispod sporedne
printf("Ispod sporedne su: \n");
for(i=0;i<r;i++)
{
for(j=0;j<k;j++)
{
if(i+j>d-1)
printf("%d, \n", mat[i][j]);

}
}
printf("Iznad sporedne su: \n");
for(i=0;i<r;i++)
{
for(j=0;j<k;j++)
{
if(i+j<d-1) //<= obuhvata i elementa NA sporednoj
printf("%d, \n", mat[i][j]);

}
}

system("pause");
}

//Element koji se javlja najvise puta i veci je od ostalih koji se javljaju isto toliko
puta
#include <stdio.h>
#include <string.h>
main()
{
int niz[100], n, i, max, p=0,b,b1,p1=0,j;
printf("Unesite dimenziju niza: \n");
scanf("%d",&n);
printf("Unesite brojni niz od %d brojeva.\n", n);
for(i=0;i<n;i++)
{
printf("Unesite %d. element niza: ", i+1);
scanf("%d", &niz[i]);
}
b=0; // b je max br ponavljanja
for(i=0;i<n;i++)
{
p=0;
for(j=0;j<n;j++)
{
if(niz[i]==niz[j])
p++;
}
if(b<p)
{
b=p;
max=niz[i];
}//b cuva max broj ponavljanja
}
for(i=0;i<n;i++)
{
p1=0;
for(j=0;j<n;j++)
{
if(niz[i]==niz[j])
p1++;
}
if(p1==b)
{
if(niz[i]>max)
max=niz[i];
}
}
printf("Max puta (%d puta) se javlja %d i njaveci je od svih koji se javljaju isto toliko
puta.\n",b,max);

system("pause");
}

//Element koji se najveci broj puta ponavlja, broj ponavljanja


#include <stdio.h>
#include <string.h>
main()
{
int niz[100], i, n, max, m, p=0, j;
m=0; //početna vr za max br ponavljanja
printf("Dimenzija niza je: \n");
scanf("%d", &n);
for(i=0;i<n;i++)
scanf("%d", &niz[i]);
for(i=0;i<n;i++)
{
p=0;
for(j=0;j<n;j++)
{
if(niz[i]==niz[j])
p++;
}
if(p>m)
{
m=p;
max=niz[i];
}
}
printf("Elemt niza %d se javlja max puta, tj. (%d) puta.\n", max, m);
system("pause");
}
//Element koji se pojavljuje k puta
#include <stdio.h>
#include <string.h>
main()
{
int niz[100],k,i,n,j,p=0,pon,m, b;
printf("Dimenzija niza je: \n");
scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("Unesite %d. element niza.\n",i+1);
scanf("%d", &niz[i]);
}
printf("Unesite broj ponavljanja: \n");
scanf("%d", &k);
for(i=0;i<n;i++)
{
p=0;
for(j=0;j<n;j++)
{
if(niz[i]==niz[j])
p++;
}
if(p==k)
{
b++;
pon=niz[i];
m=k;
}
}
printf("Element %d se javlja %d puta.\n", pon, m);
system("pause");
}
//Ime i prezime sa donjom crtom
#include<stdio.h>
#include <string.h>
main()
{
char ime[100], prezime[100], novi[201];
int i,j,n,m,d,k=0;
printf("Unesite Vase ime: \n");
gets(ime);
printf("\nUnesite Vase prezime: \n");
gets(prezime);
n=strlen(ime);
m=strlen(prezime);
//d=m+n+1; //ukupna duzina novog niza
for(i=0;i<n;i++)
{
novi[i]=ime[i];
}
novi[n]='_';
for(j=n+1;j<=m+n;j++) //posto je ukupno m+n+1 elemenata idemo do m+n, ukljucujuci i tu
poziciju
{
novi[j]=prezime[k];
k++;
}
novi[j]='\0';
printf("Trazeni niz karaktera je : \n");
puts(novi);
system("pause");
}
//izbacivanje samoglasnika iz stringa
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char a[100], s[100];
int i,j=0,n;
gets(a);
n=strlen(a);
for(i=0;i<n;i++)
if( (a[i]!='a') && (a[i]!='e') && (a[i]!='i') && (a[i]!='o') && (a[i]!='u') )
{
s[j]=a[i];
j++;
}
s[j]='\0';
puts(s);
system("pause");
}
//izbacivanje samoglasnika iz stringa BEZ POMOCNOG STRINGA
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char a[100], s[100];
int i,j=0,n,k;
gets(a);
n=strlen(a);
for(i=0;a[i]!='\0';i++)
{

if( a[i]=='a' || a[i]=='e' || a[i]=='i' || a[i]=='o' || a[i]=='u' )


{
for(k=i;k<=n-1;k++) //pomjeranje ulijevo
a[k]=a[k+1];
n--;
i--;
}
}
puts(a);
system("pause");
}
//izbacivanje slova e iz stringa BEZ POMOCNOG STRINGA
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char a[100], s[100];
int i,j=0,n,k;
gets(a);
n=strlen(a);
for(i=0;a[i]!='\0';i++)
{
if( a[i]=='e')
{
for(k=i;k<=n-1;k++)
a[k]=a[k+1];
n--;
i--;
}
}
puts(a);
system("pause");
}
//mnozenje kvadratnih matrica
#include<stdio.h>
#include<string.h>
#define max 100
main()
{
int a[max][max],b[max][max],c[max][max];
int n,i,j,s,z=0,k=0;
printf("Unesite dimenziju matrica: \n");
scanf("%d",&n);
printf("Unos elemenata matrice A:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d\n",&a[i][j]);
}
}
printf("Unos elemenata matrice B:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d\n",&b[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
s=0; //resetovanje
for(k=0;k<n;k++) //matrica proizvoda je istog reda kao A i B
s+=a[i][k]*b[k][j];
c[i][j]=s;
}
}
printf("Matrica proizvoda je:\n");
for(i=0;i<n;i++)

{
for(j=0;j<n;j++)
printf("%d\t", c[i][j]);
printf("\n");
}
system("pause");
}
//Najmanja suma vrste KVADRATNE matrice
#include<stdio.h>
#include<string.h>
#define max 100
main()
{
int a[max][max],b[max][max],c[max][max];
int n,i,j,min=0,s=0,imin,m;
printf("Unesite dimenzije matrice A: \n");
scanf("%d %d",&n,&m);
printf("Unos elemenata matrice A:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf("Prikaz elemenata matrice A:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t",&a[i][j]);
}
printf("\n");
}
//suma prve vrste kao referentna za odredjivanje min
for(j=0;j<n;j++)
min+=a[0][j];
imin=0;

for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
s=0;
s+=a[i][j];
if(s<min)
{
min=s;
imin=i;
}
}
}
printf("Najmanju sumu elemenata ima %d. vrsta, a ta suma je %d.\n", imin, min);
system("pause");
}

//Najmanja suma vrste KVADRATNE matrice


#include<stdio.h>
#include<string.h>
#define max 100
main()
{
int a[max][max],b[max][max],c[max][max];
int n,i,j,min=0,s=0,imin,m;
printf("Unesite br redova n= ");
scanf("%d",&n);
printf("Unesite br kolona m= ");
scanf("%d",&m);

printf("Unos elemenata matrice A:\n");


for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1,j+1);
scanf("%d",&a[i][j]);
printf("\n");
}
}
printf("Prikaz elemenata matrice A:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
//suma prve vrste kao referentna za odredjivanje min sume
for(j=0;j<m;j++)
min+=a[0][j];
imin=0;

for(i=0;i<n;i++)
{
s=0;
for(j=0;j<m;j++)
{

s+=a[i][j];
}
if(s<min)
{
min=s;
imin=i;
}

}
printf("Najmanju sumu elemenata ima %d. vrsta, a ta suma je %d.\n", imin, min);
system("pause");
}

/*Napisati program kojim se omogucava da se sa tastature unesu elementi i dimenzija


celobrojne matrice,
a na ekran se prikazuje informacija da li je suma elemenata matrice koji se nalazi desno
od glavne i
levo od sporedne dijagonale deljiva sa maksimalnim elementom glavne dijagonale matrice.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX];
int n,i,j,s1=0,s2=0, max, m, s;
do{
printf("Unesite br redova n= ");
scanf("%d",&n);
printf("Unesite br kolona m= ");
scanf("%d",&m);
if(n!=m || n<=1 || m<=1)
printf("Ponovite unos.\n");
}while(n!=m || n<=1 || m<=1);
printf("Unos elemenata matrice A:\n");
//dovoljno je unijeti jednu dimenziju ili ovako ako se unose dvije moraju biti ISTE!
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf("Prikaz elemenata matrice A:\n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
max=a[0][0];
for(i=0;i<n;i++)
{ //moglo je sa jednom for petljom da odmah uklopimo uslov i=j.
for(j=0;j<m;j++)
{
if(i==j)
{
if(a[i][j]>max)
max=a[i][j];
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i<j) // uslov za elemente koji su desno od glavne
s1+=a[i][j];
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i+j<n-1) //uslov za elemnte koji su lijevo od sporedne
s2+=a[i][j];
}
}
s=s1+s2;
if(max!=0)
{
if(s%max==0)
printf("Trazena suma JESTE djeljiva sa max elementom na glavnoj
dijagonali.\n");
else
printf("Trazena suma NIJE djeljiva sa max elementom na glavnoj dijagonali.\
n");
}
else
printf("Nije dozvoljeno djeljenje sa nulom.\n");
system("pause");
}

/*2. Napisati program kojim se omogucava da se sa tastature unesu elementi i dimenzije m


i n pravougaone matrice,
a potom se kreira niz koji ce se sastojati od elemenata matrice ciji je indeks kolone
neparan.
Pri kretanju kroz matricu krenuti od elementa sa vrednostima indeksa [0,n-1] i kretati se
kroz vrste. Stampati matricu i kreirani niz.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX], niz[MAX];
int n,i,j,s1=0,s2=0, max, m, s,k=0,d=0;
printf("Unesite br redova m= ");
scanf("%d",&m);
printf("Unesite br kolona n= ");
scanf("%d",&n);
printf("Unos elemenata matrice A:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("Unosite [%d][%d] element: ", i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf("Prikaz elemenata matrice A:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
for(i=0;i<m;i++)
{
for(j=n-1;j>=0;j--)
{
if(j%2!=0)
{
{
niz[k]=a[i][j];
k++;
d++;
}
}
}
}
printf("Trazeni niz je: \n");
for(k=0;k<d;k++)
printf("%d\n", niz[k]);
system("pause");
}

/*3.
Napisati program kojim se omogucava da se sa tastature unesu elementi i dimenzije m i n
pravougaone matrice,
a potom se izvrsi sortiranje njenih elemenata u kolonama sa parnim indeksom u rastuci
redosled.
Stampati pocetnu i transfomisanu matricu.
*/
#include<stdio.h>
main()
{
int mat[10][10], i, j, n, m, t, pom;

printf("Unesite m i n ");
scanf("%d %d", &n, &m);

printf("\nUnos matrice:\n");

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


{
for(j=0; j<m; j++)
{
printf("mat[%d][%d]= ", i, j); //unos elemenata matrice, krecemo se kroz vrste
scanf("%d", &mat[i][j]);

}
}
printf("Ispis \n"); //ispis elemenata matrice
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n\n\n");
}
//sortiranje

for(j=0; j<m; j++)


{
if(j%2==0) //uslov da je j parno
{
for(i=0; i<n-1; i++) //vrsta ide do n-1
{
for(t=i+1; t<n; t++) //vrsta ide od i+1 do n
{
if(mat[t][j]<mat[i][j]) // poredjenje dva elementa matrice
{
pom=mat[i][j]; //ako je ispunjen uslov vrsi se zamjena mjesta
mat[i][j]=mat[t][j];
mat[t][j]=pom;
}
}
}
}
}
printf("Ispis sortirane matrice \n"); //ispis elemenata matrice
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n\n\n");
}

}
//rotacija elemenata niza za k mjesta udesno/ulijevo
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int niz[MAX],i,n,pom,k,j;
printf("Unesite dimenziju niza:\n");
scanf("%d", &n);
printf("Unesite elemente niza: \n");
for(i=0;i<n;i++)
{
printf(" %d. element:", i+1);
scanf("%d", &niz[i]);
}
printf("Unesite broj mjesta za koje se pomjera: \n");
scanf("%d", &k);
//udesno
for(j=0;j<k;j++)
{
pom=niz[n-1];
for(i=n-2;i>=0;i--)
{
niz[i+1]=niz[i];
}
niz[0]=pom;
}
printf("Niz pomjeren za k=%d mjesta UDESNO:\n", k);
for(i=0;i<n;i++)
printf("%d\n", niz[i]);

//ulijevo
for(j=0;j<k;j++)
{
pom=niz[0];
for(i=0;i<n-1;i++)
{
niz[i]=niz[i+1];
}
niz[n-1]=pom;
}
printf("Niz pomjeren za k=%d mjesta ULIJEVO:\n", k);
for(i=0;i<n;i++)
printf("%d\n", niz[i]);

system("pause");
}

//posle 0 u nizu ubaciti 77


#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], n,i,j,k;
printf("Unesite dimenziju niza: ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("Unosite %d. element niza:\n", i+1);
scanf("%d", &a[i]);
}
for(i=0;i<n;i++)
{
if(a[i]==0)
{
for(j=0;j<2;j++) // pomjeranje za 2 MJESTA UDESNO
{
for(k=n-1;k>i;k--)
a[k+1]=a[k];

a[i+1]=7;
a[i+2]=7;
n+=2;

}
}
printf("Transformisani niz je:\n");
for(i=0;i<n-1;i++) //GORNJA GRANICA...OVAKO JEDINO RADI
printf("%d\n", a[i]);

system("pause");
}
/mnozenje matrica
//USLOV MNOZENJA 2 MATRICE JE DA JE BR KOLONA PRVE JEDNAK BR KOLONA
DRUGE !!!!
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int n, i,j,k,s=0;
int a[MAX][MAX],b[MAX][MAX],c[MAX][MAX];
printf("Unesite dimenzije matrica n= ");
scanf("%d", &n);
printf("Unesite elemente matrice a:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d. red, %d. kolona: ", i+1,j+1);
scanf("%d", &a[i][j]);
}
}
printf("Unesite elemente matrice b:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d. red, %d. kolona: ", i+1,j+1);
scanf("%d", &b[i][j]);
}
}
//br_red_prve matrice i br_kol_druge matrice su dimenzije matrice proizvoda
for(i=0;i<n;i++)  // ili <br_red_prve matrice
{
for(j=0;j<n;j++) // ili <br_kol_druge matrice
{
s=0;
for(k=0;k<n;k++)
{
s+=a[i][k]*b[k][j];

}
c[i][j]=s;
}
}
printf("Matrica proizvoda je:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%d\t", c[i][j]);
printf("\n");
}
system("pause");
}
//posle 0 u nizu ubaciti 2 puta 77 *NE RADI KADA SE UNESE VIŠE OD JEDNE NULE UZASTOPNO*
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], n,i,j,k, d;
printf("Unesite dimenziju niza: ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("Unosite %d. element niza:\n", i+1);
scanf("%d", &a[i]);
}
d=n;
for(i=0;i<n;i++)
{

if(a[i]==0)
{
for(j=0;j<4;j++) // pomjeranje za 4 MJESTA UDESNO
{
for(k=n-1;k>i;k--)
a[k+1]=a[k];

a[i+1]=7;
a[i+2]=7;
a[i+3]=7;
a[i+4]=7;
d+=4;

}
}
printf("Transformisani niz je:\n");
for(i=0;i<d;i++)
printf("%d\n", a[i]);
system("pause");
}
/*Написати програм на програмском језику Ц којим се омогућава кориснику да са тастатуре
унесе два различита цела броја A1 и А2
(у случају уноса истих вредности омогућити поновни унос). Након тога, уносити са
тастатуре секвенцу целих бројева све док се не унесе вредност -1.
На екрану исписати проценат свих исправно унетих бројева који су имали вредност из
интервала (A1,А2).
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a1, a2, niz[MAX], i=0, n=0,b, j;
float p;
do{
printf("Unesite 2 razlicita broja: ");
scanf("%d %d", &a1, &a2);
if(a1>=a2)
printf("Ponovite unos.\n");
}while(a1>=a2);
printf("Unesite sekvencu brojeva:\n");
do{
scanf("%d", &j);
if(j!=-1)
niz[i++]=j;
}while(j!=-1);
for(b=0;b<i;b++)
{
if(niz[b]>a1 && niz[b]<a2)
n++;
}
p=100*(float)n/i;
printf("Trazeni procenat je %f.\n", p);
system("pause");
}
2. Написати програм на програмском језику Ц којим се са тастатуре уносе по два природна броја, К и Т,
при чему је први једноцифрен,
а други двоцифрен. Ове бројеве смештати у два низа - један у којем су бројеви К, а други у којем су
бројеви Т.
Након уноса низова испитати да ли за сваки унети двоцифрени број Т постоји К његових претходника
који су прости бројеви. Секвенцу уноса бројева прекинути уношењем 0 за К.

#include<stdio.h>

main()
{
int k[200], t[200], i, j, p, x, y, a=0, brojac=0, l;

do {
printf("Unesite dva broja\n");
scanf("%d %d", &x, &y);
if (x < 10 && x>0 && y > 9 && y < 100) {
k[a] = x;
t[a] = y;
a++;
}
if (x < 0 || x>9 || y < 10 || y>99) {
printf("Pogresan unos\n");
}
} while (x != 0);

for (i = 0; i < a; i++) {


brojac = 0;
for (j = 2; j < t[i]; j++) {
p = 1;
for (l = 2; l < j; l++) {
if (j % l == 0) {
p = 0;
}
}
if (p == 1) {
brojac++;
}
}
if (brojac >= k[i]) {
printf("Za broj %d postoji %d prethodnika koji su prosti brojevi, ima ih ukupno %d\n", t[i], k[i], brojac);
}
else {
printf("Za broj %d ne postoji %d prethodnika koji su prosti brojevi, ima ih ukupno %d\n", t[i], k[i], brojac);

}
}
system("pause");
}

/*2. Написати програм на програмском језику Ц којим се са тастатуре уносе по два природна
броја, К и Т, при чему је први једноцифрен,
а други двоцифрен. Ове бројеве смештати у два низа - један у којем су бројеви К, а други
у којем су бројеви Т.
Након уноса низова испитати да ли за сваки унети двоцифрени број Т постоји К његових
претходника
који су прости бројеви. Секвенцу уноса бројева прекинути уношењем 0 за К.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int k,t, a[MAX], b[MAX], i=0, j=0, r, x, p,d, g=0, pr=0;
do{
printf("Unesite k= ");
scanf("%d", &k);
printf("Unesite t= ");
scanf("%d", &t);
if(k>0 && k<10 && t>9 && t<100)
{
a[i++]=k;
b[j++]=t;
}
}while(k!=0);
for(r=0;r<i;r++)
{
for(p=2;p<b[r];p++) //prolazimo kroz prethodnike
{
pr=0;
for(d=2;d<p;d++) // djelioci prethodnika
if(p%d!=0)
g++;
if(g==b[r]-2)
pr++;
}
if(pr>=a[r])
printf("Ima.\n");
else
printf("Nema.\n");
}
system("pause");
}
Napisati program na C-u kojim se sa tastature unosi string S, a zatim se vrši izbacivanje svih
uzastopnih višestrukih ponavljanja njegovih karaktera tako da nakon izbacivanja ostane samo jedan
takav karakter. Štampati transformisan string. U zadatku nije dozvoljeno koristiti pomoćne stringove.
#include <stdio.h>
#include <string.h>
#define MAX 50
main()
{
char s[MAX];
int i, j, d=0;
printf("Unesite string: ");
gets(s);
d=strlen(s);
for(i=0;s[i]!='\0';i++)
{
if(s[i]==s[i+1] && s[i+1]!='\0')
{
//pomijeranje ulijevo da izbacimo onaj koji se duplira
for(j=i;j<d;j++)
s[j]=s[j+1];
d--;
i--; // da se ponovo ispita onaj koji je usljed pomjeranja dosao na i-to
mjesto
}
}
printf("Transformisani niz je:\n ");
puts(s);

system("pause");
}
3. Napisati program na C-u kojim se sa tastature unose elementi matrice A dimenzije M*M, pri čemu
je svaki element matrice višecifreni celi broj (omogućiti ponovni unos ako se unese jednocifren broj),
a potom se od tih elemenata formira celobrojni niz B čiji je svaki element jednak sumi cifara najveće
i najmanje težine odgovarajućeg elementa matrice A. Na ekran štampati kreirani niz B.
/*Poslije svakog M izbaci 2 slova.*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s[MAX];
int n, i, j;
printf("Unesite string: ");
gets(s);
n=strlen(s);
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='M' && s[i]!='\0')
{
for(j=i+1;s[j]!='\0';j++) //mijenjamo slova POSLIJE M
s[j]=s[j+2];
n-=2;
}
}
printf("Transformisani niz je: \n");
puts(s);

system("pause");
}
/*Na programskom jeziku C napisati program kojim se sa tastature unosi niz celih brojeva
A, pri cemu su njegovi elementi višecifreni celi brojevi, a potom se od njega formira
drugi celobrojni niz B ciji su elementi jednaki proizvodu cifara najvece i najmanje
težine
elemenata niza A.*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], b[MAX], n, i, p, z, j=0, d;
printf("Unesite dimenziju niza: ");
scanf("%d", &n);
printf("Unesite elemente niza: \n");
for(i=0;i<n;i++)
{
do{
printf("Unosite %d. clan niza: ", i+1);
scanf("%d", &a[i]);
}while(a[i]<10 && a[i]>-10); //brojeva mogu biti i poz i neg !!!
}
for(i=0;i<n;i++)
{
p=a[i]%10;
while(a[i]>=10)
a[i]/=10;
z=a[i];
b[j++]=p*z;
}
for(d=0;d<j;d++)
printf("%d\n", b[d]);

system("pause");
}

/*Zadnji element koji se javlja najvise puta*/


#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], max, p, i, j, n, bp=0, broj;
printf("Unesite dimenziju niza: ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("Unosite %d. element: ", i+1);
scanf("%d", &a[i]);
}
max=0; //pocetna vrijednost za najveci broj ponavljanja
//trazimo najveci br pojavljivanja
for(i=0;i<n-1;i++)
{
p=0;
for(j=0;j<n;j++) //j=0 da se porede i sami sa sobom, svaki se javi bar
jednom
{
if(a[i]==a[j])
p++;
}
if(p>max)
max=p; //ovdje cemo pronaci max br ponavljanja
}
for(i=0;i<n;i++)
{
bp=0;
j=0;
while(bp!=max && j<n)
{

if(a[i]==a[j])
bp++;
if(bp==max)
broj=a[i];
j++;
}
}

printf("ZAdnji broj koji se pojavlja max puta, tj. %d puta je %d.\n", max, broj);
system("pause");
}
/*PRVI element koji se javlja najvise puta*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], max, p, i, j, n, bp=0, broj;
printf("Unesite dimenziju niza: ");
scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("Unosite %d. element: ", i+1);
scanf("%d", &a[i]);
}
max=0; //pocetna vrijednost za najveci broj ponavljanja
//trazimo najveci br pojavljivanja
for(i=0;i<n-1;i++)
{
p=0;
for(j=0;j<n;j++) //j=0 da se porede i sami sa sobom, svaki se javi bar
jednom
{
if(a[i]==a[j])
p++;
}
if(p>max)
max=p; //ovdje cemo pronaci max br ponavljanja
}
i=0;
while(i<n && bp!=max)
{
bp=0;
for(j=0;j<n;j++)
if(a[i]==a[j])
bp++;
if(bp==max)
broj=a[i];
i++;
}

printf("Prvi broj koji se pojavlja max puta, tj. %d puta je %d.\n", max, broj);
system("pause");
}
/*Rotacija matrice udesno za 1 poz*/
//Rotacije UDESNO/ULIJEVO se vrsi po redovima!!!, mijenja nam se indeks KOLONE
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX],m,n,i,j,pom,k;
printf("Unesite dimenzijue matrice: ");
scanf("%d", &n); //br redova
scanf("%d", &m); //br kolona
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
printf("Ispis unesene matrice: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)
{
//ovdje bi isla jos jedna for petlja ako se kaze rotacija za vise od 1
pozicije
//ako matricu rotiram po vrsti ne treba mi for za kolone
pom=a[i][m-1];
//resetovati vrijednost pom-a ta svaku vrstu
//jer rotiramo udesno pa da se ne izgubi posljednji clan u redu
//NI SLUČAJNO STAVITI a[i][m]!!!!
for(k=m-2;k>=0;k--) //ova je donja granica jer ne mozemo krenuti sa
n-1, jer nema pozicija n u nizu, ovo je opseg kolonee
{
a[i][k+1]=a[i][k];
}
a[i][0]=pom;

}
printf("Transformisana matrica je: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d\t", a[i][j]);
printf("\n");
}

system("pause");
}

/*Rotacija matrice ulijevo za 1 poz*/


//Rotacije UDESNO/ULIJEVO se vrsi po redovima!!!, mijenja nam se indeks KOLONE
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX],m,n,i,j,pom,k;
printf("Unesite dimenzijue matrice: ");
scanf("%d", &n); //br redova
scanf("%d", &m); //br kolona
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
printf("Ispis unesene matrice: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)
{
//ovdje bi isla jos jedna for petlja ako se kaze rotacija za vise od 1
pozicije
//ako matricu rotiram po vrsti ne treba mi for za kolone
pom=a[i][0];
//resetovati vrijednost pom-a ta svaku vrstu
//jer rotiramo udesno pa da se ne izgubi posljednji clan u redu
//NI SLUČAJNO STAVITI a[i][m]!!!!
for(k=1;k<=m-1;k++) //ova je donja granica jer ne mozemo krenuti sa
0, jer nema pozicija -1 u nizu
{
a[i][k-1]=a[i][k];
}
a[i][m-1]=pom;
}
printf("Transformisana matrica je: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d\t", a[i][j]);
printf("\n");
}

system("pause");
}
/*Rotacija matrice nagore za 1 poz*/
//Rotacije NAGORE/NADOLE se vrsi po kolonama!!!, mijenja nam se indeks REDA
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX],m,n,i,j,pom,r;
printf("Unesite dimenzijue matrice: ");
scanf("%d", &n); //br redova
scanf("%d", &m); //br kolona
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
printf("Ispis unesene matrice: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for(j=0;j<m;j++)
{
//ovdje bi isla jos jedna for petlja ako se kaze rotacija za vise od 1
pozicije
//ako matricu rotiram po KOLONI ne treba mi for za REDOVE
pom=a[0][j];
//resetovati vrijednost pom-a za svaku kolonu
//jer rotiramo nagore pa da se ne izgubi najvisi clan u koloni //
for(r=1;r<n;r++) //ova je donja granica jer ne mozemo krenuti sa 0,
jer nema pozicija -1 u nizu
{
a[r-1][j]=a[r][j];
}
a[n-1][j]=pom;
}
printf("Transformisana matrica je: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d\t", a[i][j]);
printf("\n");
}

system("pause");
}

/*Rotacija matrice nadole za 1 poz*/


//Rotacije NAGORE/NADOLE se vrsi po kolonama!!!, mijenja nam se indeks REDA
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX],m,n,i,j,pom,r;
printf("Unesite dimenzijue matrice: ");
scanf("%d", &n); //br redova
scanf("%d", &m); //br kolona
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &a[i][j]);
}
}
printf("Ispis unesene matrice: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for(j=0;j<m;j++)
{
//ovdje bi isla jos jedna for petlja ako se kaze rotacija za vise od 1
pozicije
//ako matricu rotiram po KOLONI ne treba mi for za REDOVE
pom=a[n-1][j];
//resetovati vrijednost pom-a za svaku kolonu
//jer rotiramo nagore pa da se ne izgubi najvisi clan u koloni //
for(r=n-1;r>=1;r--) //ova je donja granica jer ne mozemo krenuti sa
0, jer nema pozicija -1 u nizu
{
a[r][j]=a[r-1][j];
}

a[0][j]=pom;
}
printf("Transformisana matrica je: \n");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d\t", a[i][j]);
printf("\n");
}

system("pause");
}

/*Stampanje elementa koji se ponavlja vise od k puta*/


#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int niz[MAX], i,j,n,k,bp=0,p, pon=0;
printf("Unesite dimenziju niza: ");
scanf("%d", &n);
printf("Unesite %d elemenata.", n);
for(i=0;i<n;i++)
{
printf("Unesite %d. element: ", i+1);
scanf("%d", &niz[i]);
}
printf("Unesite broj ponavljanja k= ");
scanf("%d", &k);
for(i=0;i<n;i++)
{
bp=0;
for(j=0;j<n;j++)
{

if(niz[i]==niz[j])
bp++;
}
if(bp>k)
//printf("Element niz[%d]= %d se pojavljuje %d puta, sto je vise od %d
puta", i+1, niz[i], bp, k); //ovako ispise isti broj onoliko puta koliko se pojavi!
{
for(p=0;p<i;p++)
{
if(niz[i]==niz[p]) // da ga ispise samo jednom!!!!
pon=1;
if(pon==0)
printf("Element niz[%d]= %d se pojavljuje %d puta, sto je vise
od %d puta\n", i+1, niz[i], bp, k);
}
}
}
system("pause");
}
/*Suma elemenata ISPOD glavne i IZNAD sporedne */
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX], i, j, n, m,s1=0, s2=0, s;
do{
printf("Unesite dimenzije matrice: \n");
scanf("%d %d", &n, &m);
if(n!=m)
printf("MAtrica mora biti kvadratna. Ponovite unos.\n");
}while(n!=m);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("Unosite [%d][%d] element: ", i+1,j+1);
scanf("%d", &a[i][j]);
}
}
//ispis
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(i>j) //ispod glavne
s1+=a[i][j];
if(i+j<n-1) //iznad sporedne
s2+=a[i][j];
}
}
s=s1+s2;
printf("Trazena suma je s=%d\n", s);
system("pause");
}
/*Zamjena prezimena sa 15 zvjezdica */
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char
a[100]={'#','B','o','j','a','n','#','S','u','k','n','o','v','i','c','#','1','4','6','3','
#'};
int i, n, ime, prezime=1, indeks=1, d;

for(i=0;a[i]!='\0';i++)
d=i; //duzina cijelog stringa
for(i=1;a[i]!='#';i++)
ime=i; //duzina imena
ime++; //jer je ono gore indeks zadnjeg slova u imenu
printf("%d\n", ime);
for(i=ime+1;a[i]!='#';i++) //+1 donja granica da prvu # ukljucimo
prezime++; //duzina prezimena
printf("%d\n", prezime);
for(i=ime+prezime+1;a[i]!='\0';i++)
indeks++; //duzina indeksa, zadnja # je uljucena ovdje
printf("%d\n", indeks);
for(i=ime+1;i<ime+prezime;i++)
a[i]='*';
puts(a);
system("pause");
}

/*TRANSPONOVANJE kvadratne matrice*/


#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX], i, j, pom, n, m;
do{
printf("Unesite dimenzije matrice: \n");
scanf("%d %d", &n, &m);
if(n!=m)
printf("MAtrica mora biti kvadratna. Ponovite unos.\n");
}while(n!=m);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("Unosite [%d][%d] element: ", i+1,j+1);
scanf("%d", &a[i][j]);
}
}
//ispis
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
pom=a[i][j];
a[i][j]=a[j][i];
a[j][i]=pom;
}
}
printf("Transponovana matrica je:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t", a[i][j]);
}
printf("\n");
}

system("pause");
}
/*
1. Napisati program na C-u kojim se sa tastature unosi sekvenca celih brojeva sve dok se
ne unesu dve uzastopne iste vrednosti.
Od unešenih brojeva kreirati brojni niz, ne uključujući broj koji je prekinuo sekvecu.
Na ekran štampati kreirani niz, a zatim prikazati informaciju od koje pozicije u
kreiranom nizu postoji najduža sekvenca elemenata čije su vrednosti naizmenično parne i
neparne.
U slučaju da postoji veći broj traženih sekvenci iste dužine, prikazati na ekran
informaciju o prvoj na koju se naišlo.
Pored toga, štampati na ekran i informaciju o dužini sekvence, a zatim i elemente niza
koji čine identifikovanu traženu sekvencu.
Npr. u slučaju unosa sa tastature brojeva 5 1 2 3 4 5 7 5 2 3 6 7 1 1, na ekranu će se
prikazati informacije:
kreirani niz je 5 1 2 3 4 5 7 5 2 3 6 7 1, najduža sekvenca naizmeničnih vrednosti
počinje od pozicije 1, dužina sekvence je 5, a elementi sekvence su 1 2 3 4 5.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int niz[MAX], i, j, k=0, n=0, a, b, sekv=0, max, br=0, in=0, ip;
printf("Unesite prvi element niza: ");
scanf("%d", &a);
niz[0]=a;
i=1;
do{
printf("Unesite iduci broj: ");
scanf("%d", &b);
if(b!=a)
{ niz[i++]=b;}
else
br=1;
a=b;
}while(br==0);
for(k=0;k<i;k++)
printf("%d\n", niz[k]); //ispis unesenog niza
k=0;
while(n==0 && k<i)
{
if((niz[k]%2==0 && niz[k+1]%2!=0) || (niz[k]%2!=0 && niz[k+1]%2==0))
{
n=0;
sekv++;
}
else
n=1;
k++;
in=k; // da se zapamti indeks zadnjeg clana
}
max=sekv; //maxu dodijelimo duzinu prve sekv
n=0;
for(j=k;j<i;j++)
{
sekv=0;
n=0; //resetovanje
while(n==0 && k<i)
{
if((niz[j]%2==0 && niz[j+1]%2!=0) || (niz[j]%2!=0 && niz[j+1]%2==0))
{
n=0;
sekv++;
}
else
n=1;
j++;
}
if(sekv>max)
{ max=sekv;
in=j;
}
}
ip=in-max;
printf("Najduza sekv koja zadovoljava uslov je duzine max=%d\n, pocetni indeks je
%d, a krajnji %d", max, ip+1,in+1);
printf(“Trazena sekvenca je: \n”);
for(i=ip;i<in;i++)
printf(“%d”, niz[i]);
system("pause");
}
/*
2. Na programskom jeziku C napisati program kojim se sa tastature unose dimenzije i
elementi celobrojne matrice MAT,
a zatim se na ekran štampa informacija da li je uneta matrica tzv. cirkularna matrica ili
nije.
Cirkularna matrica je matrica kod koje svaka vrsta ima iste elemente kao vrsta iznad nje,
ali rotirane za jedno mesto udesno. Npr. matrica

1 2 3 4 5
5 1 2 3 4
4 5 1 2 3

je cirkularna matrica. Zadatak uraditi bez korišćenja pomoćnih nizova.

*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX][MAX], i,j,n,m,k, id=0;
printf("Unesite dimenzije matrice: \n");
scanf("%d %d", &n, &m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unesite [%d][%d]: ", i, j);
scanf("%d", &a[i][j]);
}
}

for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{

printf("%d\t", a[i][j]);
}
printf("\n");
}
for(i=1;i<n;i++)
{
for(j=0;j<m-1;j++)
{
if(a[i][j+1]==a[i-1][j] && a[i][0]==a[i-1][m-1])
id++;
}
}
if(id==(n-1)*m-(n-1))
printf("JESTE!\n");
else
printf("NIJE!\n");
system("pause");
}

/*1. Napisati program na programskom jeziku C kojim se sa tastature jednom naredbom scanf
unose po dve celobrojne vrednosti,
a zatim se od njih formiraju dva niza – prvi broj treba da bude element prvog, a drugi
broj element drugog niza.
Proces unosa brojeva prekinuti kada se za bilo koji od njih unese vrednost 0.
Izvršiti transformaciju niza sa manjom aritmetičkom sredinom tako što se na njega
nadovežu elementi niza čija je aritmetička sredina veća.
Štampati početne i transformisani niz.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], b[MAX], x, y, n=0, m=0, sa=0, sb=0, i, j=0, z;
float asra, asrb;
do{
printf("Unesite x= ");
scanf("%d", &x);
printf("Unesite y= ");
scanf("%d", &y);
if(x!=0 && y!=0)
{
a[m++]=x;
b[n++]=y;
}
}while(x!=0 && y!=0);
for(i=0;i<m;i++)
sa+=a[i];
asra=(float)sa/m;
for(i=0;i<n;i++)
sb+=b[i];
asrb=(float)sb/n;
z=n+m;
if(asra>asrb) // nizu b nadovezujemo niz a
{

for(i=n;i<z;i++)
{
b[i]=a[j++];
}
printf("Transformisani niz b je: \n");
for(i=0;i<z;i++)
printf("%d\n", b[i]);
}
//j=0; NE MOŽE OVDJE NIŠTA STAJATI IZMEĐU if/else if/else..
else if (asra<asrb) //nizu a nadovezujemo b
{
j=0; // mora se ovdje upisati, izmedju if/else if/else... ne treba biti
nista drugo!!!
for(i=m;i<z;i++)
a[i]=b[j++];
printf("Transformisani niz a je :\n");
for(i=0;i<z;i++)
printf("%d\n", a[i]);
}
else
printf("Aritmeticke sreedine su jednake.\n");
system("pause");
}
/*
2. Na programskom jeziku C napisati program kojim se sa tastature unosi string S, a zatim
se vrši njegova transformacija tako da
se na njegov početak umetne vaše ime, a na njegov kraj vaše prezime. Vaše ime i prezime
trebate kao stringove inicijalizovati pri
deklaraciji.
Štampati na ekran početne stringove i string S nakon transformacije. U rešenju nije
dozvoljeno koristiti tablicu ASCII koda,
niti biblioteke
string.h i ctype.h.

*/
#include<stdio.h>
#include<string.h>
#define max 100
main()
{
char s[max], ime[]={'D', 'e', 'j', 'a', 'n', 'a', '\0'}, prezime[]={'P', 'j', 'e', 'v',
'i', 'c', '\0'};
int d1=0, d2=0, i, j=0, d=0,p=0, pom;

printf("Unesite string s:\n");


scanf("%s", &s);
for(i=0; ime[i]!='\0'; i++)
d1++;
for(i=0; prezime[i]!='\0'; i++)
d2++;
for(i=0; s[i]!='\0'; i++)
d++;
pom=d; // jer cemo vrijednost od d mijenjati pa da sacuvamo pocetnu jer ce nam trebati
poslije
printf("Uneseni stringovi su:\n");
printf("%s \n", ime);
printf("%s \n", prezime);
printf("%s \n", s);

// pomjeranje unesenog stringa za duzinu imena


for(p=0; p<d1; p++)
{
for(i=d-1; i>=0; i--)
{
d++;
s[i+1]=s[i];
}
}
j=0;
for(i=0; i<d1; i++)
{
s[i]=ime[j++];
}
j=0;
for(i=pom+d1; i<d1+d2+pom; i++)
{
s[i]=prezime[j++];
}
s[i]='\0';
printf("\n\n");
printf("Novi string je: \n %s \n\n", s);

system("pause");
}

/*
paran br kolona, eleemnt parne kolone je element niza koji se ponavlja onoliko puta
kolika je vrijednost susjednog elementa neparne kolone
1 2 3 4
5 1 2 3
4 5 1 2
---------
1 1 3 3 3 3 5 2 2 2 4 4 4 4 4 1 1
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX], niz[MAX], i ,j, k=0, n, m, p=0;
printf("Unesite br redova: ");
scanf("%d", &n);
do{
printf("Unesite br kolona: ");
scanf("%d", &m);
if(m%2!=0)
printf("Ponovite unos.\n");
}while(m%2!=0);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &mat[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{

printf("%d\t", mat[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{

if(j%2==0) //ili korak u for-u j+2


{
for(p=0;p<mat[i][j+1];p++)
niz[k++]=mat[i][j];
}
}
}
printf("Trazeni niz je:\n");
for(i=0;i<k;i++)
printf("%d", niz[i]);
system("pause");
}
/* 2 pravougaone matrvce unijeti- sto znaci da mogu biti i kvadratne jer je kvadrat
uopsteni pravougaonik-,
razlicite dim matrice, provjeriti da li je zbir svake kolone prve mat ciji je indeks
paran jednak zbiru elemenata svake vrste druge mat ciji je indeks vrste neparan
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat1[MAX][MAX], mat2[MAX][MAX], n1, m1, n2, m2, i, j, s1=0, s2=0,k=0;
printf("Unesite br redova prve: ");
scanf("%d", &n1);
printf("Unesite br kolona prve: ");
scanf("%d", &m1);
do{
printf("Unesite br redova druge: ");
scanf("%d", &n2);
printf("Unesite br kolona druge: ");
scanf("%d", &m2);
}while(n1==n2 || m1==m2);
for(i=0;i<n1;i++)
{
for(j=0;j<m1;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &mat1[i][j]);
}
}
for(i=0;i<n1;i++)
{
for(j=0;j<m1;j++)
{

printf("%d\t", mat1[i][j]);
}
printf("\n");
}
for(i=0;i<n2;i++)
{
for(j=0;j<m2;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &mat2[i][j]);
}
}
for(i=0;i<n2;i++)
{
for(j=0;j<m2;j++)
{

printf("%d\t", mat2[i][j]);
}
printf("\n");
}
j=0; //parne kolone prve
k=1; //neparni redovi druge
do{
for(i=0;i<n1;i++)
s1=s1+mat1[i][j];
for(i=0;i<m2;i++)
s2=s2+mat2[k][i];
if(s1==s2)
printf("Za %d. kolonu prve i %d. red druge sume SU JEDNAKE!\n", j , k);
else
printf("Za %d. kolonu prve i %d. red druge sume NISU JEDNAKE!\n", j , k);
k+=2;
j+=2;
}while(k<n2/2 && j<m1/2); //polovili smo dimenzije jer prolazimo kroz svaku drugu
dimenziju
system("pause");
}
/* unosimo sekvencu brojeva ciji je zbir cifara paran i smjestamo ih u niz, sve dok se ne
unese onaj sto ne ispunjava uslov, njega ne treba ukljuciti u niz.
naci onaj element niza sa najvise cifara i zamijeniti mu mjesto sa najvecim prirodnim
brojem koji se moze dobiti od njgovih cifara,
ako ima vise ovakvih brojeva primijeniti ovo na onaj sa najmanjim indeksom.
PRIMJER:
26, 4, 364
-------
26, 4, 643
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a, niz[MAX], i, n=0, c, sc=0, pom, b=0, maxc=0, indeks, broj, cifre[MAX], j=0,k=0,
novi=0;
do{
printf("Unesite broj: ");
scanf("%d", &a);
pom=a;
sc=0; //resetovanje obavezno za svaki novouneseni broj
while(pom!=0)
{
c=pom%10;
sc+=c;
pom/=10;
}
if(sc%2==0)
niz[n++]=a;
}while(sc%2==0);
printf("Uneseni niz je:\n");
for(i=0;i<n;i++)
printf("%d\n", niz[i]);
for(i=0;i<n;i++)
{
b=0;
pom=niz[i];
while(pom!=0)
{
pom/=10;
b++; //br cifara
}
if(b>maxc) // b>maxc da uzme samo PRVI tj onaj sa NAJMANJIM INDEKSOM sto jeste
uslov zadatka
{
maxc=b;
indeks=i; //indeks broja sa najvise cifara
broj=niz[i]; //ovdje sacuvan broj sa najvise cifara
}

//cifre od "broj" u niz stavljamo


pom=broj;
j=0;
while(pom!=0)
{
c=pom%10;
pom/=10;
cifre[j++]=c;
}
//sortiranje niza cifre
for(i=0;i<j-1;i++)
{
for(k=i+1;k<j;k++)
{
if(cifre[i]>cifre[k])
{
pom=cifre[i];
cifre[i]=cifre[k];
cifre[k]=pom;
}
}
}

pom=1;
for(i=0;i<j;i++)
{
novi=novi+cifre[i]*pom;
pom*=10; //prelazak na naredni tezinski faktor
}
niz[indeks]=novi;
//konacni ispis transformisanog niza
printf("Transformisani niz je:\n");
for(i=0;i<n;i++)
printf("%d\n", niz[i]);
}
system("pause");
}
/* unijeti dim i elemente int matrice i kreirati niz od razlike max i min elementa svake
kolone*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX], min, max, r, niz[MAX], n, m, i , j, k=0;
printf("Unesite dimenzije matrice:\n");
scanf("%d %d", &n, &m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &mat[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n");
}
for(j=0;j<m;j++)
{
min=mat[0][j];
max=mat[0][j];
for(i=1;i<n;i++)
{
if(mat[i][j]>max)
max=mat[i][j];
else if(mat[i][j]<min)
min=mat[i][j];
}

r=max-min;
niz[k++]=r;
}
printf("Trazeni niz je:\n");
for(i=0;i<k;i++)
printf("%d\n", niz[i]);
system("pause");
}
/*1. Napisati program na C-u kojim se sa tastature unosi sekvenca celih brojeva sve dok
se ne unesu dve uzastopne iste vrednosti.
Od unešenih brojeva kreirati brojni niz, ne uključujući broj koji je prekinuo sekvecu. Na
ekran štampati kreirani niz,
a zatim prikazati informaciju od koje pozicije u kreiranom nizu postoji najduža rastuća
sekvenca vrednosti elemenata.
U slučaju da postoji veći broj sekvenci iste dužine, prikazati na ekran informaciju o
najdužoj od njih. Pored toga, štampati na ekran i informaciju o dužini sekvence,
a zatim i elemente niza koji čine identifikovanu traženu sekvencu. Npr. u slučaju unosa
sa tastature brojeva 5 1 2 3 4 5 0 -5 -2 3 5 7 1 1, na ekranu će se prikazati
informacije:
kreirani niz je 5 1 2 3 4 5 0 -5 -2 3 5 7 1, najduža rastuća sekvenca počinje od pozicije
1, dužina sekvence je 5, a elementi sekvence su 1 2 3 4 5.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a, b, niz[MAX], i, j, max=0, k,n, id=0, d=1, indeks=0;
printf("Unesite jedan broj: \n");
scanf("%d", &a);
niz[0]=a;
n=1;
do{
b=a;
printf("Unesite iduci broj: \n");
scanf("%d", &a);
if(a!=b)
niz[n++]=a;
}while(a!=b);
printf("Kreirani niz je:\n");
for(i=0;i<n;i++)
printf("%d\n", niz[i]);
//provjera da li je sekvenca rastuca
for(i=0;i<n;i++)
{
d=1; //zbog d>max, jer sam broj nije sekvenca
while(i<n-1 && niz[i]<niz[i+1])
{
d++;
i++;
}
if(d>max)
{
max=d;
indeks=i; //jer provjeravamo za i, a ne za i+1 u while petlji
}
}
printf("Trazena sekvenca je:\n");
for(i=indeks-max+1;i<=indeks;i++) //u donjoj granici ide +1 jer nas inace vrati na broj
prije...npr. sekvenca od 2 do 7- duzina je 6!!!
printf("%d", niz[i]);
printf("Max duzina sekvence koja zadovoljava uslov je %d, ona pocinje na %d. mjestu i
zavrsava na %d. mjestu u nizu:\n", max, indeks-max+1, indeks+1);
system("pause");
}
/*2. Na programskom jeziku C napisati program kojim se sa tastature unose dva stringa S1
i S2,
različite dužine (omogućiti ponovni unos ako se unesu stringovi jednake dužine).
Izvršiti transformaciju dužeg stringa tako što se na njegov početak umetne manji string.
Štampati na ekran početne stringove i duži string nakon transformacije. U rešenju nije
dozvoljeno koristiti tablicu ASCII koda, niti biblioteke string.h i ctype.h.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s1[MAX], s2[MAX], i, j, d1=0, d2=0, pom;
do{
printf("Unesite prvi string:\n");
scanf("%s", s1);
for(i=0;s1[i]!='\0';i++)
d1++;
printf("Unesite drugi string:\n");
scanf("%s", s2);
for(i=0;s2[i]!='\0';i++)
d2++;
}while(d1==d2);
printf("UNijeti stringovi su:\n");
printf("%s\n", s1);
printf("%s\n", s2);
if(d1>d2) // na pocetak s1 se umetne s2 ako ovo vazi
{
pom=d1;
for(j=0;j<d2;j++) //za d2 mjesta pomjeramo
{
for(i=pom-1;i>=0;i--)
{

s1[i+1]=s1[i];
}
pom++;
}
for(i=0;i<d2;i++)
s1[i]=s2[i];
s1[d1+d2]='\0';
printf("Transformisani niz je:\n");
printf("%s\n", s1);

}
else
// na pocetak s2 se umetne s1 ako ovo vazi
{
pom=d2;
for(j=0;j<d1;j++) //za d1 mjesta pomjeramo
{
for(i=pom-1;i>=0;i--)
{

s2[i+1]=s2[i];
}
pom++;
}
for(i=0;i<d1;i++)
s2[i]=s1[i];
s2[d1+d2]='\0'; //za kraj stringa
printf("Transformisani niz je:\n");
printf("%s\n", s2);
}
system("pause");
}
/*kvadratna matrica se unosi i gledamo da li je matrica Teplicova, a to je za:
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX], i, j, dim, id=0, b;
printf("Unesite dimenziju matrice:\n");
scanf("%d", &dim);
printf("Unesite elemente matrice: \n");
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
{
printf("Unesite [%d][%d] element: ", i+1, j+1);
scanf("%d", &mat[i][j]);
}
}
printf("Unesena matrica je: \n");
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n");
}
for(i=0;i<dim-1;i++) //ova gornnja granica jer ispitujemo svaki red/kolonu u odnosu na
onu sledecu, zadnji red nema sledeci red!
{
for(j=0;j<dim-1;j++) //jer zadnji element reda, tj elementi zadnje kolone se
posebno porede sa prvi elementom sledece kolone!
{
if(mat[i][j]==mat[i+1][j+1] && mat[i][dim-1]==mat[i+1][0])
id++;
}
}
if(id==(dim-1)*(dim-1))
printf("JESTE!\n");
else
printf("NIJE!\n");
system("pause");
}
/*jednom scanfu se unose 2 prirodna br, a zatim see od njih formiraju 2 niza, prekinuti
proces unosa kad se unese prvi koji nije prirodan,
transf niz sa manjom asr tkd se ispred min njegovog elementa ubaci onaj niz sa vecom asr,
stampati transf i pocetni niz, ako se ne mogu formirati prikazati odg message
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], b[MAX], i, j, n=0, m=0, sa=0, sb=0, x, y, mina, imina, minb, iminb, poma,
pomb, k=0;
float asra, asrb;
do{
printf("Unesite 2 broja: ");
scanf("%d %d", &x, &y);
if(x>0 && y>0)
{
a[n++]=x;
b[m++]=y;
}
}while(x>0 && y>0);
printf("Uneseni nizovi su: \n");
for(i=0;i<n;i++)
printf("%d\n", a[i]);
printf("\n");
for(i=0;i<m;i++)
printf("%d\n", b[i]);

for(i=0;i<n;i++)
sa+=a[i];
for(i=0;i<m;i++)
sb+=b[i];
asra=(float)sa/n;
asrb=(float)sb/m;
mina=a[0];
imina=0;
for(i=0;i<n;i++)
{
if(a[i]<mina)
{
mina=a[i];
imina=i;
}
}
minb=b[0];
iminb=0;
for(i=0;i<m;i++)
{
if(b[i]<minb)
{
minb=b[i];
iminb=i;
}
}
poma=n;
pomb=m;
k=n-1;
if(asra>asrb) //na niz b ispred minb elementa nadovezemo niz a
{
for(i=0;i<n;i++)
{
for(j=m-1;j>=iminb;j--)
b[j+1]=b[j];
m++;
}
//iminb je pomjereno za n mjesta pa je
iminb=iminb+n;
for(i=iminb-1;i>=(iminb-1)-(n-1);i--) // n zasad nismo dirali, tj nismo mu
mijenjali vrijednost pa ne moramo koristiti poma varijablu
{
b[i]=a[k--];
}
printf("\nTransf niz b je: \n");
for(i=0;i<m;i++) //ova gornja granica jer smo m inkrementirali za svako
pomjeranje
printf("%d\n", b[i]);
}

else if(asra<asrb) //na niz a ispred mina elementa nadovezemo niz b


{
k=m-1;
for(i=0;i<m;i++)
{
for(j=n-1;j>=imina;j--)
a[j+1]=a[j];
n++;
}
//imina je pomjereno za m mjesta pa je
imina=imina+m;
for(i=imina-1;i>=(imina-1)-(m-1);i--) // n zasad nismo dirali, tj nismo mu
mijenjali vrijednost pa ne moramo koristiti poma varijablu
{
a[i]=b[k--];
}
printf("\nTransf niz a je: \n");
for(i=0;i<n;i++) //ova gornja granica jer smo m inkrementirali za svako
pomjeranje
printf("%d\n", a[i]);
}
else
printf("NIJE MOGUCE TRANSF\n");
system("pause");
}

//unos i ispis matrice unesenih dimenzija, prikazati inf da li postoji jednak proizvod
elemenata u neparnim kolonama i parnim redovima
#include<stdio.h>
#define MAX 100
main()
{
int n, m, j, i, p1=1, p2=1, mat[MAX][MAX], k;
printf("Unesite br redova prve: ");
scanf("%d", &n);
printf("Unesite br kolona prve: ");
scanf("%d", &m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("Unosite [%d][%d] element: ", i+1, j+1);
scanf("%d", &mat[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{

printf("%d\t", mat[i][j]);
}
printf("\n");
}
i=0;
j=1;
do{
for(k=0;k<n;k++)
p1*=mat[k][j];
for(k=0;k<m;k++)
p2*=mat[i][k];
if(p1==p2)
printf("Za %d. kolonu i %d. red SU JEDNAKI proizvodi:\n", j, i);
else
printf("Za %d. kolonu i %d. red NISU JEDNAKI proizvodi:\n", j, i);
j+=2;
i+=2;
p1=1;
p2=1;
}while(i<n && j<m);
system("pause");
}
*unos sekvence iz intervala [0,9], prekinuti kada ne pripada, od ispravno unsenih kreirati niz,
stampati razliku najveceg i najmanjeg broja koji se moze kreirati od tog niza bez ponavljanja
brojeva osim ako se oni u nizu ne ponavljaju*/
#include<stdio.h>
#define MAX 100
main()
{
int niz[MAX], min, max, a, i, j, n=0, pom;
do{
printf("Unesite broj: \n");
scanf("%d" &a);
if(a>=0 && a<=9)
niz[n++]=a;
}while(a>=0 && a<=9);
//najmanji br koji se moze formirati je ustvari MIN element niza
min=niz[0];
for(i=0;i<n;i++)
if(niz[i]<min)
min=niz[i];
//njaveci br koji e moze formirati se dobiti na osnovu SORTIRANJA
for(i=0;i<n-1,i++)
{
for(j=i+1;j<n;j++)
{
if(niz[i]>niz[j])
{
pom=niz[i];
niz[i]=niz[j];
niz[j]=pom;
}
}
}
pom=1;
………….

system("pause");
}
/*unosi se string s pa se izbacuje svako uzastopno ponavljanje karaktera
tkd nakon izbacivanja ostane samo jedan takav karakter. stampati transf string bez
pomocnog stringa*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s[MAX];
int i, j, k, d=0;
printf("Unesite string:\n");
scanf("%s", s); //preko gets(s) ako zelim da mogu razmake unositi
for(i=0;s[i]!='\0';i++)
{
if(s[i]==s[i+1] && s[i+1]!='\0')
{
for(j=i;s[j]!='\0';j++)
s[j]=s[j+1];
i--;
}
}
s[i]='\0';
printf("%s\n", s);
system("pause");
}

/*3. Na programskom jeziku C napisati program kojim se sa tastature unosi string S,ž
a zatim se vrši njegova transformacija tako da se nаkon svake pojave karaktera A umetnu 3
karaktera jednaka poslednjem karakteru u stringu.
Npr. string abAabcAab nakon transformacije postaje abAbbbabcAbbbab. Nije dozvoljeno
koristiti pomoćne stringove. Štampati na ekran transformisan string.
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s[MAX], pom;
int i, j, k,d=0,p;
gets(s);
for(i=0;s[i]!='\0';i++)
d++;
pom=s[d-1];
for(i=0;s[i]!='\0';i++)
{
if(s[i]=='A')
{
for(k=0;k<3;k++)
{
for(j=d-1;j>=i;j--)
{
s[j+1]=s[j]; //poduplace se i-ti clan, ali ce se oni
prepraviti u dijelu za dodjeljivanja pom-a

}
d++;
}
//s[i+1]=pom;
//s[i+2]=pom;
//s[i+3]=pom;
//ili
for(p=1;p<=3;p++)
s[i+p]=pom;
}
}

s[d]='\0';
puts(s);
system("pause");
}
/*sortirati neparne kolone matreice u opadajuci (nerastuci) poredak
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX], i,j,red, kol,pom,r,k;
printf("Unesite dimenzije matrice:\n");
scanf("%d %d", &red, &kol);
printf("Unesite elemente matrice:\n");
for(r=0;r<red;r++)
{
for(k=0;k<kol;k++)
{
printf("Unosite [%d][%d] element: ", r+1,k+1);
scanf("%d", &mat[r][k]);
}
}
printf("Ispis:\n");
for(r=0;r<red;r++)
{
for(k=0;k<kol;k++)
{

printf("%d\t", mat[r][k]);
}
printf("\n");
}

for(k=1;k<kol;k=k+2)
{
for(r=0;r<red;r++)
{
for(r=0;r<red-1;r++)
{
for(j=r+1;j<red;j++)
{
if(mat[r][k]<mat[j][k])
{
pom=mat[r][k];
mat[r][k]=mat[j][k];
mat[j][k]=pom;
}
}
}
}
}
printf("Transformisana matrica je:\n");

for(r=0;r<red;r++)
{
for(k=0;k<kol;k++)
{
printf("%d\t", mat[r][k]);
}
printf("\n");
}

system("pause");
}
/* unosi se (m,n)>=4, ponavljati unos ako se neispravno unese, unijeti 2 niza- jedan sa
n, drugi sa m elemenata.
ako element niza nije prirodan ponoviti unos. naci u kom nizu je broj sa najvecim zbirom
cifara, a zatim u njega poslije tog br ubaciti elemente dr niza
poruka ako se ne mogu form*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int a[MAX], b[MAX], n, m, i, j, pom, c, s=0, maxca, maxcb,ima, imb,k=0;
do{
printf("Unesite 2 broja: ");
scanf("%d %d", &n, &m);
}while(n<4 || m<4);
printf("Unesite niz duzine %d.\n",m);
for(i=0;i<m;i++)
{
do{
printf("Unosite %d. element niza. ", i+1);
scanf("%d", &b[i]);
}while(b[i]<0);
}
printf("Unesite niz duzine %d.\n",n);
for(i=0;i<n;i++)
{
do{
printf("Unosite %d. element niza. ", i+1);
scanf("%d", &a[i]);
}while(a[i]<0);
}
//trazim max sumu cifara pojedinacnih nizova pa ih poredimo
maxca=maxcb=-1;
for(i=0;i<n;i++)
{
s=0;
pom=a[i];
while(pom!=0)
{
s+=pom%10;
pom/=10;
}
if(s>maxca)
{ maxca=s;
ima=i;
}

}
for(i=0;i<m;i++)
{
s=0;
pom=b[i];
while(pom!=0)
{
s+=pom%10;
pom/=10;
}
if(s>maxcb)
{
maxcb=s;
imb=i;
}
}
if(maxca>maxcb) //ubaciti b poslije "ima"-tog elementa u niz a
{
for(j=0;j<m;j++) //pomjeramo udesno za onoliko mjesta koliko ubacujemo
{
for(i=n-1;i>ima;i--)
{
a[i+1]=a[i];
}
n++;
}
k=0;
for(i=ima+1;i<=ima+m;i++)
a[i]=b[k++];
printf("Trans niz a je:\n");
for(i=0;i<n;i++) //n ostaje gornja granica jer smo radili n++ pri pomjeranju
printf("%d\n", a[i]);
}
else if(maxca<maxcb) //ubaciti a poslije "imb"-tog elementa u niz b
{
for(j=0;j<n;j++) //pomjeramo udesnom za onoliko mjesta koliko ubacujemo
{
for(i=m-1;i>imb;i--)
{
b[i+1]=b[i];
}
m++;
}
k=0;
for(i=imb+1;i<=imb+n;i++)
b[i]=a[k++];
printf("Trans niz b je:\n");
for(i=0;i<m;i++) //n ostaje gornja granica jer smo radili n++ pri pomjeranju
printf("%d\n", b[i]);
}
else
printf("NIJE MOGUCE IZVRSITI TRANSFORMACIJU\n");
system("pause");
}
/*
unos 2 stringa sa min duzinama 12 i 3 karaktera, ponavljati unos ako nije uslov ispunjen,
naci koliko puta se ponavlja drugi string u prvom*/
int i,br=0;
for(i=0;*(s1+i+2)!='\0';i++){
if(s1[i]==s2[0]&&s1[i+1]==s2[1]&& s1[i+2]==s2[2] && i==0 && s1[i+3]==' ')
br++;
else if(s1[i]==s2[0]&&s1[i+1]==s2[1]&& s1[i+2]==s2[2] && *(s1+i+3)=='\0' &&
s1[i-1]==' ')
br++;
else if(s1[i]==s2[0]&&s1[i+1]==s2[1]&& s1[i+2]==s2[2] && s1[i-1]==' ' &&
s1[i+3]==' ')
br++;
}
printf("Broj ponavljanja %s stigna u prvom stringu je: %d puta",s2,br);

//unijeti dva prirodna m i n sa tastaure(n,m<= 10) . ponavljati ako su


brojevi pogresno uneseni.
 
//zatim unijeti dva niza visecifrenih prirodnih brojeva jedan od m drugi od
n  elemenata
 
//u slucaju da broj nije visecifren i prirodan omoguciti ponovni unos
 
//transformisati drugi niz tako sto se posle broja sa najmanjim zbirom cifara
umetne broj sa najmanjim zbirom
 
// cifara iz prvog niza a ostali brojevi iz prvog niza se umetnu posle broja
 
//sa najvecim zbirom cifara u drugom nizu stampati pocetni i transf.niz
 
#include<stdio.h>
#include <string.h>
#define max 100
 
main()
{
      int m, n, a[max], b[max], i, j, max_a, max_b, min_a=0, min_b=0, s_a0=0,
sb_0=0;
      int imax_a, imax_b, imin_a=0, imin_b=0, s_a=0, s_b=0, pom, k=0;
      do
      {
            printf("Unesite dva prirodna broja: ");
            scanf("%d %d", &m, &n);
      }
      while(m>10 || m<0 || n<0 || n>10);
      printf("Unesite elemente niza sa %d elemenata: ", m);
      for(i=0; i<m; i++)
      {
            do{
                  printf("Unesite %d. element niza: ", i+1);
                        scanf("%d", &a[i]);
            }
            while(a[i]<10);
      }
      printf("Unesite elemente niza sa %d elemenata: ", m);
      for(i=0; i<n; i++)
      {
            do{
                  printf("Unesite %d. element niza: ", i+1);
                        scanf("%d", &b[i]);
            }
            while(b[i]<10);
      }
      printf("Unijeli ste nizove:\n");
      for(i=0; i<m; i++)
      {
            printf("%d", a[i]);
      }
      for(i=0; i<n; i++)
      {
            printf("%d", b[i]);
      }
      max_b=-1;
      pom=a[0];
      while(pom!=0)
            {
                  min_a=min_a+pom%10;
                  pom=pom/10;
            }
      for(i=1; i<m; i++)
      {
            s_a=0;
            pom=a[i];
            while(pom!=0)
            {
                  s_a=s_a+pom%10;
                  pom=pom/10;
            }
            if(s_a<min_a)
                  {
                        min_a=s_a;
                        imin_a=i;
            }
 
      }
      pom=b[0];
      while(pom!=0)
            {
                  min_b=min_b+pom%10;
                  pom=pom/10;
            }
      for(i=1; i<n; i++)
      {
            s_b=0;
            pom=b[i];
            while(pom!=0)
            {
                  s_b=s_b+pom%10;
                  pom=pom/10;
            }
            if(s_b<min_b)
                  {
                        min_b=s_b;
                        imin_b=i;
            }
            if(s_b>max_b)
            {
                  max_b=s_b;
                  imax_b=i;
            }}
     
      for(i=n-1; i>imin_b; i--)  //pomjeri se niz b  za jedno mjesto da se
ubaci min_a
            {
                  b[i+1]=b[i];
            }
            if(imax_b>imin_b)   //maks clan se nalazi poslije min clana pa se
pomjeranjem mijenja indeks
                  imax_b=imax_b+1;
      b[imin_b+1]=a[imin_a];  
//izbaciti min_a iz niza a
      for(i=imin_a+1; i<m; i++)  //pomjeriti za jedno mjesto lijevo
      {
            a[i-1]=a[i];
      }
      m--;
      for(j=0; j<m+1; j++)    //za m mjesta da bi se ubacili ostali clanova
niza a (m se smanjilo za 1)             //----zašto m+1
      {
            for(i=n-1; i>=imax_b+1; i--)
      {
            b[i+1]=b[i];
            }
            n++;
      }
      //ubacujemo ostatak niza a
      for(i=imax_b+1; k<m; i++)
      {
            b[i]=a[k++];
      }
      printf("Transformisani niz je:\n");
      for(i=0; i<n; i++)
            printf("%d", b[i]);
 
      system("Pause");
      }
3.****BEZ FUNKCIJE URADJENO***** Napisati program na programskom jeziku C kojim se u
funkciji main sa tastature unosi M stringova koji su u formi recenice, a zatim
se pozivom pomocne funkcije najkraca_rec odreduje najkraca rijec u toj recenici. Rijeci u
recenici su razdvojene blanko znakom . Smatrati
da na pocetku i kraju recenice nema bijelih znakova. Pronadjenu najkracu rijec, njenu duzinu i
string u kojem je pronadjena prikazati
na ekran u funkciji main.Ako je u recenici detektovan veci broj rijeci koje imaju pronadjenu
najkracu duzinu, prikazati na ekran posljednju od njih.
#include <stdio.h>
main()
{
   char s[50], sn[20], sp[50];
   int i,j,k=0,l,m,p=0,d=0,min=51,t; //min kao 1 br veci od elemenata niza
   printf("Unesi broj stringova i stringove\n");
   scanf("%d\n",&m);
   for (i=0;i<m;i++)
   {
       gets(s);
       for (j=0;s[j]!='\0';j++)
d++;
       for (j=0;j<=d;j++)
       {
           if(s[j]!=' ' && s[j]!='\0') k++; //brojanje duzina slova jedne rijeci
           else if(k!=0) //kad se dodje do prvog razmaka izvrsava se ovo
           {
               if (k<=min)
               {
                   t=d;
                   min=k;
                   for (l=j-k;l<j;l++) //smijestanje najkrace rijeci u poseban niz
                   {
                       sn[p]=s[l];
                       p++;
                   }
                   p=0;
                   for (l=0;s[l]!='\0';l++) //niz u koji se smijesta citav uneseni string u kome se nalazi
najkraca rijec
                   {
                       sp[p]=s[l];
                       p++;
                   }
                   p=0;
               }
               k=0; //resetovanje
           }
       }
       d=0;
   }
   sn[min]='\0';
   sp[t]='\0';
   printf("\nDuzina je %d, rijec je:\n%s\nString je:\n%s\n",min,sn,sp);
   system("pause");
}
/* unijeti string sa min duzinom 20 karaktera, zatim unijeti jedan visecifren broj, ako
unos nije ispravan ponoviti ga;
prevesti broj cifru po cifru u string tako sto ce svaka cifra biti predstavljena sa
rijecju koja se nalazi na tom rednom
mjestu u unesenom stringu;
unijeti string: pon uto sre cet pet sub ned
unijeti broj: 157
ispis: pon pet ned */

#include <stdio.h>
#include <string.h>
#define max 100
main()
{
char s[max], s1[max];
int d=0, i=0, j, b, c, id, pom, r=0;
printf("Unesite string: ");
do{
gets(s);
for(i=0; s[i]!='\0'; i++)
d++;
}
while(d<20);
do
{
printf("Unesite visecifren broj: ");
scanf("%d", &b);
}
while(b<10);
r=0;
for(i=0; s[i]!='\0'; i++)
{
id=0;
while(s[i]!=' ' && s[i]!='\0')
{
id=1;
i++;
}
r=r+id;
}
pom=b;
/*while(pom!=0)
{
c=pom%10;
pom=pom/10;

if(
*/
printf("%d", r);

system("pause");
}
ol2_2. Napisati program na C-u kojim se sa tastature unosi string S a zatim se vrši
izbacivanje svih uzastopnih visestrukih
ponavljanja njegovih karaktera tako da nakon izbacivanja u stringu ne ostane nijedan od
tih karaktera.
Stampati transformisani string. U zadatku nije dozvoljeno koristiti pomocne stringove.

ZELJKOVO RJESENJE:

#include<stdio.h>
#include<string.h>
#define _CRT_SECURE_NO_WARNINGS
#define MAX 100
main()
{
int i,j,k,m=0,n=0,p; // p-duzina stringa,m-pomocna varijabla(broj ponavljanja
karaktera),i,j,k brojaci
char S[MAX];
printf("\nUnesite string\n"); //unos stringa
scanf("%s",&S);
p=strlen(S); //izracunavanje duzine stringa
for(i=0;S[i]!='\0';i++)
{ if(S[i]==S[i+1]) // prolazak kroz elemente stringa i ispitivanje
da li je
// naredni element isti kao i taj na kom se
nalazimo, ako nije nema potrebe da
{ m=0; // vrsimo izbacivanje clanova
for(j=i;S[i]==S[j];j++) // ispitivanje koliko se puta uzastopno
ponavlja karakter
m++;
for(j=i+1;j<p-m+1;j++)
S[j]=S[j+m-1]; //Premjestanje elemenata(izbacivanje)
S[j]='\0';
}}
printf("\nTransformisan string je: %s\n",S); // stampanje stringa
system("PAUSE");
}
/*27.U programskom jeziku C ispitati da li je unesena matrica magicna matrica tj. da li
je zbir svake
kolone jednak zbirku svake vrste.
*/
#include <stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX], i,j,n,m,sr=0,sk=0,id=0,s=0,s1=0;
printf("Unesite dimenzije matrice\n");
scanf("%d %d", &n, &m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
printf("[%d][%d]= ",i+1,j+1);
scanf("%d", &mat[i][j]);
}
for(i=0;i<n;i++)
s+=mat[i][0]; //referentna suma
for(i=0;i<n;i++) //kroz redove
{
sr=0;
for(j=0;j<m;j++)
{
sr+=mat[i][j];
}
if(sr==s)
id++;
}
for(j=0;j<m;j++) //kroz kolone
{
sk=0;
for(i=0;i<n;i++)
sk+=mat[i][j];
if(sk==s)
id++;
}
if(id==n+m) //ovo znaci da vazi za svaki red i svaku kol, tj da imaju isti zbir
elemenata
printf("JESTE MAGICNA!\n");
else
printf("NIJE MAGICNA!\n");
system("Pause");
}

/*
23.Napisati pomocnu funkciju na C-u kojom se vrsi sifrovanje teksta tako sto svako slovo
zamjenjuje sa sledeca tri slova u
abecedi i svaku cifru zamjenjuje sa sljedece tri cifre iz ASCII tabele. Smatra se da posle zadnjeg
slova u abecedi slijedi
prvo slovo i tako redom a posle zadnje cifre opet prva cifra i tako redom. U funkciji main unijeti
sa tastature jedan string
a zatim pozivom pomocne funkcije izvrsiti izvrsiti sifrovanje njegovog teksta . U funkciji main
stampati pocetni i sifrovani
string. */

#include<stdio.h>
#define MAX 100
main()
{
char s[MAX], t[3*MAX];
char c, m;
int i, j, k=0, n,  b;
printf("Unesite string: ");
gets(s);
for(i=0; s[i]!='\0'; i++)
{
if(((s[i]>='a' && s[i]<='w') || (s[i]>='A' && s[i]<='W')) && s[i]!=' ')
{
c=s[i]+1;

for(j=0; j<3; j++)


t[k++]=c++;
}
else if((s[i]>'w' && s[i]<='z') || (s[i]>'W' && s[i]<='Z') && s[i]!=' ')
{
for(m=s[i], b=0; b<3; b++, m++)
{
if(m!='z' && m!='Z')
{
c=m+1;
t[k++]=c++;
}
else
{
c='a';
t[k++]=c++;
m=c-2;
}}
}
}

t[k]='\0';                    // NE ZABORAVI !!!!!!!!!!!!!!!!!!!!


puts(t);

system("Pause");
}

/***********ne radi kada se uzastopno unese podniz************


1. Napisati program na programskom jeziku C kojim se u funkciji main sa tastature unose
dva stringa, pri cemu unijeti stringovi trebaju biti

razlicitih duzina i potrebno je omoguciti ponovni unos ako taj uslov nije ispunjen.
provjeriti da li se kraci string

nalazi kao podniz u duzem stringu i ako nalazi , izvrsiti transformaciju duzeg stringa
tako da se iz njega

izbaci taj podniz . U slucaju da se kraci string ne nalazi kao podniz

u duzem stringu , izvrsiti transformaciju duzeg stringa tako što se kraci string nadoveze
na njega. U funkciji main

stampati na ekan transformisan duzi string.

Nije dozvoljena biblioteka string.h. */


#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s1[MAX], s2[MAX];
int i, j, d1, d2,id=0, br=0,k,p;
do{
printf("Unesite 2 stringa, prvi duzi, drugi kraci:\n");
gets(s1);
gets(s2);
d1=strlen(s1);
d2=strlen(s2);
}while(d1==d2 && d1<d2);
for(i=0;s1[i]!='\0';i++)
{

if(s1[i]==s2[0])
{
id=1;
for(j=1;j<d2;j++)
{
if(s1[i+1]==s2[j])
{
id++;
i++;
}
if(id==d2)
{
for(p=0;p<d2;p++)
{
for(k=i-d2+1;k<d1;k++)
{
s1[k]=s1[k+1];
}
}
}
}

}
}
puts(s1);
system("pause");
}

/*
17. Napisati program na C-u kojim se u funkciji main sa tastature unosi niz od 5
jednocifrenih prirodnih brojeva

(omoguciti ponovni unos ako broj ne ispunjava taj uslov). formirati i stampati na ekran

sve trocifrene brojeve koji se mogu formirati od brojeva unetih u niz, bez njihovog
ponavljanja. Takodje,

prikazati na ekran i broj formiranih trocifrenih brojeva.

*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int niz[MAX], n,i,j,br,k,id=0,pom=0;
for(i=0;i<5;i++)
{
do{
scanf("%d", &niz[i]);
}while(niz[i]<0 || niz[i]>9);
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
for(k=0;k<5;k++)
{
if(niz[i]!=niz[j] && niz[j]!=niz[k] && niz[k]!=niz[i])
{
br=niz[i]*100+niz[j]*10+niz[k];
id++;
printf("%d\n", br);

}
}
}
}
if(id==0)
printf("Nije moguce formirati brojeve:\n");
system("pause");
}

/*
26.Napisati program na C-u kojim se u funkciji main unosi string koji se sastoji od 5
karaktera.

formirati i stampati sve rijeci od 3 karaktera koje se mogu

formirati od karaktera unijetih u string bez njihovog ponavljanja.


*/

#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s[MAX], s1[MAX];
int i,j,n=0,m,d=0,k;
do{
printf("Unesite dtring od 5 karaktera:\n");
scanf("%s",s);
for(i=0;s[i]!='\0';i++)
d++;
}while(d!=5);
for(i=0;s[i]!='\0';i++)
{
for(j=0;s[j]!='\0';j++)
{
for(k=0;s[k]!='\0';k++)
{
if(s[i]!=s[j] && s[j]!=s[k] && s[i]!=s[k])
{
s1[n]=s[i];
s1[n+1]=s[j];
s1[n+2]=s[k];
s1[n+3]='\0';
n=0; //reset
printf("%s\n",s1);
}
}
}
}
system("pause");
}
/**************************zavrsiti ovo!!!!!!!!!!!!!!!!!!!!!!!!!!!!**********************
/*
Napisati program na C-u kojim se u funkciji main sa tastature unosi jedan realni broj a
zatim se pojedinacnih cifara tog realnog broja kreira string.
Pri kreiranju stringa, prvo se unose cifre decimalnog a zatim cjelobrojnog
dijela realnog broja. Broj cifara decimalnog dijela pri unosu u string zaokružiti na 3
cifre. U funkciji main stampati kreirani string.
*/

#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
float b,d;
int c,pom,i,j=0,n,pom,f,k,p,t,bc=0,c1,c2,c3;
char s[MAX];
printf("Unesite jedan realan broj: ");
scanf("%f", &b);
c=int(b); //cjelobrojni dio broja
d=(b-c)*1000; //dec. dio broja, zaokruzeno na 3 decimale
n=int(d); //da nam se dec. dio sacuva kao int vrijednost
printf("%f",d);
pom=n;
//prvo u string smijestamo dec. dio broja
c1=pom/100;
c2=(pom/10)%10;
c3=pom%10;
s[0]=c1;
s[1]=c2;
s[2]=c3;
s[3]=',';
pom=c;
while(pom!=0)
{
bc++;
pom/=10;
}
pom=c;
for(j=4;j<4+bc-1;j++)
{
while(pom!=0)
{
s[j++]='0'+pom%10;
pom/=10;
}
}
//trebamo se kretati kroz niz u dva smjera da obrnuto ispisemo cifre cjelobrojnog
dijela jer smo cifre unosioi od posljednje
j--; //pisemo j-1 jer se j povecalo 2 puta: u while i u for
//indeks ide do j-1, a ukuono je j elemenata u nizu
for(j=4;j<
{
pom=s[i];
s[i]=s[j-1-i];
s[j-1-i]=pom;
}
puts(s);
system("pause");
}
/*
4. Napisati program na C-u kojim se u funkciji main sa tastature unosi niz od 5 dvocifrenih
prirodnih brojeva(omoguciti
ponovni unos ako broj ne ispunjava taj uslov). U korisnickoj funkciji trocifreni formirati i
stampati na ekran sve
trocifrene brojeve koji se mogu formirati od pojedinacnih cifara dvocifrenih brojeva unijetih u
niz. Takodje, prikazati
na ekran i broj formiranih trocifrenih brojeva.
*/

#include<stdio.h>
#include <string.h>
#define MAX 100
main()
{
int a[MAX], i, j, k, c, b, v, n, m=0, pom[MAX+MAX], p=0;
printf("Unesite pet dvocifrenih prirodnih brojeva: ");
for(i=0; i<5; i++)
{
do
{
printf("Unosit %d. broj niza: ", i+1);
scanf("%d", &b);
if(b>9 && b<100 && m<MAX)
a[m++]=b;
}
while((b<10 || b>99) || m>=MAX);
}
for(i=0; i<m; i++)
{
v=a[i]/10;
pom[p++]=v;
n=a[i]%10;
pom[p++]=n;
}
for(i=0;i<p;i++)
printf("%d ", pom[i]);
for(i=0; i<p; i++)
{
for(j=0; j<p; j++)
{
for(k=0; k<p; k++)
{
//if(pom[i]!=pom[k] && pom[k]!=pom[j] && pom[i]!=pom[j])   ako se cifre ne smiju ponavljati
( {} )
if(pom[i]!=0)
{c=pom[i]*100+pom[j]*10+pom[k];
printf("c= %d.\n", c);
}
}
}
}
system("Pause");
}
/*unositi 3 cijela br, kad se unses neg prekinuti unos, u tri niza ih smjestiti, osim one
koja je prekinula unos trojka,
prvi br je ID kosarkasa, drugi je br minuta u igri, treci je br postiglih koseva koji
mora biti razlicit,
ako se unese isti omoguciti ponovo unos. naci id kosarkasa koji je postigao najvise
koseva po minuti
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int niz[MAX],id,m,k,i=0,j,br=0,idd;
float max=0;
//unos prve trojke
do{
printf("Unesite podatke:\n");
scanf("%d %d %d", &id, &m, &k);
if(id>=0 && m>0 && k>0)
{
niz[i++]=id;
niz[i++]=m;
niz[i++]=k;
}
else
printf("Ponoviti unos!\n");
}while(id<0 || m<0 || k<0);
//unos ostalih trojki
do{
printf("Unesite podatke:\n");
scanf("%d %d %d", &id, &m, &k);
br=0; //reset
if(id>=0 && m>0 && k>0 )
{
for(j=0;j<i;j=j+3)
{
if(niz[j]==id)
br++;
}
if(br==0)
{
niz[i++]=id;
niz[i++]=m;
niz[i++]=k;
}
}
else
printf("Ponoviti unos!\n");
}while(id>0 && m>0 && k>0);
for(j=0;j<i;j=j+3)
{
if(niz[j+2]/niz[j+1]>max)
{
max=niz[j+2]/niz[j+1];
idd=niz[j];
}
}
printf("%d\n",idd);
system("pause");
}

/*unos kv. matrice proizvoljne dimenzije, naci minimalni element u segmentu [2,5], ako ne
postoji ispisati,
ako postoji onda rotirati kolone sa min elementom i rotirati udesno,
*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX],min,i,j,k,dim,p=0,pom;
do{
printf("Unesite dimenziju matrice:\n");
scanf("%d", &dim);
}while(dim<5); //da bi se mogla izvrsiti transformacija!!!
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
scanf("%d", &mat[i][j]);
}
//ispis
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
printf("%d\t", mat[i][j]);
printf("\n");
}
//za intverval od druge do pete kolone
min=mat[0][2];//referentni clan
for(i=0;i>dim;i++)
{
for(j=2;j<=5;j++)
{
if(mat[i][j]<min)
min=mat[i][j];
}

}
//rotiranje matrice za iznos min elementa UDESNO
for(p=0;p<min;p++)
{
for(i=0;i<dim;i++)
{
pom=mat[i][dim-1];

for(j=dim-1;j>=0;j--)
mat[i][j]=mat[i][j-1];
mat[i][0]=pom;
}
}
printf("Transf. matrica je:\n");
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
printf("%d\t", mat[i][j]);
printf("\n");
}
system("pause");
}
#include<stdio.h> 
#include<string.h> 
#define MAX 100 
main() 

 
      int mat[MAX][MAX], min, i, j, k, dim, p, pom, id=0, jmin; 
      do 
      { 
            printf("Unesite dimenziju matrice: "); 
            scanf("%d", &dim); 
      } 
      while(dim>MAX); 
      printf("Unesite elemente matrice: \n"); 
      for(i=0; i<dim; i++) 
            for(j=0; j<dim; j++) 
      scanf("%d", &mat[i][j]); 
 
      printf("Unijeli ste matricu:\n"); 
      for(i=0; i<dim; i++) 
      { 
            for(j=0; j<dim; j++) 
                  printf("%d\t", mat[i][j]); 
            printf("\n"); 
      } 
      i=0; 
      j=0; 
      //za vrijednosti elemenata matrice u intervalu [2,5] 
      while(id==0 && i<dim && j<dim) 
      { 
            for(i=0; i<dim; i++) 
      { 
      for(j=0; j<dim; j++) 
      { 
             
            if(mat[i][j]>=2 && mat[i][j]<=5)           //da nadjemo prvi
element iz intervala 
      { 
            id++; 
            min=mat[i][j]; 
            jmin=j;} 
      } 
      } 
      } 
      if(id!=0) 
      { 
       
      for(i=0; i<dim; i++) 
      { 
      for(j=0; j<dim; j++) 
      { 
            if(mat[i][j]>=2 && mat[i][j]<=5) 
            { 
                  if(min>mat[i][j]) 
                        { 
                              min=mat[i][j]; 
                              jmin=j; 
                  } 
            } 
      } 
      } 
 
      //rotiramo nagore za 1 mjesto 
       
      pom=mat[0][jmin]; 
      for(i=0; i<dim-1; i++)  //prolazimo kroz sve redove jmin kolone 
      { 
            mat[i][jmin]=mat[i+1][jmin]; 
      } 
      mat[dim-1][jmin]=pom; 
 
 
      printf("Transf matrica je :\n"); 
      for(i=0; i<dim; i++) 
      { 
            for(j=0; j<dim; j++) 
                  printf("%d\t", mat[i][j]); 
            printf("\n"); 
      } 
      } 
      else printf("Nemoguce.\n"); 
       
             
 
 
 
system("pause"); 

POKUSAJ NEZAVRSENI
/*unos stringa sa min 20 karaktera, naci rijec sa min i max br karaktera,
zamijeniti im mjesta, ako ih ima vise jednake min max duzine uzeti onu prvu*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
char s[MAX],smin[MAX],smax[MAX];
int d,i,j,k,min,max,imin,imax,id,dr=0,p=0,t=0;
do{
printf("Unesite string: ");
gets(s);
d=strlen(s);
if(d<20)
printf("Ponoviti unos.\n");
}while(d<20);
//trazimo duzinu prve rijeci da bude referntno
i=0;
while(s[i]!='\0' && id==0)
{
if(s[i]!=' ')
dr++;
else
id++;
i++;
}
min=dr;
max=dr;
dr=0;
for(j=i;s[j]!='\0';j++)
{
dr=0;
while(s[j]!=' ' && s[j]!='\0' )
{
dr++;
j++;
}
if(dr<min)
{
min=dr;
imin=j-1; //indeks zadnjeg slova rijeci stringu
}
if(dr>max)
{
max=dr;
imax=j-1;
}
}
//pomocni stringovi za smjestanje najduze i najkrace rijeci
for(k=imin-min;k<=imin;k++)
smin[p++]=s[k];
for(k=imax-max;k<=imax;k++)
smax[t++]=s[k];
//pomjeramo string s za max mijesta od (imin-min)-tog indeksa
if(imax-max<imin-min) //poredimo prv3e indekse max i min rijeci, ako ovaj if vazi, posle
pomijeranje ostaje isti indeks onog koji je prije,
//a da se pomjerio imax-max=imax-max+min i obrnuto
{
for(i=0;i<max;i++)
{
for(j=imin-min;j<=imin-min+max;j++)
{
s[j+1]=s[j];
}

system("pause");
}
/*zamjena mjesta simetricno u odnosu na glavnu dijaginalu, bez diranja onih elemenata na
sporednoj dijagonali*/
#include<stdio.h>
#include<string.h>
#define MAX 100
main()
{
int mat[MAX][MAX], i,j,n,pom;
scanf("%d", &n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%d", &mat[i][j]);
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if((i+j)!=n-1 && i!=j) //posto je u odnosu na glavnu dijagonalu, ne
ukljucujemo elemente na njoj, a prema uslovu zadatka ni na sporednoj!!!!
{
pom=mat[i][j];
mat[i][j]=mat[j][i];
mat[j][i]=pom;
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t", mat[i][j]);
}
printf("\n");
}

system("pause");
}

You might also like