أنت هنا:برمجها»اللغة س»حلول التمارين الجزء ب
حلول التمارين - الجزء ب حلول التمارين - الجزء ب
قيم الموضوع
(0 أصوات)

 تجد هنا حلول جميع التمارين للدرسين 7 و8. هذا يمثل الجزء الثاني من سلسلة حلول التمارين.

 الدرس 7: الجداول »» »»

التمرين 7.1
التمرين 7.2
التمرين 7.3
التمرين 7.4
التمرين 7.5
التمرين 7.6
التمرين 7.7
أ) جداول أحادية البعد-المتجهات
التمرين 7.8
التمرين 7.9
التمرين 7.10
التمرين 7.11
التمرين 7.12
التمرين 7.13
التمرين 7.14
التمرين 7.15
التمرين 7.16
ب) جداول ثنائية البعد - المصفوفات
التمرين 7.17
التمرين 7.18
التمرين 7.19
التمرين 7.20
التمرين 7.21
التمرين 7.22
التمرين 7.23
التمرين 7.24

التمرين 7.1

#include <stdio.h>
main() { int T[50]; int I,N; long SOM;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &T[I]); } printf("The given array :\n"); for (I=0; I<N; I++) printf("%d ", T[I]); printf("\n"); for (SOM=0, I=0; I<N; I++) SOM += T[I]; printf("Sum of the elements : %ld\n", SOM); return 0; }

التمرين 7.2

#include <stdio.h>
main() { int T[50]; int N; int I,J;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &T[I]); } printf("Given array : \n"); for (I=0; I<N; I++) printf("%d ", T[I]); printf("\n"); for (I=0, J=0 ; I<N ; I++) { T[J] = T[I]; if (T[I]) J++; } N = J; printf("Resulted array :\n"); for (I=0; I<N; I++) printf("%d ", T[I]); printf("\n"); return 0; }

التمرين 7.3 

#include <stdio.h>
main() { int T[50]; int N; int I,J; int AIDE;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &T[I]); } printf("Given array : \n"); for (I=0; I<N; I++) printf("%d ", T[I]); printf("\n"); /* نعكس الجدول */ for (I=0, J=N-1 ; I<J ; I++,J--) /* T[I] و T[J] تبادل قيمتي*/ { AIDE = T[I]; T[I] = T[J]; T[J] = AIDE; } printf("Resulted array :\n"); for (I=0; I<N; I++) printf("%d ", T[I]); printf("\n"); return 0; }

التمرين 7.4

#include <stdio.h>
main() { int T[50], TPOS[50], TNEG[50]; int N, NPOS, NNEG; int I;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &T[I]); } printf("Given array :\n"); for (I=0; I<N; I++) printf("%d ", T[I]); printf("\n"); NPOS=0; NNEG=0; for (I=0; I<N; I++) { if (T[I]>0) { TPOS[NPOS]=T[I]; NPOS++; } if (T[I]<0) { TNEG[NNEG]=T[I]; NNEG++; } } printf("array TPOS :\n"); for (I=0; I<NPOS; I++) printf("%d ", TPOS[I]); printf("\n"); printf("array TNEG :\n"); for (I=0; I<NNEG; I++) printf("%d ", TNEG[I]); printf("\n"); return 0; }

التمرين 7.5

#include <stdio.h>
main() { int T[50][50]; int L, C; int I, J; long SOM;
printf("Number of rows (max.50) : "); scanf("%d", &L ); printf("Number of columns (max.50) : "); scanf("%d", &C ); for (I=0; I<L; I++) for (J=0; J<C; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &T[I][J]); } printf("Given array :\n"); for (I=0; I<L; I++) { for (J=0; J<C; J++) printf("%7d", T[I][J]); printf("\n"); } for (SOM=0, I=0; I<L; I++) for (J=0; J<C; J++) SOM += T[I][J]; printf("Sum of the elements : %ld\n", SOM); return 0; }

التمرين 7.6

#include <stdio.h>
main() { int T[50][50]; int L, C; int I, J; long SOM;
printf("Number of rows (max.50) : "); scanf("%d", &L ); printf("Number of columns (max.50) : "); scanf("%d", &C ); for (I=0; I<L; I++) for (J=0; J<C; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &T[I][J]); } printf("Given array :\n"); for (I=0; I<L; I++) { for (J=0; J<C; J++) printf("%7d", T[I][J]); printf("\n"); } for (I=0; I<L; I++) { for (SOM=0, J=0; J<C; J++) SOM += T[I][J]; printf("Sum - rows %d : %ld\n",I,SOM); } for (J=0; J<C; J++) { for (SOM=0, I=0; I<L; I++) SOM += T[I][J]; printf("Sum - column %d : %ld\n",J,SOM); } return 0; }

التمرين 7.7

