Vous êtes sur la page 1sur 19

Select(ion)-sort

void SelectionSort (<tip> niz[], int n)


{
int i, j, min;
for (i=0; i<n-1; i++)
{
for (min=i, j=i+1; j<n; j++)
if (niz[j]<niz[min]) min=j;
if (min!=i)
{
<tip> pom=niz[i]; niz[i]=niz[min]; niz[min]=pom;
}
}
}

Insert(ion)-sort
void InsertionSort (<tip> niz[], int n)
{
int i, j;
for (i=1; i<n; i++)
{
<tip> x=niz[i];
for (j=i; j>0 && x<niz[j-1]; j--)
niz[j]=niz[j-1];
niz[j]=x;
}
}

Shell-sort

void ShellSort (<tip> niz[], int n)


{
int i, j, h;
for (h=n/2; h>0; h/=2)
{
for (i=h; i<n; i++)
{
<tip> x=niz[i];
for (j=i; j>=h && x<niz[j-h]; j-=h)
niz[j]=niz[j-h];
niz[j]=x;
}
}
}

Bubble-sort
void BubbleSort (<tip> niz[], int n)
{
int i, j;
for (i=0; i<n-1; i++)
{
for (j=0; j<n-i-1; j++)
if (niz[j]>niz[j+1])
{
<tip> pom=niz[j];
niz[j]=niz[j+1];
niz[j+1]=pom;
}
}
}

Quick-sort
void qSort(int niz[], int begin, int end)
{

if (begin < end)


{
int pivot = split(niz,begin,end);
qSort(niz, begin, pivot-1);
qSort(niz, pivot+1, end);
}
}
int split(int niz[], int begin, int end)
{
int i=begin, j=end;
int pivot = niz[begin];
while (i<j)
{
while (niz[i]<=pivot && i<j) i++;
while (niz[j]>pivot) j--;
if (i<j)
{
int pom=niz[i];
niz[i]=niz[j];
niz[j]=pom;
}
}
niz[begin] = niz[j];
niz[j] = pivot;
return j;
}

Merge-sort
void mergeSort(int niz[], int begin, int end)
{
if (begin<end)

{
int sredina = (begin + end)/2;
int i, j,k, len=end-begin+1;
int pom[len];
mergeSort(niz, begin, sredina);
mergeSort(niz, sredina+1, end);
/* spajanje */
i=begin; j=sredina+1; k=0;
while (i<=sredina && j<=end)
pom[k++] = (niz[i]<=niz[j]) ? niz[i++] : niz[j++];
while (i<=sredina) pom[k++]=niz[i++];
while (j<=end) pom[k++]=niz[j++];
for (i=0; i<len; i++) niz[begin+i] = pom[i];
}
}

Upis studenata u datoteku


