Лекции 1 семестр матанализ. лекции 1 семестр (1). Литература Герберт. Шилдт. С руководство для начинающих
Скачать 1.38 Mb.
|
Appendix Templates Шаблоны Задача 1 #include "stdafx.h" #include using namespace std; template void box(T length, T width, T height);// прототип функции int main() { setlocale( LC_ALL,"Russian" ); box box box box box box system("pause"); return 0; } // Определение функции box() template void box(T length, T width, T height) { cout<<"Объем параллелепипеда равен "<< length* width* height < } Задача 2 #include "stdafx.h" #include using namespace std; const int n=5; ///////////////// template void create ( T* x , int k); //возможный вариант void vvod ( int x[n]) template void show ( T* x, int k); template T max ( T* x, int k); ///////////////////////// int main() { setlocale( LC_ALL,"Russian" ); int a[n]; cout<<" введите целочисленный массив а:"< create(a,n); cout<<" целочисленный массив а:"< show( a, n); cout<< "max(a,n)= "< double b[n]; cout<<" введите вещественный массив b:"< create(b,n); cout<<" вещественный массив b:"< show ( b, n); cout<< "max(b,n)= "< system("pause"); return 0; } ////////////////////// template void create ( T* x, int k) { int i; for (i=0; i { cout<<"x["< cin>>x[i]; } } /////////////////////// template void show ( T* x, int k) { int i; for (i=0; i cout< cout< } //////////////////////////// template T max( T* x, int k) { int i; T m; m=x[0]; for (i=0; i if (m return m; } ///////////////////////// Задача 3 Заданы два целочисленных мвссива размерноси n*n. A*B , если EiAj[ A[i][j] >0] Вычислить С= A+B, противном случае Задачу выполнить и для вещественных массивов #include "stdafx.h" # include # include # include using namespace std; template void create ( T **, int); template void show( T **, int); template bool EA( T**, int); template void mult ( T**, T**, T**,int); template void add ( T **, T**, T**,int); ///////////////////////////////////// int main() { int n; cout<<"enter size of array n ="; cin>>n; int **a, **b, **c; a= new int*[n]; int i; for (i=0;i a[i]=new int[n]; b= new int*[n]; for (i=0;i b[i]=new int [n]; c= new int*[n]; for (i=0;i c[i]=new int[n]; cout<<"enter array a:"< create cout<<"enter array b:"< create cout<<" array a:"< show cout<<" array b:"< show if (EA else add cout<<"array c: "< show for(i=0;i delete []a[i]; delete [] a; for(i=0;i delete []b[i]; delete []b; for(i=0;i delete []c[i]; delete []c; double **a1, **b1, **c1; a1= new double*[n]; for (i=0;i a1[i]=new double[n]; b1= new double*[n]; for (i=0;i b1[i]=new double [n]; c1= new double*[n]; for (i=0;i c1[i]=new double[n]; cout<<"enter array a1:"< create cout<<"enter array b1:"< create cout<<" array a1:"< show cout<<" array b1:"< show if (EA mult else add cout<<"array c1: "< show for(i=0;i delete []a1[i]; delete [] a1; for(i=0;i delete []b1[i]; delete []b1; for(i=0;i delete []c1[i]; delete []c1; system("pause"); return 0; } //////////////////////////////// template void create(T**x, int n) { int i,j; for (i=0; i for (j=0; j { cout<<"x["< cin>>x[i][j]; } } //////////////////////////// template void show(T**x, int n) { int i,j; for (i=0; i { for (j=0; j cout< cout< } } ///////////////////////////////// template bool EA(T**x, int n) { bool p,q; int i,j; p=false; for (i=0;i { q=true; for (j=0; j if (x[i][j]<=0) q=false; p=q; } return p; } ////////////////////////////// template void mult ( T **x, T**y, T**z,int n) { int i, j, k; for (i=0; i for (j=0; j { z[i][j]=0; for (k=0; k z[i][j]=z[i][j]+x[i][k]*y[k][j]; } } ///////////////////////////// template void add ( T **x, T**y, T**z, int n) { int i, j; for (i=0; i for (j=0; j z[i][j]= x[i][j]+y[i][j]; } ///////////////////////////////////////////////////////////// Задано натуральное число n. Выписать все числа, полученные из данного, вычеркиванием одной цифры Выписать все числа, полученные из данного вычеркиванием одной цифры , являющиеся простыми #include "stdafx.h" #include using namespace std; //////////////////////////// int length_num(int x) { int l=0; while(x>0) { x=x/10; l++; } return l; } /////////////////////// int delete_cifra(int x, int k) { int j=0; int t=1; int s=0; while(x>0) { int p=x%10; j++; if (k!=j) { s=s+p*t; t=t*10; } x=x/10; } return s; } ///////////////////////////////////// bool prime(int x) { if(x<2) return false; if(x==2) return true; bool t=true; int i; for( i=2;i<=sqrt(x)&& t;i++) if (x%i ==0) t=false; return t; } ///////////////////////////////////// int main() { int x; cout<<"enter x= "; cin>>x; int l=length_num(x); int i; cout<<" all numbers"< for(i=1;i<=l;i++) cout< cout<<" all prime numbers"< for(i=1;i<=l;i++) if(prime(delete_cifra(x,i))) cout< system("pause"); return 0; } //////////////////////////////////////////// Example n=234 all: 23, 24, 34 primes: 23 //////////////////////////////////////////////////////////////////////////////// Дихотомический поиск элемента в массиве Задан упорядоченный массив. Найти позицию элемента х в массиве. o(log n) итераций цикла #include "stdafx.h" #include using namespace std; int main() { setlocale(LC_ALL, "rus"); const int n = 10; int a[n] = { 1,2,3,4,5,6,7,8,9,10 }; int left = 0, right = n - 1, x; int mid; cout << "введите x= "; cin >> x; bool flag = false; while (!flag && (left <=right)) { mid = (right + left) / 2; if (a[mid] == x) flag = true; if (x > a[mid]) left = mid + 1; else right = mid - 1; } if (flag) cout << "Индекс элемента " << x << " в массиве равен: " << mid << endl; else cout << "Извините, но такого элемента в массиве нет" << endl; system("pause"); return 0; } |