#include <stdio.h>
main() { int M[10][10]; int V[100]; int L, C; int I, J;
printf("Number of rows (max.10) : "); scanf("%d", &L ); printf("Number of columns (max.10) : "); scanf("%d", &C ); for (I=0; I<L; I++) for (J=0; J<C; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &M[I][J]); } printf("Given array :\n"); for (I=0; I<L; I++) { for (J=0; J<C; J++) printf("%7d", M[I][J]); printf("\n"); } for (I=0; I<L; I++) for (J=0; J<C; J++) V[I*C+J] = M[I][J]; printf("Resulted array : "); for (I=0; I<L*C; I++) printf("%d ", V[I]); printf("\n"); return 0; }

التمرين 7.8 

#include <stdio.h>
main() { int U[50], V[50]; int N; int I; long PS;
printf("Dimension of arrays (max.50) : "); scanf("%d", &N ); printf("** First array **\n"); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &U[I]); } printf("** Second array **\n"); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &V[I]); } /* حساب الجداء السلمي */ for (PS=0, I=0; I<N; I++) PS += (long)U[I]*V[I]; printf("Dot product : %ld\n", PS); return 0; }

التمرين 7.9

#include <stdio.h>
#include <math.h>
main() { float A[20]; int I; int N; float X; float P;
printf("Give the degree N of polynome (max.20) : "); scanf("%d", &N); printf("Give the Value X of the argument : "); scanf("%f", &X); for (I=0 ; I<N ; I++) { printf("Give the coefficient A%d : ", I); scanf("%f", &A[I]); } /* pow بمساعدة الدالة for (P=0.0, I=0 ; I<N ; I++) P += A[I]*pow(X,I); */ /* Horner باستعمال*/ for (P=0.0, I=0 ; I<N ; I++) P = P*X + A[I]; printf("Value of polynome for X = %.2f : %.2f\n", X, P); return 0; }

التمرين 7.10 

#include <stdio.h>
main() { int A[50]; int N; int I; int MIN; int MAX;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &A[I]); } printf("Given array :\n"); for (I=0; I<N; I++) printf("%d ", A[I]); printf("\n"); MIN=0; MAX=0; for (I=0; I<N; I++) { if(A[I]>A[MAX]) MAX=I; if(A[I]<A[MIN]) MIN=I; } printf("Position of the minimum : %d\n", MIN); printf("Position of the maximum : %d\n", MAX); printf("Minimum : %d\n", A[MIN]); printf("Maximum : %d\n", A[MAX]); return 0; }

التمرين 7.11

#include <stdio.h>
main() { int A[50]; int VAL; int N; int I;
printf("Dimension N of the initial array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &A[I]); } printf("Give an element : "); scanf("%d", &VAL ); printf("Given array : \n"); for (I=0; I<N; I++) printf("%d ", A[I]); printf("\n"); for (I=N ; (I>0)&&(A[I-1]>VAL) ; I--) A[I]=A[I-1]; A[I]=VAL; N++; printf("Resulted array :\n"); for (I=0; I<N; I++) printf("%d ", A[I]); printf("\n"); return 0; }

التمرين 7.12 

أ) البحث المتتالي

#include <stdio.h>
main() { int A[50]; int VAL; int POS; int N; int I;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &A[I]); } printf("The element for search: "); scanf("%d", &VAL ); printf("Given array : \n"); for (I=0; I<N; I++) printf("%d ", A[I]); printf("\n"); POS = -1; for (I=0 ; (I<N)&&(POS==-1) ; I++) if (A[I]==VAL) POS=I; if (POS==-1) printf("the searched value is not found in the array.\n"); else printf("The value %d was found in the position %d. \n",VAL, POS); return 0; }

ب) البحث الثنائي

#include <stdio.h>
main() { int A[50]; int VAL; int POS; int N; int I; int INF, MIL, SUP; printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (I=0; I<N; I++) { printf("Element %d : ", I); scanf("%d", &A[I]); } printf("Element for search : "); scanf("%d", &VAL ); printf("Given array : \n"); for (I=0; I<N; I++) printf("%d ", A[I]); printf("\n"); INF=0; SUP=N-1; POS=-1; while ((INF<=SUP) && (POS==-1)) { MIL=(SUP+INF)/2; if (VAL < A[MIL]) SUP=MIL-1; else if (VAL > A[MIL]) INF=MIL+1; else POS=MIL; } if(POS==-1) printf("The value was not found in the array.\n"); else printf("The value %d was found in the position %d. \n",VAL, POS); return 0; }

التمرين 7.13 