#include<stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
void citaj(STUDENT *);
void upis(STUDENT*,int,FILE *);
void pisi_u_fajl(STUDENT *student, FILE *dat);
int main()
{
int i,n;
FILE *dat;
STUDENT *studenti;
printf("Unesite broj studenata:");
scanf("%d",&n);
studenti=(STUDENT *)malloc(n*sizeof(STUDENT));

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


{
printf("Podaci o %d. studentu:\n " ,i+1);
citaj(studenti+i);
}
if (dat = fopen("studenti.txt", "w"))
{
upis(studenti,n,dat);
fclose(dat);
}
free(studenti);
return 0;
}
void citaj(STUDENT *student)
{
printf("Prezime: ");
scanf("%s",student->prezime);
printf("Ime: ");
scanf("%s",student->ime);
printf("Indeks: ");
scanf("%s",student->indeks);
printf("Prosjek: ");
scanf("%f",&student->prosjek);
}
void upis(STUDENT *student, int n, FILE *dat)
{
int i;
fprintf(dat, "=== ========== ===============
========== =======\n");
fprintf(dat, "RB. IME
PREZIME
INDEKS
PROSJEK\n");
fprintf(dat, "=== ========== ===============
========== =======\n");
for (i = 0; i < n; i++)
{
fprintf(dat, "%2d. ", i + 1);
pisi_u_fajl(student + i, dat);
}
fprintf(dat, "=== =========== ===============
========= =======");
}
void pisi_u_fajl(STUDENT *student, FILE *dat)
{

fprintf(dat, "%-10s %-15s %-10s %6.2f\n",student->ime, student>prezime, student->indeks, student->prosjek);


}

ITANJE STUDENTa IZ DATOTEKE


#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
int ucitaj(FILE *in, STUDENT *s) {
return fscanf(in, "%*d. %s %s %s %f", s->indeks, s->prezime, s->ime,
&s->prosjek);
}
void ispis(STUDENT *niz, int n) {
int i;
printf("=== ======= ====================
==================== =======\n");
printf("RB. INDEKS PREZIME
IME
PROSJEK\n");
printf("=== ======= ====================
==================== =======\n");
for (i = 0; i < n; i++)
printf("%2d. %s %-20s %-20s %6.2f\n", i + 1,
niz[i].indeks, niz[i].prezime, niz[i].ime, niz[i].prosjek);
printf("=== ======= ====================
==================== =======\n");
}
int main()
{
int i, p, n = 0, c = 10; char s[100];
FILE *in;
STUDENT st, *niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (in =fopen("studenti.txt", "r")) {
fgets(s, 100, in); fgets(s, 100, in); fgets(s, 100, in);

do {
if ((p = ucitaj(in, &st)) == 4) {
if (n == c)
niz = (STUDENT *)realloc(niz, (c *= 2) * sizeof(STUDENT));
niz[n++] = st;
}
} while (p);
fclose(in);
}
ispis(niz, n);
free(niz);
return 0;
}

BINARNA
#include<stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
void citaj(STUDENT *);
int main()
{

int i,n;
FILE *fp;
STUDENT *studenti;
printf("Unesite broj studenata:");
scanf("%d",&n);
studenti=(STUDENT *)malloc(n*sizeof(STUDENT));
for(i=0; i<n; i++)
{
printf("Podaci o %d. studentu:\n " ,i+1);
citaj(studenti+i);
}

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


{
printf("%-10s %-10s %-10s %6.2f\n",studenti[i].prezime,
studenti[i].ime,studenti[i].indeks, studenti[i].prosjek);
}
if(fp=fopen("studentBIN.dat", "wb"))
{
fwrite(studenti, sizeof(STUDENT), n, fp);
fclose(fp);
}
else printf("Greska otvaranja datoteke!");
free(studenti);
return 0;
}
void citaj(STUDENT *student)
{
printf("Prezime: ");
scanf("%s",student->prezime);
printf("Ime: ");
scanf("%s",student->ime);
printf("Indeks: ");
scanf("%s",student->indeks);
printf("Prosjek: ");
scanf("%f",&student->prosjek);
}
#include<stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
void pisi(STUDENT *);
int main(int argc,char *argv[])
{
int i, n = 0, c = 10, p;
STUDENT *niz, jedan;
FILE *dat;
if(argc<2) printf("Greska!!!");

else
{
niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (dat = fopen(argv[1], "rb"))
{
do
{
p = fread(&jedan, sizeof(STUDENT), 1, dat);
if (p)
{
if (n == c) niz = (STUDENT *)realloc(niz, (c *= 2) *
sizeof(STUDENT));
niz[n++] = jedan;
}
}
while (p);
fclose(dat);
}
printf("=== =============== ===============
=======\n");
printf("RB. PREZIME
IME
PROSJEK\n");
printf("=== =============== ===============
=======\n");
for (i = 0; i < n; i++) printf("%2d. ", i + 1), pisi(niz + i), printf("\n");
printf("=== =============== ===============
=======");
free(niz);
}
return 0;
}
void pisi(STUDENT *niz)
{
printf("%-15s %-15s %6.2f", niz->prezime, niz->ime, niz->prosjek);
}
SELECTION SORT STUDENTI
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];

char prezime[20];
char indeks[10];
float prosjek;
} STUDENT;
int ucitaj(FILE *in, STUDENT *s)
{
return fscanf(in, "%*d. %s %s %s %f", s->indeks, s->prezime, s->ime,
&s->prosjek);
}
void ispis(STUDENT *niz, int n)
{
int i;
printf("=== ======= ====================
==================== =======\n");
printf("RB. INDEKS PREZIME
IME
PROSJEK\n");
printf("=== ======= ====================
==================== =======\n");
for (i = 0; i < n; i++)
printf("%2d. %s %-20s %-20s %6.2f\n", i + 1,
niz[i].indeks, niz[i].prezime, niz[i].ime, niz[i].prosjek);
printf("=== ======= ====================
==================== =======\n");
}
int main()
{
int i, p, n = 0, c = 10;
char s[100];
FILE *in;
STUDENT st, *niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (in =fopen("studenti.txt", "r"))
{
fgets(s, 100, in);
fgets(s, 100, in);
fgets(s, 100, in);
do
{
if ((p = ucitaj(in, &st)) == 4)
{
if (n == c)
niz = (STUDENT *)realloc(niz, (c *= 2) * sizeof(STUDENT));
niz[n++] = st;

}
}
while (p);
fclose(in);
}
ispis(niz, n);
printf("\n\n\n--------------------------------------------------------------\n\n");
selection_sort(niz,n);
ispis(niz, n);
free(niz);
return 0;
}

void selection_sort(STUDENT *niz, int n)


{
int i, j, min;
STUDENT pom;
for (i = 0; i < n - 1; i++)
{
for (min = i, j = i + 1; j < n; j++)
if (niz[j].prosjek > niz[min].prosjek) min = j;
if (min != i)
{
pom.prosjek = niz[i].prosjek;
niz[i].prosjek = niz[min].prosjek;
niz[min].prosjek = pom.prosjek;
}
}
}

MERGE SORT
#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
char ime[20];
char prezime[20];
char indeks[10];

float prosjek;
} STUDENT;
int ucitaj(FILE *in, STUDENT *s)
{
return fscanf(in, "%*d. %s %s %s %f", s->ime, s->prezime, s->indeks,
&s->prosjek);
}
void ispis(STUDENT *niz, int n)
{
int i;
printf("=== ======= ====================
==================== =======\n");
printf("RB. INDEKS PREZIME
IME
PROSJEK\n");
printf("=== ======= ====================
==================== =======\n");
for (i = 0; i < n; i++)
printf("%2d. %s %-20s %-20s %6.2f\n", i + 1,
niz[i].indeks, niz[i].prezime, niz[i].ime, niz[i].prosjek);
printf("=== ======= ====================
==================== =======\n");
}
int main()
{
int i, p, n = 0, c = 10;
char s[100];
FILE *in;
STUDENT st, *niz = (STUDENT *)malloc(c * sizeof(STUDENT));
if (in =fopen("studenti.txt", "r"))
{
fgets(s, 100, in);
fgets(s, 100, in);
fgets(s, 100, in);
do
{
if ((p = ucitaj(in, &st)) == 4)
{
if (n == c)
niz = (STUDENT *)realloc(niz, (c *= 2) * sizeof(STUDENT));
niz[n++] = st;
}
}

while (p);
fclose(in);
}
ispis(niz, n);
printf("\n\n\n--------------------------------------------------------------\n\n");
//selection_sort(niz,n);
merge_sort(niz, 0, n - 1);
ispis(niz, n);
free(niz);
return 0;
}

void merge_sort(STUDENT *niz, int begin, int end)


{
if (begin < end)
{
int sredina = (begin + end) / 2, i, j, k, len = end - begin + 1;
STUDENT *pom = (STUDENT *)malloc(len * sizeof(STUDENT));
merge_sort(niz, begin, sredina);
merge_sort(niz, sredina + 1, end);
i = begin; j = sredina + 1; k = 0;
while (i <= sredina && j <= end)
pom[k++] = (niz[i].prosjek > niz[j].prosjek) ? niz[i++] : niz[j++];
while (i <= sredina)
pom[k++] = niz[i++];
while (j <= end)
pom[k++] = niz[j++];
for (i = 0; i < len; i++)
niz[begin + i] = pom[i];
free(pom);
}
}

SORTIRANJE PO SAMOGLASNICIMA
#include <stdio.h>

#include <stdlib.h>
int brojSamoglasnika(char *);
void sort(char **, int);
int main()
{
int n, i;
char **rijec;
printf("Broj rijeci: ");
scanf("%d", &n);
rijec=(char **)malloc(n * sizeof(char *));
for(i=0; i<n; i++)
{
rijec[i] = malloc(100*sizeof(char));
}
for(i=0; i<n; i++)
{
printf("%d. rijec: ", i+1);
scanf("%s", rijec[i]);
}
sort(rijec, n);
for(i=0; i<n; i++)
{
printf("%s\n",rijec[i]);
}
return 0;
}
void sort(char **rijec, int n)
{
int i, j, max;
char **pom;
for(i=0; i<n-1; i++)
{
for(max=i, j=i+1; j<n; j++)
if((brojSamoglasnika(rijec[j])) > (brojSamoglasnika(rijec[max])))
max=j;
if(max!=i)
{
pom=rijec[i];
rijec[i]=rijec[max];
rijec[max]=pom;
}
}
}

int brojSamoglasnika(char *rijec)


{
int duzina=strlen(rijec), i;
int brojSamoglasnika = 0;
for(i=0; i<duzina; i++)
{
if(tolower(rijec[i]) == 'a')brojSamoglasnika++;
if(tolower(rijec[i]) == 'e')brojSamoglasnika++;
if(tolower(rijec[i]) == 'i')brojSamoglasnika++;
if(tolower(rijec[i]) == 'o')brojSamoglasnika++;
if(tolower(rijec[i]) == 'u')brojSamoglasnika++;
}
return brojSamoglasnika;
}
SABIRANJE BROJEVA U DATOTECI
#include <stdio.h>
#include <stdlib.h>
//koristiti tekst.txt
int main(int argc, char *argv[])
{
FILE *dat1, *dat2;
char string[100], znak;
int i, broj, s = 0;
dat1=fopen(argv[1], "r");
if(dat1!=NULL)
{
i=0;
while((znak=fgetc(dat1))!=EOF)
{
if (znak >= '0' && znak <= '9')
{
string[i]=znak;
i++;
}
else
{
if(i != 0)
{
string[i]=0;
printf("%s\n", string);
broj = atoi(string);

s += broj;
}
i = 0;
}
}
if(i != 0)
{
string[i]=0;
printf("%s\n", string);
broj = atoi(string);
s += broj;
}
fclose(dat1);
}
dat2=fopen(argv[2], "w");
if(dat2!=NULL)
{
fprintf(dat2, "Suma %d", s);
fclose(dat2);
}
return 0;
}
SORTIRANJE PO TACKAMA X Y
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct ta
{
float x,y;
} TACKA;
void citaj(TACKA *);
int main()
{
TACKA *t;
int i,j,n;
printf("Broj tacaka za unos je:");
scanf("%d",&n);
t=(TACKA*)malloc(n*sizeof(TACKA));
for(i=0; i<n; i++)

{
printf("Podaci o tacki br.%d: \n",i+1);
citaj(t+i);
}
bubble_sort(t,n) ;
for(i=0; i<n; i++)
{
printf("X:%.3f Y:%.3f \n",t[i].x,t[i].y );
}
return 0;
}
void citaj(TACKA *t)
{
printf("X koordinata: ");
scanf("%f",&t->x);
printf("Y koordinata: ");
scanf("%f",&t->y);
}
void bubble_sort(TACKA *t, int n)
{
int i, j;
TACKA pom;
for (i = 0; i < n - 1; i++)
{
for (j = 0; j < n - i - 1; j++)
{
if (t[j].x < t[j + 1].x)
{
pom.x = t[j].x;
t[j].x = t[j + 1].x;
t[j + 1].x = pom.x;
}
else if(t[j].x==t[j+1].x)
{
if (t[j].y < t[j + 1].y)
{
pom.y = t[j].y;
t[j].y = t[j + 1].y;
t[j + 1].y = pom.y;
}
}

}
}
}
N rijeci u DATOTECI
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void broj(char **, int, int);
int main()
{
FILE *dat;
char **rijec, word[100];
int c=10, n=0, br,i;
rijec=(char **)malloc(c * sizeof(char *));
for(i=0;i<c;i++){
rijec[i] = malloc(100*sizeof(char));
}
printf("Broj ponavljanja: "); scanf("%d", &br);
if (dat = fopen("A.txt", "r"))
{
while (fscanf(dat,"%s", word)!=EOF)
{
if (n == c) rijec = (char **)realloc(rijec, (c *= 2) * sizeof(char *));
strcpy(rijec[n++], word);
}
fclose(dat);
}
for(i=0; i<n; i++)
printf("%s\n", rijec[i]);
printf("\n\n\n");
broj(rijec, n, br);
return 0;
}
void broj(char **rijec, int n,int br)
{

int i, j, brojac=0;
for(i=0; i<n; i++)
{
brojac=0;
for(j=i; j<n; j++)
{
if (strcmp(rijec[i], rijec[j])==0)
brojac++;
}
if ((brojac) == br) printf("\nRijec %s se pojavljuje %d puta.\n", rijec[i],
brojac);
}
}

Vous aimerez peut-être aussi