1. ADEM VELIKA
Teze Strukture te dhenash nen C
Qershor 2013
1.Te shkruhet nje program per njesimin e shumes 1/(1+2)+3/(2+3)+5/(3+4)+...... .te merren
N thyesa.
Ne fillim te serise kemi thyesen ( )
,pas saj vjen thyesa ( )
dhe e e treta ( )
.Sic shihet
qarte numuruesi rritet me +2 ndersa po te kryejme veprime nen emerues do te kemi formen
: 1/3+3/5+5/7......n; Duke perdorur dy variabla a dhe b me vlere filllestare a=1 dhe b=3
llogarisim shumen .
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
float a=1,b=3,s=0;int n,i;
printf("Jep numurin thyesave :");
scanf("%d",&n);
for(i=0;i<n;i++){
s=s+a/b;
a=a+2;
b=b+2;
}
printf("shuma e %d thyesave eshte %.3f",n,s);
getch();
return 0;
}
Duhet te bejme kujdes qe variablat a dhe b ti deklarojme te tipit float sepse perndryshe do
te kishim rezulatat te gabuar(nqs a dhe b deklarohen te tipit int atehere dhe s mer vlere
int).Ky program mund te thjeshtohet edhe me shume duke perdorur vetem nje variabel
(a).Ne strukturen ‘for’ programi do te marri formen e meposhtme.
for(i=0;i<n;i++){
2. ADEM VELIKA
s=s+a/(a+2);
a=a+2;
}
2.Te shkruhet nje funksion per njesimin e shumes dhe prodhimit te elementeve te tabeles
T[n] me numra te plote.
Sic shihet nga kerkesa funksioni duhet te ktheje shumen dhe prodhimin e elementeve te
tabeles ,pra ai duhet te jete i tipit void.Me poshte jepen funksioni.
void funksion(int t[],int n,int &s,int &p)
{
s=0;
p=1;
for(int i=0; i<n; i++)
{
s=s+t[i];
p=p*t[i];
}
}
Ne funksionet void thirrja behet sipas references (adreses) .Me ndihmen e strukures ‘for
‘behet e mundur mbledhja dhe njekohesisht me te edhe shumezimi.Me poshte jepet dhe
programi plote.
#include <stdio.h>
#include<stdlib.h>
#include <conio.h>
const int n=4;
void funksion(int t[],int n,int &s,int &p)
{
s=0;
p=1;
for(int i=0; i<n; i++)
{
s=s+t[i];
p=p*t[i];
}
}
int main()
{
int s,p;
int t[n]= {1,2,3,4};
funksion(t,n,s,p);
printf("shuma eshte %dnprodhimi eshte %d",s,p);
getch();
return 0;
3. ADEM VELIKA
}
3.Te shkruhet nje program rekursiv per njesimin ,ku A>0.
Funksioni rekursiv duhet te kete nje kusht ndalimi dhe ne rastin tone ai do te jete:
if(n==0)
return 1;
Variabli a do te shumezohet n-here me veten nepermjet instruksionit a*funksion(a,n-1);
derisa n te jete 0 dhe te kthej numrin 1 i cili duke u shumezuar me vleren e llogaritur nuk
ia ndryshon vleren.Kushti i ndaljes mund te behet edhe ne kete menyre:
if(n==1)
return a; duke bere keshtu nje veprim me pak.
Me poshte po japim programin e plote
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int funksion(int a,int n)
{
if(n==0)
return 1;
else return a*funksion(a,n-1);
}
int main()
{
int f,a,n;
printf("Jep numurin a dhe n(a^n)n");
scanf("%d%d",&a,&n);
f=funksion(a,n);
printf("%d%s%d%s%d",a,"^",n,"=",f);
getch();
return 0;
}
4.Te shkruhet ne program qe largon nga skedari tekst nr.txt te gjithe numurat negative.
Dihet qe nga skedari tekst nuk mund te fshihen te dhenat ,por vetem mund te mbishkruhet
mbi to duke fshire te dhenat ekzistuese.Per te realizuar kekesen e dhene do te hapim nje
4. ADEM VELIKA
skedar te ri text nrnew.txt ku te hedhim vetem numurat qe jane me te medhenj se 0 (keshtu
nuk kalojme ne skedarin e ri numurat negative).
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *f,*f1;int numur;
f=fopen("nr.txt","rt");
f1=fopen("nrnew.txt","wt");
while(!feof(f)){
fscanf(f,"%d",&numur);
if(numur>0)
fprintf(f1,"%dn",numur);
}
fclose(f);
fclose(f1);
return 0;
}
5.Te shkruhet nje funksion qe largon nga lista lineare l,elementin e fundit te saj.
Po japim fillimisht programin.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct element
{
int vlere;
struct element *next;
} lista;
lista *krijo(lista *l,int n)
{
int i,nr;
for(i=0; i<n; i++)
{
scanf("%d",&nr);
lista *tmp;
tmp=new element;
tmp->vlere=nr;
5. ADEM VELIKA
tmp->next=l;
l=tmp;
}
return l;
}
lista *hiqelfund(lista *l)
{
lista *tmp,*sh;
sh=l;
if(l->next==NULL) //nese kemi vetem nje element
{
tmp=l;
l=l->next;
delete(tmp);
}
else //2 ose me shume elemente
{
while(l->next->next!=NULL)
l=l->next;
tmp=l->next;
l->next=tmp->next;
delete(tmp);
l=sh;
}
return l;
}
void afisho(lista *l)
{
while(l!=NULL)
{
printf("%d-->",l->vlere);
l=l->next;
}
}
int main()
{
int n;
lista *l;
l=NULL;
printf("me sa elemete doni qe ta krijoni listen? :n");
scanf("%d",&n);
6. ADEM VELIKA
printf("jepni elementet:n");
l=krijo(l,n);
printf("lista origjinale eshte:n");
afisho(l);
//tani behet afishimi kur eshte hequr elemeti i fundit
l=hiqelfund(l);
printf("nlista pa elementin e fundit eshten");
afisho(l);
getch();
return 0;
}
Funksioni jone eshte me shkronja te pjerreta dhe bold,ne kodin e mesiperm ai eshte
aktivizuar ne programin e plote.
Fig.1
Me siper jepet skema e nje liste lineare.Ne funksion kemi instruksionin while(l->next-
>next!=NULL)
e cila bene te mundur qe shenjuesi te ndaloje ne elementin e parafundit ne menyre qe te
hiqet elementi i fundit(fig.1) .Me ane te instruksionit tmp=l->next ne bejme te mundur qe
shenjuesi tmp te lidhet me elementin e fundit dhe me pas instruksioni l->next=tmp->next;
lidh elementin e parafundit me NULL.Shenjuesi sh barazohet fillimisht me l dhe shenjojne
qe te dy te fillim te listes .Ne fund me ane te barazimit l=sh; l shenjon perseri ne fillim te
listes.Rasti if(l->next==NULL) vlen per rastin kur ne liste eshte vetem nje element.
6.Te shkruhet nje funksion qe numeron gjethet e nenpemes se majte te pemes binare p.
NULL
Ketu behet
ndalimi i
shenuesit
Tmp
7. ADEM VELIKA
Me poshte jepet funksioni.
int nrGjethesh(peme *p)
{
if(p->djathte==NULL&&p->majte==NULL)
return 1;
else
return nrGjethesh(p->djathte)+nrGjethesh(p->majte);
Ndersa struktura qe perdoret eshte si me poshte :
typedef struct kulm
{
int vlere;
struct kulm *majte;
struct kulm *djathte;
} peme;
Duhet bere kujdes ne main per aktivizimin e ketij funksioni .Kerkesa kerkon gjethet e
nenpemes se majte,ndersa funksioni numeron gjethet e nje peme binare.Duke qene se
nenpema e majte eshte gjithashtu nje peme ,ne main ai do te aktivizohet si:
variabel=nrGjethesh(p->majte);
*Shenim:Fjala variabel perdoret per nje variabel te cfaredoshem i zgjedhur nga ju:
psh : int a=nenpeme(p->majte);
nenpema e majte
*Shenim:
Keto programe jane kompiluar me Dev-C++.