#include <stdio.h>
main() { int A[50], B[50], FUS[100]; int N, M; int IA, IB, IFUS;
printf("Dimension of the array A (max.50) : "); scanf("%d", &N ); printf("Give the elements of the array A in an ascending way :\n"); for (IA=0; IA<N; IA++) { printf("Element A[%d] : ", IA); scanf("%d", &A[IA]); } printf("Dimension of the array B (max.50) : "); scanf("%d", &M ); printf("Give the elements of the array B in an ascending way :\n"); for (IB=0; IB<M; IB++) { printf("Element B[%d] : ", IB); scanf("%d", &B[IB]); }
printf("array A :\n"); for (IA=0; IA<N; IA++) printf("%d ", A[IA]); printf("\n");
printf("array B :\n"); for (IB=0; IB<M; IB++) printf("%d ", B[IB]); printf("\n"); IA=0; IB=0; IFUS=0; while ((IA<N) && (IB<M)) if(A[IA]<B[IB]) { FUS[IFUS]=A[IA]; IFUS++; IA++; } else { FUS[IFUS]=B[IB]; IFUS++; IB++; } while (IA<N) { FUS[IFUS]=A[IA]; IFUS++; IA++; } while (IB<M) { FUS[IFUS]=B[IB]; IFUS++; IB++; } printf("The array FUS :\n"); for (IFUS=0; IFUS<N+M; IFUS++) printf("%d ", FUS[IFUS]); printf("\n"); return 0; }

التمرين 7.14

#include <stdio.h>
main() { int A[50]; int N; int I; int J; int AIDE; int PMAX;
printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (J=0; J<N; J++) { printf("Element %d : ", J); scanf("%d", &A[J]); } printf("Given array :\n"); for (J=0; J<N; J++) printf("%d ", A[J]); printf("\n"); for (I=0; I<N-1; I++) { PMAX=I; for (J=I+1; J<N; J++) if (A[J]>A[PMAX]) PMAX=J; AIDE=A[I]; A[I]=A[PMAX]; A[PMAX]=AIDE; } printf("Sorted array :\n"); for (J=0; J<N; J++) printf("%d ", A[J]); printf("\n"); return 0; }

التمرين 7.15 

#include <stdio.h>
main() { int A[50]; int N; int I; int J; int AIDE; int FIN; printf("Dimension of the array (max.50) : "); scanf("%d", &N ); for (J=0; J<N; J++) { printf("Element %d : ", J); scanf("%d", &A[J]); } printf("Given array :\n"); for (J=0; J<N; J++) printf("%d ", A[J]); printf("\n"); for (I=N-1 ; I>0 ; I=FIN) { FIN=0; for (J=0; J<I; J++) if (A[J]>A[J+1]) { FIN=J; AIDE=A[J]; A[J]=A[J+1]; A[J+1]=AIDE; } } printf("Sorted array :\n"); for (J=0; J<N; J++) printf("%d ", A[J]); printf("\n"); return 0; }

التمرين 7.16 

#include <stdio.h>
main() { int POINTS[50]; int NOTES[7]; int N; int I, IN; int SOM; int MAX, MIN; int MAXN;
printf("Give the number of students (max.50) : "); scanf("%d", &N); printf("Give the scores of students:\n"); for (I=0; I<N; I++) {printf("Student %d:", I+1); scanf("%d", &POINTS[I]); } printf("\n"); for (MAX=0, MIN=60, I=0; I<N; I++) {if (POINTS[I] > MAX) MAX=POINTS[I]; if (POINTS[I] < MIN) MIN=POINTS[I]; } printf("The maximum score %d \n", MAX); printf("The minimum score %d \n", MIN);
for (SOM=0,I=0 ; I<N ; I++) SOM += POINTS[I]; printf("The average of scores %f \n", (float)SOM/N); for (IN=0 ; IN<7 ; IN++) NOTES[IN] = 0; for (I=0; I<N; I++) NOTES[POINTS[I]/10]++; for (MAXN=0,IN=0 ; IN<7 ; IN++) if (NOTES[IN] > MAXN) MAXN = NOTES[IN]; for (I=MAXN; I>0; I--) { printf("\n %2d >", I); for (IN=0; IN<7; IN++) { if (NOTES[IN]>=I) printf(" #######"); else printf(" "); } } printf("\n +"); for (IN=0; IN<7; IN++) printf("-------+"); printf("\n I 0 - 9 I 10-19 I 20-29 I 30-39 I 40-49 I 50-59 I 60 I\n"); return 0; }

التمرين 7.17

#include <stdio.h>
main() { int A[50][50]; int N; int I, J;
printf("Dimension of the square matrix (max.50) : "); scanf("%d", &N); for (I=0; I<N; I++) for (J=0; J<N; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("The given Matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<N; J++) printf("%7d", A[I][J]); printf("\n"); } for (I=0; I<N; I++) A[I][I]=0; printf("Resulted matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<N; J++) printf("%7d", A[I][J]); printf("\n"); } return 0; }

التمرين 7.18 

#include <stdio.h>
main() { int U[50][50]; int N; int I, J;
printf("Dimension of the square matrix (max.50) : "); scanf("%d", &N); for (I=0; I<N; I++) for (J=0; J<N; J++) if (I==J) U[I][J]=1; else U[I][J]=0; printf("Unitary Matrix of dimension %d :\n", N); for (I=0; I<N; I++) { for (J=0; J<N; J++) printf("%7d", U[I][J]); printf("\n"); } return 0; }

ملاحظة:

بخصوص العملية التالية

	if (I==J)   U[I][J]=1;
	else        U[I][J]=0;

