Teknikat dhe Gjuhet e Programimit Laborator 1
Tema: Pёrdorimi i kushteve logjike (switch…case, if…else) Detyrё 1: Ndёrtoni njё program ne gjuhёn C i cili lexon njё numёr nga tastier a dhe printon nё ekran numrin me fjalё. Psh. Nqs jepet numri 4 nё ekran shfaqet “katёr”, nqs jepet numri 3 afishohet “tre”, nqs jepet numri 2 afishohet “dy”, nqs jepet numri 1 afishohet “njё”, dhe nqs numri ёshtё i ndryshёm nga kjo bashkёsi numrash afishohet “numёr tjetёr”. Cili ёshtё kushti logjik mё i pёrshtatshёm pёr t’u pёrdorur ne kёtё situatё? Pse? Mund tё zёvendёsohet ai me ndonjё kusht tjetёr? Cfarё funksioni ka instruksioni break nё kete rast? Provoni tё mos e pёrdorni. Cfarё ndodh gjatё kompilimit? Po gjatё ekzekutimit? Zgjidhje: #include int main() { int i; printf("Jepni nje numer: "); scanf("%d",&i); switch(i) { case 4: {printf("kater "); break;} case 3: {printf("tre "); break;} case 2: {printf("dy "); break;} case 1: {printf("nje "); break;} default: {printf("numer tjeter!"); break;} } return 0; } Detyrё 2: Duke ditur qё lojerat Olimpike mbahen njё herё nё katёr vjet nё vitet qё plotёpjesёtohen me katёr, dhe numёrimi i popullsisё behet njё herё nё dhjetё vjet, ndёrtoni njё program ne gjuhёn C i cili pёr njё vit tё lexuar nga tastier a, tregon nqs nё kёtё vit zhvillohen lojёrat Olimpike, bёhet numёrimi i popullsisё apo tё dyja bashkё. Pёrdorni kushtet logjike if…else. Pёrdorni komente gjate shkrimit tё kodit.
Zgjidhje: #include main() { int viti; /* Kerkohet si input nga perdoruesi viti */ printf(Cili printf(Cili eshte viti qe doni te kontrolloni? "); scanf(" %d", &viti); /* Kontrolli nqs viti i dhene ploteson ndonje nga kushtet */ if (((viti % 4)==0) && ((viti % 10)==0)) { printf("Ne kete vit zhvillohen edhe lojarat Olimpike edhe numerimi i popullsise!"); return 0; } if ((vit % 4)==0) { printf("Ne kete vit zhvillohen vetem lojerat Olimpike"); } else { if ((viti % 10)==0) { printf("Ne kete vit behet vetem numerimi i popullsise "); } } return 0; }
1
Teknikat dhe Gjuhet e Programimit
Laborator 2
Tema: Pёrdorimi i cikleve logjike (while, do...while, for) Pёrdorimi i instruksioneve break dhe continue brenda cikleve. Pёrdorimi i funksionit random(). Detyrё 1: Ndёrtoni njё program nё gjuhёn C i cili printon ne ekran te gjithё numrat pozitivё mё tё vegjёl se 1000 qё plotёpjesёtohen me 5. a) Duke pёrdorur ciklin ‘for’ b) Duke pёrdorur ciklin ‘while’ c) Duke perdorur ciklin ‘do...while’
Zgjidhje: a) #include
int main() { int i; for(i=5;i<=1000;i=i+5) printf(“%d\t”,i); return(0); }
b) #include int main() { int i; i=5; while (i<=1000) { printf(“%d\t”,i); i=i+5; } return(0); }
c)#include int main() { int i; i=0; do { i=i+5; printf(“%d\t”,i); }while (i<=1000) return(0); }
Detyrё 2: Shkruani kodin e mёposhtёm nё kompilatorin e gjuhёs C dhe tregoni cfarё realizon kodi nё tё dy rastet. Pёrshkruani ndryshimin midis instruksioneve break dhe continue. a) #include main() { int i; for (i=1; i<=10; i++) { printf("%d ", i); break; //nderpret menjehere ciklin printf("Programi ne C\n"); } return 0; } b) #include main() { int i; for (i=1; i<=10; i++) { printf("%d ", i); continue;//nderpret ekzekutimin e bllokut te instruksioneve brenda ciklit printf("Programi ne C\n"); } return 0; }
Detyrё 3: Ndёrtoni njё program i cili printon nё ekran nё mёnyrё rastё sore 20 numra nga intervali [5...30], duke patur parasysh qё i njёjti numёr tё mos gjenerohet 2 herё tё njёpasnjёshme. Kini kujdes qё tё gjenerohen saktesisht 20 numra.
2
Teknikat dhe Gjuhet e Programimit
Zgjidhje: #include #include #include int main(void) { int i; int temp,j; printf("20 numrat e gjeneruar rastesisht jane:\n"); i=0; while( i < 20) { j = rand()%25 + 5; if ( j != temp) { temp = j; printf("\n%d\n", temp); i++; } } getchar(); getchar(); getchar(); return 0; }
3
Teknikat dhe Gjuhet e Programimit Laborator 3 Tema: Pёrdorimi i vektorёve. Manipulimi i tё dhёnave me to. Detyrё 1: Ndёrtoni njё program nё gjuhёn C. Deklaroni njё vektor me 10 elementё numra tё plotё. Mbusheni kёtё vektor me tё dhёna nga pёrdoruesi (lexohen nga tastiera). Llogarisni dhe afishoni mesataren e kёtyre numrave, numrin mё tё vogёl dhe mё tё madh.
Zgjidhje: #include void main(void) { int numrat[10]; int totali; float mesatare=0.0; int max, min; int i; printf("Jepni 10 numra: "); for (i=0;i<10;i++) scanf("%d",&numrat[i]); /* Llogaritet totali */ for (i=0; i<10; i++) { totali += totali[i]; } /* Llogaritet mesatarja */ mesatarja = (float)totali/10; /* Llogaritet minimumi dhe maksimumi i vektorit */ min = numrat[0]; max = numrat[0]; for(i=0;i<10;i++) { if (numrat[i]max) max = numrat[i]; } printf("Mesatarja eshte:%f",mesatarja); printf("Minimumi eshte:%d",min); printf("Maksimumi eshte:%d",max); return(0); }
Detyrё 2: Ndёrtoni njё program nё gjuhёn C qё lexon 2 vektore V1 dhe V2 nga tastiera me pёrmasa pёrkatёsisht N=10 dhe M=8. Ndёrtoni njё vektor tё ri B i cili pёrmban elementёt vektorёve V1 dhe V2 tё renditur.
Zgjidhje: #include int main() { int V1 [10]; int V2[8]; int B[18]; int i,j, temp; printf("Jepni 10 numrat e vektorit V1: "); for (i=0;i<10;i++) {scanf("%d",&V1[i]); scanf("%d",&B[i]);}
4
Teknikat dhe Gjuhet e Programimit printf("Jepni 8 numrat e vektorit V2: "); for (i=0;i<8;i++) {scanf("%d",&V2[i]); scanf("%d",&B[10+i]);} for (i=0;i<17;i++) for(j=i+1;j<18;j++) if (B[i]
Detyrё 3: Ndёrtoni programin nё gjuhёn C i cili pёr njё fjalё tё dhёnё tregon nqs ajo ёshtё apo jo palindromё. Palindromё quhet njё fjalё e cila lexohet njёsoj nga tё dy anёt, psh ara, abccba, etj.
Zgjidhje: #include #include void main() { char fjala[50]; int n; int i; printf("Jepni fjalen\n"); scanf("%s", &fjala); n = strlen(fjala); for(i = 0; i < n/2; i++) { if (fjala[i] == fjala[n-i-1]) { if (i == (n/2 - 1) ) printf("Fjala eshte palindrome"); } else { printf("fjala nuk eshte palindrome"); i=2*n; } } getchar(); getchar(); }
5
Teknikat dhe Gjuhet e Programimit Laborator 4 Tema: Vektorёt 2 dimensionalё. Detyrё 1:Shkruani njё program ne gjuhen C i cili lexon njё matrice katrore te rendit te 3 dhe llogarit rreshtin me shumёn mё tё madhe tё elementёve. Programi duhet tё afishojё kёtё shumё.
Zgjidhje: #include #include int main(void) { const int N = 3; int i,j; int matrica[N][N]; int norma,s; for (i = 0; i < N; i++) { for(j = 0; j < N; j++) scanf("%d", &matrica[i][j]); printf("\n"); } norma = 0; for (i = 0; i < N; i++) { s=0; for(j = 0; j < N; j++) s = s + abs(matrica[i][j]); if (s > norma) norma = s; } printf("Norma e matrices eshte %d", norma); return 0; } Detyrё 2: Pёrdorimi i debugging pёr tё gjetur gabimet logjike nё program. Vendosni njё breakpoint nё ciklin for nё programin qё shkruat nё Detyrёn1. Ekzekutojeni programin duke e ndjekur me kod instruksion pas instruksioni. Vёreni si ndryshojnё vlerat e variablave j,s dhe norma, gjatё ekzekutimit hap pas hapi. Gabimet qё mund tё evidentohen nё kёtё menyrё janё gabime logjike dhe jo gabime sintakse.
a) b) c) d) e)
Detyrё 3: Pёr kodin e mёposhtёm i cili implementon lojen Tic Tac Toe, duke analizuar kodin e dhёnё pёrgjigjuni pyetjeve tё mёposhtme: Cilat janё shenjat dalluese pёr secilin lojtar, me tё cilin ai identifikon kutinё qё ka zgjedhur. Eshtё e thjeshtё tё ndryshohen kёto shenja nё kod? Cfarё tregon instruksioni for(i = 0; i<9 && winner==0; i++), duke u nisur nga p ёrdorimi i tij nё program. Ekzekutoni programin. Pas kёsaj tregoni bllokun e kodit ku ndёrtohet figura e lojёs . Sa herё bёhet kontrolli per fitues? Pse? Si merret parasysh rasti kur pёrdoruesi zgjedh njё numёr qё nuk ёshtё nё kutinё e lojёs? Pra, duhet tё zgjedhё numrat 1 -9 qё i pёrkasin kutisё sё lojёs, dhe zgjedh 15. Tregoni nё kod instruksionet qё bёjnё kёtё kontroll.
6
Teknikat dhe Gjuhet e Programimit /* Loja Tic-Tac-Toe */ #include int main(void) { int player = 0; /* Numri i lojtarit - 1 or 2 */ int winner = 0; /* Lojtari fitues */ int choice = 0; /* Kutia e zgjedhur */ int row = 0; /* Index i rreshtit te kutise se zgjedhur */ int column = 0; /* Index i kolones se kutise se zgjedhur */ int line=0; /* Row or column index in checking loop */ int i; char board[3][3] = { /* Figura e lojes */ {'1','2','3'}, /* Vlerat fillestare */ {'4','5','6'}, /* perdoren per te zgjedhur kutine*/ {'7','8','9'} /* nga lojtari i radhes. */ }; /* Cikli kryesor. Loja ekzekutohet per max 9 veprime */ /* Per aq kohe sa nuk ka asnje fitues */ for(i = 0; i<9 && winner==0; i++) { /* Shfaq Figuren e Lojes */ printf("\n\n"); printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]); printf("---+---+---\n"); printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]); printf("---+---+---\n"); printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]); player = i%2 + 1;
/* Zgjidh lojtarin */
do { printf("\nLojtari %d, Ju lutemi vendosni nr e kutise " "Ku doni te vendosni %c: ", player,(player==1)?'X':'O'); scanf("%d", &choice); row = --choice/3; /* Merr index-in e rreshtit te kutise se zgjedhur */ column = choice%3; /* Merr indexin e kolones se kutise se zgjedhur */ }while(choice<0 || choice>9 || board[row][column]>'9'); /* Vendoset simboli i lojtarit X per 1 dhe O per 2 board[row][column] = (player == 1) ? 'X' : 'O';
*/
/* Kontrollo per rresht, shtylle apo diagonale fituese diagonalje kontrollohet e para */ if((board[0][0]==board[1][1] && board[0][0]==board[2][2]) || (board[0][2]==board[1][1] && board[0][2]==board[2][0])) winner = player; else /* Kontroll per rreshtat dhe kolonat */ for(line = 0; line <= 2; line ++) if((board[line][0]==board[line][1] && board[line][0]==board[line][2])||
7
Teknikat dhe Gjuhet e Programimit (board[0][line]==board[1][line] && board[0][line]==board[2][line])) winner = player; } /* Loja perfundon, shfaqet Figura perfundimtare e Lojes */ printf("\n\n"); printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]); printf("---+---+---\n"); printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]); printf("---+---+---\n"); printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]); /* Shfaq mesazhin rezultat */ if(winner == 0) printf("\nLoja nuk ka fitues!\n"); else printf("\nUrime, Lojtari %d, ESHTE FITUES!\n", winner); getchar(); getchar(); return 0; }
8
Teknikat dhe Gjuhet e Programimit Laborator 5 Tema: Strukturimi i programeve n ё funksione. Strukturat, p ёrdorimi i tyre. Skedarёt dhe manipulimi i tyre nё gjuhёn C. 3
Detyrё 1: Ndёrtoni programin i cili sasinё e ujit ne m tё njё pishine. Ndёrtoni njё funksion qё kёrkon gjatёsinё, gjerёsinё dhe thellёsinё e pishinёs. Njё funksion tjetёr qё llogarit sasinё 3 nё m tё pishinёs, dhe njё funksion tjetёr qё printon rezultatin. Funksioni main() duhet t’i kaloje vlerat e variablave midis funksioneve me adresё.
Zgjidhje: #include main() { float gjatesi, gjeresi, thellesi, kubik; merrVlera(&gjatesi, &gjeresi, &thellesi); llogaritKubik(&gjatesi, &gjeresi, &thellesi, & kubik); printoKubik(&kubik); return 0; } merrVlera (float *gjatesi, float *gjeresi, float *thellesi) { printf("Cila eshte gjatesia e pishines? "); scanf(" %f", &*gjatesi); printf("Cila eshte gjeresia e pishines? "); scanf(" %f", &*gjeresi); printf("Cila eshte thellesia e pishines? "); scanf(" %f", &*thellesi); return 0; }
llogaritKubik (float *gjatesi,float *gjeresi,float *thellesi,float *kubik) { *kubik = (*gjatesi) * (*gjeresi) * (*thellesi); return 0; } printoKubik(float *kubik) { printf("\Pishina eshte %f meter kub feet\n", *kubik); return 0; }
Detyrё 2: Ndёrtoni programin nё gjuhёn C i cili krijon njё skedar tekst dhe shkruan nё tё emrat e 5 studenteve mё tё mirё tё lex uar nga tastiera.
Zgjidhje: #include FILE *fp; main() { fp = fopen("EMRAT.DAT", "w");
9
Teknikat dhe Gjuhet e Programimit
fputs("\n", fp); fputs("Mira Braho\n", fp); fputs("Arben Tirana\n", fp); fputs("Elia Damiani\n", fp); fputs("Paula Hiro\n", fp); fclose(fp); return 0; }
Detyrё 3: Ndёrtoni njё strukturё me 2 argumenta integer dhe nej argument karakter. Ndёrtoni njё funksion qё merr si parametёr nje variabёl te tipit strukturёn e krijuar mё sipёr. Ky funksion printon nё ekran vlerat e atributeve tё variablit strukturё. Pёrfshijeni kёte funksion nё njё program nё gjuhёn C, ku i jepet vlerё variablit strukturё.
Zgjidhje: #include struct struct_type { int a, b; char ch; } ; void f1(struct struct_type parm); int main(void) { struct struct_type arg; arg.a = 1000; f1(arg); return 0; } void f1(struct struct_type parm) { printf(''%d", parm.a); }
10