Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

LAB Prakt AIP Vezba 6 2017

UNIVERZITET U NIŠU
ELEKTRONSKI FAKULTET
KATEDRA ZA RAČUNARSTVO

ALGORITMI I PROGRAMIRANJE
Zadatak za samostalni rad za 6. laboratorijsku vežbu
oblast: STRINGOVI I FAJLOVI

Zadatak 1.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
program koji iz fajla "brojevi.txt" učitava niz celih brojeva, određuje njihovu aritmetičku
sredinu i upisuje je na kraj istog fajla.

#include <stdio.h>
void main() {

int x, S=0, i=0;


FILE* f;

f = fopen("brojevi.txt", "r+");

if (!f) {
printf("Greska. Fajl nije pronadjen u direktorijumu.");
return;
}

while (!feof(f)) {
fscanf(f, "%d", &x);
S += x;
i++;
}

fprintf(f, "\nAritmeticka sredina je: %d.", S/i );


fclose(f);

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Zadatak 2.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
program koji izdvaja reči iz zadate rečenice, i svaku izdvojenu reč upisuje u novi red
tekstualnog fajla "reci.txt".

#include <stdio.h>
#include <string.h>
void main() {

char red[255], delimetri[]=" .,!?()", *rec;


FILE* f;

f = fopen("reci.txt", "w");

if (!f) {
printf("Doslo je do greske prilikom otvaranja ili kreiranja fajla.");
return;
}

gets(red);
rec = strtok(red, delimetri);

while (rec) {
fprintf(f, "%s\n", rec );
rec = strtok(NULL, delimetri);
}

fclose(f);

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Zadatak 3.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
program koji prikazuje sva slova unete rečenice koja se u rečenici javljaju k ili više puta.
Rečenicu u vidu stringa zadaje korisnik, kao i celobrojni parametar k.

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

void main() {

char red[255], nadjeno[100];


int k, i, j, n=0, N=0;

//ucitavanje reda i parametra k


gets(red);
scanf("%d", &k);

//za svako slovo u ucitanom redu


for (i = 0; i <= strlen(red); i++) {

//pretrazujemo samo slova


if (!((red[i] >= 65 && red[i] <= 90) || (red[i] >= 97 && red[i] <= 122)))
continue;

j = 0;
n = 0;

//broji dok ne nadjes k takvih slova ili dok ne stignes do kraja


while (n <= k && j <= strlen(red) ) {
if (red[j] == red[i]) n++;
j++;
}

//ako si naso k takvih slova, upisi to slovo u niz -nadjeno- na prvo


slobodno mesto ukoliko takvo slovo jos uvek nije u tom nizu
if (n >= k) {
j = 0;
while (j <= N && nadjeno[j] != red[i]) j++;
if (j == N+1) nadjeno[++N] = red[i];
}

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

//stampaj niz nadjenih slova


for (i = 1; i <= N; i++) printf("%c ", nadjeno[i]);

/*
red = niz karaktera u koji se upisuje ucitani red
nadjeno = niz karaktera u koji se upisuju nadjena slova
k = parametar koji se trazi u zadatku
i, j = pomocni brojaci
n = pomocni brojac za nadjena jednaka slova
N = broj nadjenih odgovarajucih slova

U ASCII je
A=65
Z=90
a=97
z=122
*/

Zadatak 4.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

program koji zadatu rečenicu modifikuje tako što poslednju reč prebacuje na početak
rečenice.
Smatrati da su reči razdvojene sa po tačno jednim blanko znakom. Rečenicu u vidu stringa
zadaje korisnik. Prikazati modigikovani string.
#include <stdio.h>
#include <string.h>

void main() {

char red[255], *posRec, Rec[255], red1[255];

gets(red);
strcpy(red1, red);

posRec = strtok(red, " ");


while (posRec) {
strcpy(Rec, posRec);
posRec = strtok(NULL, " ");
}

strncpy(red, red1, strlen(red1) - strlen(Rec));


strcat(Rec, " ");
strcat(Rec, red);

Rec[strlen(red1)] = '\0';
printf("%s\n", Rec);
}
/*
red1 se uvodi jer funkcija strtok menja sadrzaj stringa red s toga se pravi kopija
unetog sadrzaja kako ne bi bio izgubljen.
*/

Zadatak 5.

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni


program koji za zadatu rečenicu R određuje i prikazuje broj svih pojavljivanja neke zadate
reči.
#include <stdio.h>
#include <string.h>

void main() {

char R[255], Rec[255], *ind;


int n=0;

gets(R);
scanf("%s", Rec);

ind = R - 1;
while (ind = strstr(ind + 1, Rec)) n++;

printf("%d\n", n);
}

Zadatak 6.
U fajlu „binarne-cifre.txt“ zapamćene su binarne cifre nekog pozitivnog celog broja i to tako
da je na početku fajla zapamćena cifra najmanje težine, a za njom i ostale cifre po težini,
svaka
u novom redu. Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati
strukturni program koji iz zadatog fajla čita cifre i prikazuje dekadnu reprezentaciju
zapamćenog binarnog broja.

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

#include <stdio.h>
#include <math.h>

void main() {

FILE* f;
int c, B=0, i=0;

f = fopen("binarne-cifre.txt", "r");

if (!f) {
printf("Doslo je do greske prilikom otvaranja fajla.");
return;
}

while (!feof(f)) {
fscanf(f, "%d", &c);
B += c * pow(2, i++);
}

printf("Dekadno: %d\n", B);


fclose(f);
}

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Zadatak 7.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
program koji proverava da li tekst u fajlu "tekst.txt" sadrži reč koju zadaje korisnik sa
tastature.

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

void main() {

FILE* f;
char rec[50], trazeno[50];
int nadjeno = 0;

f = fopen("tekst.txt", "r");
gets(trazeno);

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

if (!f) {
printf("Doslo je do greske prilikom otvaranja fajla.");
return;
}

while (!feof(f) && !nadjeno) {


fscanf(f, "%s", rec);
if (!strcmp(rec, trazeno)) nadjeno = 1;
}

if (nadjeno) printf("Tekst sadrzi trazenu rec."); else printf("Tekst ne sadrzi


trazenu rec.");
fclose(f);
}

Zadatak 8.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
program koji vrši nadovezivanje jednog zadatog stringa na drugi zadati string bez korišćenja
bibliotečke funkcije strcat. Prikazati unete stringove, kao i rezultujući string.
Opciono: nadovezivanje implementirati u vidu korisničke funkcije nadovezi(...)
#include <stdio.h>
char* nadovezi(char* s1, char* s2) {
int i = 0, j = 0;

while (s1[i] != '\0') i++;

while (s2[j] != '\0') {


s1[i + j] = s2[j];
j++;
}

s1[i + j] = s2[j];
return s1;

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

void main() {

char s1[100], s2[100];

gets(s1);
gets(s2);
nadovezi(s1, s2);

printf("%s\n", s1);
}

Zadatak 9.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni
program kojim unetu rečenicu "ispravlja" tako što sva velika slova zamenjuje odgovarajućim
malim slovima. Prikazati modifikovani string. Napomena: razlika kodova odgovarajućih slova
u ASCII tabeli je uvek konstantna i iznosi 'a'-'A'.
#include <stdio.h>

void main() {

char r[100];
int i;

gets(r);
for (i = 0; i <= strlen(r); i++)
if (r[i] >= 65 && r[i] <= 90) r[i] += 'a' - 'A';

printf("%s\n", r);
}

Zadatak 10.
Nacrtati strukturni dijagram toka algoritma i na programskom jeziku C napisati strukturni

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

program koji učitava rečenicu po rečenicu iz fajla "recenice.txt", i u fajl "sadrze.txt" upisuje
samo one koje imaju više od m karaktera.

#include <stdio.h>

void main() {

FILE *f, *g;


char recenice[255];
int i = 0, m, j, k=0, l, poc=0;

scanf("%d", &m);
f = fopen("recenice.txt", "r");
g = fopen("sadrze.txt", "w");

if (!f || !g) {
printf("Doslo je do greske prilikom otvranja ili kreiranja fajlova.");
return;
}

while (!feof(f))
fscanf(f, "%c", &recenice[i++]);

for (j = 0; j < i - 1; j++) {


if (recenice[j] == '.' || recenice[j] == '!' || recenice[j] == '?') {

if (k > m) {
for (l = poc; l <= k + poc; l++) fprintf(g, "%c",
recenice[l]);
}
k = -1;
poc = j + 1;
}
k++;

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

}
fclose(f);
fclose(g);
}
/*
recenice = niz karaktera u koji se prepisuje ucitani fajl recenice.txt;
i = pomocni brojac u koji se smesta (broj karaktera)+1 ucitanih iz fajla recenice.txt;
m = parametar trazen u zadatku;
j = pomocni brojac kojim se prolazi for petljom kroz sve ucitane karaktere sacuvane u
nizu -recenice-;
k = brojac karaktera od posledenjeg znaka interpunkcije ili od pocetka dokumenta za
prvi put;
poc = skladisti indeks prvog karatera u nizu nakon prethodnog znaka interpunkcije (ili
pocetak niza za prvi put);
l = pomocni brojac za upisivanje u fajl sadrze.txt recenice od trenutnog indeksa -poc-
do novopronadjenog znaka interpunkcije;
*/

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Gavric Aleksandar
LAB Prakt AIP Vezba 6 2017

Gavric Aleksandar

You might also like