فإنه يمكن تيسيرها كالتالي 

	U[I][J] = (I==J);

التمرين 7.19

أ) توضع المصفوفة المقلوبة في مصفوفة أخرى نسميها B

#include <stdio.h>
main() { int A[50][50]; int B[50][50]; int N, M; int I, J;
printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M ); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("Given matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } for (I=0; I<N; I++) for (J=0; J<M; J++) B[J][I]=A[I][J]; printf("Resulted matrix :\n"); for (I=0; I<M; I++) { for (J=0; J<N; J++) printf("%7d", B[I][J]); printf("\n"); } return 0; }

ب) تبقى المصفوفة المقلوبة في نفس المصفوفة الأولى

#include <stdio.h>
main() { int A[50][50]; int N, M; int I, J; int AIDE; int DMAX;
printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M ); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("Given matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } DMAX = (N>M) ? N : M; for (I=0; I<DMAX; I++) for (J=0; J<I; J++) { AIDE = A[I][J]; A[I][J] = A[J][I]; A[J][I] = AIDE; } printf("Resulted matrix :\n"); for (I=0; I<M; I++) { for (J=0; J<N; J++) printf("%7d", A[I][J]); printf("\n"); } return 0; }

التمرين 7.20

أ) نتيجة ضرب المصفوفة في عدد تكون في مصفوفة أخرى

#include <stdio.h>
main() { float A[50][50]; float B[50][50]; int N, M; int I, J; float X; printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M ); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%f", &A[I][J]); } printf("Multiplicator X : "); scanf("%f", &X ); printf("Given matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%10.2f", A[I][J]); printf("\n"); } for (I=0; I<N; I++) for (J=0; J<M; J++) B[I][J] = X*A[I][J]; printf("Resulted matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%10.2f", B[I][J]); printf("\n"); } return 0; }

ب) عناصر المصفوفة تضرب نفسها في العدد وتبقى النتيجة في نفس المصفوفة

#include <stdio.h>
main() { float A[50][50]; int N, M; int I, J; float X;
printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M ); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%f", &A[I][J]); } printf("Multiplicator X : "); scanf("%f", &X); printf("Given matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%10.2f", A[I][J]); printf("\n"); } for (I=0; I<N; I++) for (J=0; J<M; J++) A[I][J] *= X; printf("Resulted matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%10.2f", A[I][J]); printf("\n"); } return 0; }

التمرين 7.21 

أ) تكون النتيجة في مصفوفة أخرى C 

#include <stdio.h>
main() { /* تعريف المتغيرات */ int A[50][50]; int B[50][50]; int C[50][50]; int N, M; int I, J;
printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M ); printf("*** Matrix A ***\n"); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("*** Matrix B ***\n"); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &B[I][J]); } printf("Given matrix A :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } printf("Given matrix B :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", B[I][J]); printf("\n"); } for (I=0; I<N; I++) for (J=0; J<M; J++) C[I][J] = A[I][J]+B[I][J]; printf("Resulted matrix C :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", C[I][J]); printf("\n"); } return 0; }

ب) تكون النتيجة في المصفوفة A 

#include <stdio.h>
main() { int A[50][50]; int B[50][50]; int N, M; int I, J;
printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M );
printf("*** Matrix A ***\n"); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("*** Matrix B ***\n"); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &B[I][J]); } printf("Given matrix A :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } printf("Given matrix B :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", B[I][J]); printf("\n"); } /* A = A + B*/ for (I=0; I<N; I++) for (J=0; J<M; J++) A[I][J] += B[I][J]; printf("Resulted matrix A :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } return 0; }

التمرين 7.22

