You are here

Ndihme per nje Fuksion ne gjuhen C

Administratori's picture

Përshëndetje të gjithëve,përshëndetje edhe anonimit 2: nëse nuk ke mundësi/nuk dëshiron të ndihmosh dikë (edhe thjesht duke i kërkuar të shprehet më mirë), mjafton të mos shkruash.Nuk ka nevojë t´i kërkosh falje anonimit 1, i kërkoj unë, në emër të gjithë përdoruesve të AlbLinux!.Anonimi 1:a- E kuptoj që proçedura e regjistrimit në AlbLinux është tepër e komplikuar (!?!) por, sidoqoftë, mjafton të shtosh një nick/emër në fund të mesazhit. Kush kërkon ndihmë është mirë të mos e kërkojë si anonim.b- Mos kërko/shpreso asnjëherë të marrësh zgjidhje të gatshme në forum: shumë-shumë mund t´ju jepet ndonjë skemë për t´ju ndihmuar në zgjidhjen e problemit (kur ky i fundit shtrohet në menyrë korrekte).c- Dhe e fundit, po të jap adresën nga ku mund të shkarkosh në formatin PDF njërin prej teksteve më të plotë mbi C: shpresoj që italishtja të mos jetë problem për Ju.Kliko këtu. Janë rreth 650 faqe: printoje dhe mbaje afër.

Forume: 
x_files's picture

Quote:

11-08-2005 në orën 06:47, Anonymous :
Meso te flasisht se pari shqip ore DUD, e hiqju C-sss se seshte per katundar!!


Ne radhe te pare me vjen keq per kete shprehje sepse zoti anonim asnje nuk ka lindur i ditur dhe ai qe kerkoi ndihme eshte shprehur mjaft mire.

Ne fakt dy zgjidhjet e mepareshme mu duken me shume si ne gjuhen java dhe nuk ishin ne ANSI C

Ne C nuk mund te te besh:
String fjala=""; //nuk ka tip te tille primitive ne C
fjala+=´c´; //nuk lejohet, sepse nje string eshte thjesht nje array karakteresh me gjatesi fikse e pandryshueshme
Te pakten mos shkruani kot me kot.
Per ate qe pyeti shpresoj te mos jem vone sepse sapo e pashe mesazhin
Do mundohem te kthej pergjigje sa me pare.

COReE's picture

Atehere, te dashur zoterinj. Fajin me sa duket e paskam une........!
Kush ka pershkruar algoritmin(pseudokod) dhe kush ka shkruar kodin qe e ndjek, eshte i njejti person. COReE
Efektivisht kodi eshte ne Java (faleminderit atyre qe ma thane!), dhe ne mos gaboj siper kodit eshte shkruajtur me te medha, dhe per njerez me syze si "bythe kavanozi", qe duhet perkthyer ne C. Pastaj po hani kokat me nje problem qe te interesuarit me siguri nuk i duhet me.

Shenim: shprehja eshte e qellimshme.

x_files, je plot kurajo mor djale me pelqen, por lexo ato dreq mesazhe deri ne fund per nje here ne jeten tende.

Me respekt COReE

Ahh, sapo me erdhi nje ide idiote, laurent po pse shkrimin ne furume nuk e ben me regjistrim te detyruar? Do evitoje keto mesazhe te kota dhe forumi do merrte nje hije me serioze, apo e kam gabim?

[ Ky Mesazh është ndryshuar nga: COReE më 08-09-2005 00:37 ]

x_files's picture

[ Ky Mesazh është ndryshuar nga: x_files më 08-09-2005 11:07 ]

x_files's picture

Ne rregull COReE
Faleminderit per Verejtjen dhe respektin
por fatkeqesisht nuk mbaj syze
nuk e kuptova ate "shprehjen e qellimshme"
jam dakord qe duhet te lejohen vetem mesazhe te regjistruara
sepse do ishte me serioze

Edhe pse atij personit mbase nuk i duhet me kjo zgjidhje problemi
une e bera timen dhe po e jap:


/*

Atehere sipas kerkeses me shume se nen stringa duhej gjetur nen bashkesia me e madhe e perbashket
por duke respektuar rendin e germave.

Fjala1={n,s,d,e,n,s,g,h,t,r,i,n,g,a}
Fjala2={s,w,q,t,r,i,f,n,g}

rezultati do te jete ´string´

nje zgjidhje do ishte kjo:

1-gjejme fjalen me gjatesi me te vogel dhe e emerojme fjala1
2-fjalen tjeter e emerojme fjala2
3-meqenese rezultati nuk mund te jete me i madh se fjala me gjatesi me te vogel
me ane te malloc() ose calloc() marrim dinamikisht nje array me gjatesi
sa ajo e fjales 1.
4-per cdo germe te fjales 1 kontrollojme cdo germe te fjales 2 duke filluar nga pozicioni i germes qe u gjet e fundit.
5-nese gjate ciklit germa1==germa2
axhornojme pozicionin e fundit ne fjalen 2
i shtojme nje germe rezultatit
axhornojme indeksin e rezultatit

Ne kete menyre respektojme renditjen e germave duke qene te sigurt se cdo shkronje e fjales 2 eshte kontrolluar
kontrolli nuk behet para pozicionit te fundit te gjetur sepse do te thyhej renditja.

Kodi i plote me poshte

*/

/****************************************************************/

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

char* gjejNenStringen(char *fjala1,char *fjala2){
char * rezultati;

//ku do te memorizojme rezultatin

char * ndihmese;

//ndryshore ndihmese

int gjatesia1,gjatesia2,i,j,k,pos;

/*
nese fjala1 eshte me e madhe se fjala2
ndryshojme vendet qe fjala1 te jete me gjatesine me te vogel
*/

if(strlen(fjala1)>strlen(fjala2)){
ndihmese=fjala1;
fjala1=fjala2;
fjala2=ndihmese;
}

//gjejme gjatesite perkatese sepse do na duhen gjate programit

gjatesia1=strlen(fjala1);
gjatesia2=strlen(fjala2);

/*
gjatesia e rezultatit nuk mund te jete me e madhe se gjatesia
e fjales me te vogel keshtu qe marrim dinamikisht nje array karakteresh
me gjatesine e fjales se pare
kujtoj qe calloc(int gjatesia,int permasa) perfton nje array elementesh me gjatesine "gjatesia" dhe
masen e c´do elementi sa "permasa"
*/

rezultati=(char*)calloc(gjatesia1,sizeof(char));

pos=0;

//inicializojme pozicionin e shkronjes se fundit te gjetur

k=0;

//dhe indeksin e rezultatit

//per cdo shkronje te fjales se pare

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

//kontrollo cdo shkronje te fjales se dyte duke filluar aty ku u gjet
//shkronja e fundit dmth pos

for(j=pos;j<gjatesia2 && pos<gjatesia2;j++){

//nese jane te njejta

if(fjala1

==fjala2[j]){
rezultati[k]=fjala1[i]; [i]//memorizo shkronjen ne rezultat

k++;

//rrit indeksin e rezultatit

pos=j+1;

//modifiko pozicionin nje me siper se shkronja qe u gjet

break; //dil nga cikli se nuk ka me nevoje te vazhdoje[/i]
}
}
}
rezultati[k]=´\0´;

//shkronjen e fundit te rezultatit e bejme null per te
//shenuar fundin e fjales

return rezultati;

//kthejme adresen e fjales qe perftuam
//kujtojme qe kemi nje char pointer

}

/*
testojme funksionin e krijuar
ne nje main e cila merr si parametra fjalet nga rreshti i komandes
duke mos pasur nevoje rikompilimin sa here duam te testojme fjale te reja
*/

int main(int argc,char **argv){
char *res;
if(argc!=3){

//argv[0] eshte emri i exe-se qe po ekzekutoni

printf("Perdorimi: %s fjala1 fjala2",argv[0]);
return 0;
}

res=gjejNenStringen(argv[1],argv[2]);
printf("%s",res);
return 1;
}

/******************************************************************/

kopjo kodin ,kompiloje dhe testoje
funksionon mjaft mire

[ Ky Mesazh është ndryshuar nga: x_files më 08-09-2005 11:09 ]

x_files's picture

Do shtoja edhe nje verejtje vetes
mbas calloc() malloc() ose realloc()
ne fund te programit ose kur nuk na sherben me, eshte
e nevojshme te leshojme memorien e zene me free()
pra funksionit te mesiperm i shtojme perpara mbylljes:

free(rezultati);

[ Ky Mesazh është ndryshuar nga: x_files më 11-09-2005 16:44 ]