#include <stdio.h>
main() { /* تعريف المتغيرات */ int A[50][50]; int B[50][50]; int C[50][50]; int N, M, P; int I, J, K;
printf("*** Matrix A ***\n"); printf("Number of rows of A (max.50) : "); scanf("%d", &N ); printf("Number of columns of A (max.50) : "); scanf("%d", &M );
for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("*** Matrix B ***\n"); printf("Number of rows of B : %d\n", M); printf("Number of columns of B (max.50) : "); scanf("%d", &P ); for (I=0; I<M; I++) for (J=0; J<P; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &B[I][J]); } printf("Given matrix A :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } printf("Given matrix B :\n"); for (I=0; I<M; I++) { for (J=0; J<P; J++) printf("%7d", B[I][J]); printf("\n"); } for (I=0; I<N; I++) for (J=0; J<P; J++) { C[I][J]=0; for (K=0; K<M; K++) C[I][J] += A[I][K]*B[K][J]; } printf("Resulted matrix C :\n"); for (I=0; I<N; I++) { for (J=0; J<P; J++) printf("%7d", C[I][J]); printf("\n"); } return 0; }

التمرين 7.23

#include <stdio.h>
main() { int P[14][14]; int N; int I, J;
do { printf("Give le degré N of triangle (max.13) : "); scanf("%d", &N); } while (N>13||N<0);

for (I=0; I<=N; I++)
{
P[I][I]=1;
P[I][0]=1;
for (J=1; J<I; J++)
P[I][J] = P[I-1][J] + P[I-1][J-1];
}
printf("Alkhayyaam Triangle of degree %d :\n", N);
for (I=0; I<=N; I++)
{
printf(" N=%2d", I);
for (J=0; J<=I; J++)
if (P[I][J])
printf("%5d", P[I][J]);
printf("\n");
}
return 0;
}

التمرين 7.24

#include <stdio.h>
main() { int A[50][50]; int MAX[50][50]; int MIN[50][50]; int N, M; int I, J; int AIDE; int C;
printf("Number of rows (max.50) : "); scanf("%d", &N ); printf("Number of columns (max.50) : "); scanf("%d", &M ); for (I=0; I<N; I++) for (J=0; J<M; J++) { printf("Element[%d][%d] : ",I,J); scanf("%d", &A[I][J]); } printf("Given matrix :\n"); for (I=0; I<N; I++) { for (J=0; J<M; J++) printf("%7d", A[I][J]); printf("\n"); } for (I=0; I<N; I++) { AIDE=A[I][0]; for (J=1; J<M; J++) if (A[I][J]>AIDE) AIDE=A[I][J]; for (J=0; J<M; J++) if (A[I][J]==AIDE) MAX[I][J]=1; /* MAX[I][J] = (A[I][J]==AIDE) أو نكتب */ else MAX[I][J]=0; } for (J=0; J<M; J++) { AIDE=A[0][J]; for (I=1; I<N; I++) if (A[I][J]<AIDE) AIDE=A[I][J]; for (I=0; I<N; I++) if (A[I][J]==AIDE) MIN[I][J]=1; /* MIN[I][J] = (A[I][J]==AIDE) أو نكتب */ else MIN[I][J]=0; } printf("Magical Points :\n"); for (C=0, I=0; I<N; I++) for (J=0; J<M; J++) if (MAX[I][J]&&MIN[I][J]) { C++; printf("Element %d\tis the maximum in the rows %d\n" " \t and the minumum " "on the column %d\n", A[I][J], I, J); } if (C==0) printf("The array does not contain magical points.\n"); return 0; }

 

 الدرس 8: المتسلسلات الحرفية »»  »»
التمرين 8.1
التمرين 8.2
التمرين 8.3
التمرين 8.4
التمرين 8.5
التمرين 8.6
التمرين 8.7
التمرين 8.8
التمرين 8.9
التمرين 8.10
التمرين 8.11
التمرين 8.12
التمرين 8.13
التمرين 8.14
التمرين 8.15
التمرين 8.16
التمرين 8.17
التمرين 8.18
التمرين 8.19
التمرين 8.20
التمرين 8.21
التمرين 8.22
التمرين 8.23

 


التمرين 8.1

أ) char a[] = "un\ndeux\ntrois\n";

تعريف صحيح

الحجز في الذاكرة: 15 ثمن

 

ب) char b[12] = "un deux trois";

تعريف غير صحيح: تحتوي المتسلسلة على 12 وهي قليلة.

تصحيح: char b[14] = "un deux trois";

char b[] = "un deux trois";  أو

الحجز في الذاكرة: 14 ثمن

 

ج) char c[] = 'abcdefg';

تعريف غير صحيح : الرمزين '  '

تصحيح: char c[] = "abcdefg";

الحجز في الذاكرة: 8 ثمن

 

د) char d[10] = 'x';

تعريف غير صحيح: يجب أن تكون الحروف بين {  }

تصحيح: char d[10] = {'x', '\0'}

 char d[10] = "x";

الحجز في الذاكرة: 2 ثمن

 

هـ) char e[5] = "cinq";

تعريف صحيح

الحجز في الذاكرة: 5 ثمن

 

و) char f[] = "Cette " "phrase" "est coupée";

تعريف صحيح

الحجز في الذاكرة: 23 ثمن

 

ز) char g[2] = {'a', '\0'};

تعريف صحيح

الحجز في الذاكرة: 2 ثمن

 

ح) char h[4] = {'a', 'b', 'c'};

تعريف غير صحيح: لا يوجد الرمز '0\'.

تصحيح: char h[4] = {'a', 'b', 'c', '\0'};

الحجز في الذاكرة: 4 ثمن

 

ط) char i[4] = "'o'";

تعريف صحيح.

الحجز في الذاكرة: 4 ثمن

 


التمرين 8.2

#include <stdio.h>
main() { char M1[30], M2[30], M3[30], M4[30], M5[30];
printf("Write 5 words separated by space :\n"); scanf ("%s %s %s %s %s", M1, M2, M3, M4, M5); printf("%s %s %s %s %s\n",M5, M4, M3, M2, M1); return 0; }
 

التمرين 8.3

#include <stdio.h>
main() { char TXT[201]; int I,J; int L; int C; int AIDE;
printf("Write a line of text (max.200 characters) :\n"); gets(TXT);
/* السؤال الأول */
for (L=0; TXT[L]; L++)
;
printf("Text is composed of %d characters.\n",L);

/* السؤال الثاني */
C=0;
for (I=0; TXT[I]; I++)
if (TXT[I]=='e') C++;
printf("The text doesnt contain %d letters \'e\'.\n",C);

/* السؤال الثالث*/
for (I=L-1; I>=0; I--)
putchar(TXT[I]); /* or printf("%c",TXT[I]); */
putchar('\n'); /* or printf("\n"); */

/* السؤال الرابع*/
for (I=0,J=L-1 ; I<J ; I++,J--)
{
AIDE=TXT[I];
TXT[I]=TXT[J];
TXT[J]=AIDE;
}
puts(TXT);
return 0;
}

 


التمرين 8.4

#include <stdio.h>
main() { char TXT[201]; int I,J;
printf("Write a line of text (max.200 characters) :\n"); gets(TXT); for (J=0,I=0 ; TXT[I] ; I++) { TXT[J] = TXT[I]; if (TXT[I] != 'e') J++; } TXT[J]='\0'; puts(TXT); return 0; }
 

التمرين 8.5

#include <stdio.h>
#include <string.h>
main() { char NOM[40], PRENOM[40];
printf("Write your name and nickname: \n"); scanf("%s %s", NOM, PRENOM); printf("\nBonjour %s %s !\n", NOM, PRENOM); printf("Your name is composed of %d letters.\n", strlen(NOM) + strlen(PRENOM)); /* يمكنك استعمال printf("Your name is composed of %d letters.\n", strlen(strcat(NOM,PRENOM))); */ return 0; }
 

التمرين 8.6 

#include <stdlib.h>
#include <string.h>
main() { char CH1[200], CH2[200]; int RES;
printf("Write the first string of characters : "); gets(CH1); printf("Write the second string of characters : "); gets(CH2); /* المقارنة وإظهار النتائج على الشاشة */ RES = strcmp(CH1,CH2); if (RES<0) printf("\"%s\" proceed \"%s\"\n",CH1 ,CH2); else if (RES>0) printf("\"%s\" proceed \"%s\"\n",CH2 ,CH1); else printf("\"%s\" est égal to \"%s\"\n",CH1, CH2); return 0; }
 

التمرين 8.7

أ) استعمال دوال <string>.

#include <stdio.h>
#include <string.h>
main() { char CH1[100], CH2[100]; char CH3[100]="";
printf("Write the first string of characters : "); gets(CH1); printf("Write the second string of characters : "); gets(CH2); /* المعالجة */ strncpy(CH3, CH1, strlen(CH1)/2); strncat(CH3, CH2, strlen(CH2)/2); printf("Half of \"%s\" plus the half of \"%s\" gives \"%s\"\n",CH1, CH2, CH3); return 0; }

ب) استعمال الدوال gets و puts.

#include <stdio.h>
main() { char CH1[100], CH2[100]; char CH3[100]=""; int L1,L2; int I; int J;
puts("Write the first string of characters : "); gets(CH1); puts("Write the second string of characters: "); gets(CH2);
for (L1=0; CH1[L1]; L1++); for (L2=0; CH2[L2]; L2++); for (I=0 ; I<(L1/2) ; I++) CH3[I]=CH1[I]; J=I; for (I=0 ; I<(L2/2) ; I++) { CH3[J]=CH2[I]; J++; } CH3[J]='\0'; puts("Resulted string : "); puts(CH3); return 0; }
 

التمرين 8.8 

#include <stdio.h>
#include <string.h>
main() { char VERB[20]; char AFFI[30]; int L;
printf("Verbe : "); gets(VERB); L=strlen(VERB); if ((VERB[L-2]!='e') || (VERB[L-1]!='r')) puts("\aCe n'est pas un verbe of premier groupe.!"); else { VERB[L-2]='\0'; AFFI[0]='\0'; strcat(AFFI, "je "); strcat(AFFI, VERB); strcat(AFFI, "e"); puts(AFFI); . . . AFFI[0]='\0'; strcat(AFFI, "ils "); strcat(AFFI, VERB); strcat(AFFI, "ent"); puts(AFFI); } return 0; }
 

التمرين 8.9

 

الإدخال 

int long  double 
1)  123  123  123  123.000000 
2)  -123  -123  -123  -123.000000 
3)  - 123  0  0  -0.000000 
4)  123.45  123  123  123.45 
5)  12E3  12  12  12000.000000 
6)  1234f5  1234  1234  1234.000000 
7)  -1234567  dépassement  -1234567  -1234567.000000 
8)  123e-02  123  123  1.230000 
9)  -0.1234  0  0  -0.123400 

 


التمرين 8.10

#include <stdio.h>
#include <stdlib.h>
main() { long N; char STR[200];
do { puts("Give a number :"); scanf("%ld",&N); printf("Number = %ld\n", N); printf("base 2 = %s\n", ltoa(N, STR, 2)); printf("base 8 = %s\n", ltoa(N, STR, 8)); printf("base 16 = %s\n", ltoa(N, STR, 16)); } while(N); return 0; }
 

التمرين 8.11

#include <stdio.h>
#include <string.h>
main() { char MOT[10][50]; char AIDE[50]; int I; int J; int PMOT;
for (J=0; J<10; J++) { printf("Mot %d : ", J); gets(MOT[J]); /* <=>: scanf ("%s\n", MOT[J]); */ } for (I=0; I<9; I++) { PMOT=I; for (J=I+1; J<10; J++) if (strcmp(MOT[J], MOT[PMOT]) < 0) PMOT=J; /* strcpy تبديل الكلمات بعضها ببعض بمساعدة الدالة*/ strcpy(AIDE, MOT[I]); strcpy(MOT[I], MOT[PMOT]); strcpy(MOT[PMOT], AIDE); } printf("Lexicographical sorted array :\n"); for (J=0; J<10; J++) puts(MOT[J]); /* <=>: printf("%s\n",MOT[J]); */ printf("\n"); return 0; }
 

التمرين 8.12

#include <stdio.h>
main() { int N; char DAY[8][9] = {"\aError!", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday","sunday"};
printf("Give a number between 1 and 7 : "); scanf("%d", &N); if (N>0 && N<8) printf("The %of%c day of the week is %s.\n", N, (N==1)?'r':' ', DAY[N]); else puts(DAY[0]); return 0; }
 

 التمرين 8.13

#include <stdio.h>
main() { char MOT[5][50]; int I; printf("Give 5 words, separated by space :\n"); for (I=0; I<5; I++) scanf("%s", MOT[I]); for (I=4; I>=0; I--) printf("%s ", MOT[I]); printf("\n"); return 0; }
 

 التمرين 8.14

#include <stdio.h>
#include <string.h>
main() { char SUJ[6][5] = {"je","tu","il","nous","vous","ils"}; char TERM[6][5] = {"e","es","e","ons","ez","ent"}; char VERB[20]; int L; int I;
printf("Verbe : "); scanf("%s", VERB); L=strlen(VERB); if ((VERB[L-2] != 'e') || (VERB[L-1] != 'r')) printf("\"%s\" n'est pas un verbe of premier groupe.\n",VERB); else { VERB[L-2]='\0'; for (I=0; I<6; I++) printf("%s %s%s\n",SUJ[I], VERB, TERM[I]); } return 0; }
 

التمرين 8.15

#include <stdio.h>

main() { char CH1[50], CH2[50]; int I;
printf("Give the first string to compare : "); gets(CH1); printf("Give the second string to compare : "); gets(CH2); for (I=0; (CH1[I]==CH2[I]) && CH1[I] && CH2[I]; I++) ; if (CH1[I]==CH2[I]) printf("\"%s\" = to \"%s\"\n", CH1, CH2); else if (CH1[I]<CH2[I]) printf("\"%s\" proceeds \"%s\"\n", CH1, CH2); else printf("\"%s\" proceeds \"%s\"\n", CH2, CH1); return 0; }
 

 التمرين 8.16

#include <stdio.h>
main() { char CH[100]; int I;
/* إدخال الجملة */ printf("Give a string to convert : "); gets(CH); /* تحويل الجملة */ for (I=0; CH[I]; I++) { if (CH[I]>='A' && CH[I]<='Z') CH[I] = CH[I]-'A'+'a'; else if (CH[I]>='a' && CH[I]<='z') CH[I] = CH[I]-'a'+'A'; } printf("Converted string : %s\n", CH); return 0; }
 

 التمرين 8.17 

#include <stdio.h>
#include <ctype.h>
main() { char CH[100]; long N; int I; int OK;
printf("Give a positive integer number : "); gets(CH); OK=1; N=0; for (I=0; OK && CH[I]; I++) if (isdigit(CH[I])) N = N*10 + (CH[I]-'0'); else OK=0; if(OK) printf("Numerical value : %ld\n", N); else printf("\a\"%s\" does not represent a postive integer correctly.\n", CH); return 0; }
 

 التمرين 8.18 

#include <stdio.h>
#include <ctype.h>
main() { char CH[100]; long N; int I; int OK;
printf("Give a postive hexadecimal integer number : "); gets(CH); OK=1; N=0; for (I=0; OK && CH[I]; I++) if (isxdigit(CH[I])) { CH[I] = toupper(CH[I]); if(isdigit(CH[I])) N = N*16 + (CH[I]-'0'); else N = N*16 + 10 + (CH[I]-'A'); } else OK=0; if (OK) { printf("Numerical hexadecimal value : %lX\n", N); printf("Numerical decimal value : %ld\n", N); } else printf("\a\"%s\" does not have a hexadecimal value.\n", CH); return 0; }
 

 التمرين 8.19 

#include <stdio.h>
#include <math.h>
#include <ctype.h>
main() { char CH[100]; double N; int I; int SIG; int DEC; int OK;
printf("Give a rational number : "); gets(CH); OK=1; N=0.0; I=0; SIG=1; if (CH[I]=='-') SIG=-1; if (CH[I]=='-' || CH[I]=='+') I++;
for ( ; isdigit(CH[I]); I++) N = N*10.0 + (CH[I]-'0'); if (CH[I]=='.') I++; else if (CH[I]) OK=0; for (DEC=0; isdigit(CH[I]); I++, DEC++) N = N*10.0 + (CH[I]-'0'); if (CH[I]) OK=0; N = SIG*N/pow(10,DEC); if (OK) printf("Numerical value : %f\n", N); else printf("\a\"%s\" does not have a correct rational value.\n", CH); return 0; }
 

 التمرين 8.20 

#include <stdio.h>
#include <math.h>
#include <ctype.h>
main() { char CH[100]; double N; int I; int SIG; int DEC; int SIGE; int EXP; int OK;
printf("Give a rational number : "); gets(CH); OK=1; N=0.0; I=0; SIG=1; SIGE=1; if (CH[I]=='-') SIG=-1; if (CH[I]=='-' || CH[I]=='+') I++; for ( ; isdigit(CH[I]); I++) N = N*10.0 + (CH[I]-'0'); if (CH[I]=='.') I++; for (DEC=0; isdigit(CH[I]); I++, DEC++) N = N*10.0 + (CH[I]-'0'); if (CH[I]=='e'||CH[I]=='E') I++; else if (CH[I]) OK=0; if (CH[I]=='-') SIGE=-1; if (CH[I]=='-' || CH[I]=='+') I++; for (EXP=0; isdigit(CH[I]); I++) EXP = EXP*10 + (CH[I]-'0'); if(CH[I]) OK=0; EXP = SIGE*EXP - DEC; N = SIG*N*pow(10,EXP); if (OK) printf("Numerical value : %f\n", N); else printf("\a\"%s\" is not a correct rational number.\n", CH); return 0; }
 

 التمرين 8.21 

#include <stdio.h>
main() { char SUJ[100]; char OBJ[100]; int I; int J; int TROUVE;
printf("Write the string to delete : "); gets(OBJ); printf("Write the string to transform : "); gets(SUJ); TROUVE=0; for (I=0; SUJ[I] && !TROUVE; I++) if (SUJ[I]==OBJ[0]) { for (J=1; OBJ[J] && (OBJ[J]==SUJ[I+J]); J++) ; if (OBJ[J]=='\0') TROUVE=1; } if (TROUVE) { I--; for (; SUJ[I+J]; I++) SUJ[I]=SUJ[I+J]; SUJ[I]='\0'; } printf("Resulted string : \"%s\"\n", SUJ); return 0; }
  

 التمرين 8.22 

#include <stdio.h>
main() { char SUJ[100]; char CH1[100]; char CH2[100]; char FIN[100]; int I; int J; int K; int TROUVE; printf("Write the string to search CH1 : "); gets(CH1); printf("Write the string to remplace CH2 : "); gets(CH2); printf("Write the string to transform SUJ : "); gets(SUJ); TROUVE=0; for (I=0; SUJ[I] && !TROUVE; I++) if (SUJ[I]==CH1[0]) { for (J=1; CH1[J] && (CH1[J]==SUJ[I+J]); J++) ; if (CH1[J]=='\0') TROUVE=1; } if (TROUVE) { I--; for (K=0; SUJ[K+I+J]; K++) FIN[K]=SUJ[K+I+J]; FIN[K]='\0'; for (K=0; CH2[K]; K++,I++) SUJ[I]=CH2[K]; for (K=0; FIN[K]; K++,I++) SUJ[I]=FIN[K]; SUJ[I]='\0'; } printf("Resulted string : \"%s\"\n", SUJ); return 0; }
 

التمرين 8.23 

#include <stdio.h>
main() { char SUJ[100]; char CH1[100]; char CH2[100]; char FIN[100]; int I; int J; int K;
printf("Write the string to Search CH1 : "); gets(CH1); printf("Write the string to remplace CH2 : "); gets(CH2); printf("Write the string to transform SUJ : "); gets(SUJ); /* Search CH1 in SUJ */ for (I=0; SUJ[I]; I++) if (SUJ[I]==CH1[0]) { for (J=1; CH1[J] && (CH1[J]==SUJ[I+J]); J++) ; if (CH1[J]=='\0') { for (K=0; SUJ[K+I+J]; K++) FIN[K]=SUJ[K+I+J]; FIN[K]='\0'; for (K=0; CH2[K]; K++,I++) SUJ[I]=CH2[K]; for (K=0; FIN[K]; K++) SUJ[I+K]=FIN[K]; SUJ[I+K]='\0'; I--; } } printf("Resulted string : \"%s\"\n", SUJ); return 0; }

 تأليف

المؤلف الأصلي: فرديريك فابر (Frédéric FABER)

البريد الإلكترونيعنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

الموقع الإلكتروني http://www.ltam.lu/cours-c

ترجمة بتصرف: محمد عبد الرحمان


 

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث