Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмические основы информатики. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
774 Кб
Скачать

for (i=0;i<n;i++) for (j=0;j<m;j++){

cout<<"a["<<i<<"]["<<j<<"]=";

cin>>a[i][j];

}

cout<<"massiv A:"<<endl; for (i=0;i<n;i++) {

cout<<"elements "<<i<<"- stroki:"<<endl; for (j=0;j<m;j++) cout<<" "<<a[i][j]; cout<<endl;

}

max=a[0][0];imax=0;jmax=0; for (i=0;i<n;i++)

for (j=0;j<m;j++) if (a[i][j]>=max) {

max=a[i][j];

imax=i;jmax=j;

}

cout <<"max=: "<<max;

cout <<" is: "<<imax<<" stroke "<<jmax<<" columnes"; getch();

}

Пример 2. В заданном массиве A(n, m) поменять местами наибольший и наименьший по величине элементы. Вывести на печать измененный массив.

/* В заданном массиве A(n,m) поменять местами наибольший и наименьший по величине элементы. Вывести на печать измененный массив и величину, равную сумме наибольшего и наименьшего элементов массива. */

#include <iostream> #include <conio.h> using namespace std; int main(){

int i,j,m,n,s; int a[20][20]; cout<<" n =";cin>>n;

cout<<" m ="; cin>>m; cout<<"input massiv:"<<endl; for (i=0;i<n;i++)

for (j=0;j<m;j++){

71

cout<<"a["<<i+1<<"]["<<j+1<<"]=";

cin>>a[i][j];

}

cout<<"massiv A:"<<endl; for (i=0;i<n;i++){

cout<<"elements "<<i<<"- stroki:"<<endl; for (j=0;j<m;j++)

cout<<" "<<a[i][j]; cout<<endl;

}

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

int mx=a[i][0]; int mn=a[i][0]; int mxj=0; int mnj=0; for (j=1;j<m;j++)

if(a[i][j]>mx){mx=a[i][j];mxj=j;}

else if(a[i][j]<mn){mn=a[i][j];mnj=j;} swap(a[i][mnj],a[i][mxj]);

}

cout<<endl;

cout<<"change massiv"<<endl; for (i=0;i<n;i++){

for (j=0;j<m;j++) cout<<" "<<a[i][j]; cout<<endl;

}

getch();

}

Пример 3. В каждой строке заданного целочисленного массива A(n,m) найти наибольший по величине элемент, первый, если их несколько.

/* В каждой строке заданного целочисленного массива A(n,m) найти наибольший по величине элемент, первый, если их несколько

*/

#include <iostream> #include <conio.h> using namespace std; int main()

{ int i,j,m,n,s; int a[20][20]; cout<<" n ="; cin>>n;

cout<<" m ="; cin>>m; cout<<"input massiv:"<<endl; for (i=0;i<n;i++)

72

for (j=0;j<m;j++){ cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j];

}

cout<<"massiv A:"<<endl; for (i=0;i<n;i++)

{ cout<<"elements "<<i<<"- stroki:"<<endl; for (j=0;j<m;j++) cout<<" "<<a[i][j]; cout<<endl;

}

for (i=0; i<n; i++){ int mx=a[i][0];

for (j=1; j<m; j++) if(a[i][j]>mx) mx=a[i][j];

cout<<" номер строки- <<i+1<<"; mx="<<mx;

}

cout<<endl;

getch();

}

Пример 4. В каждой строке заданного целочисленного массива A(n, m) найти количество элементов, кратных 3.

/* В каждой строке заданного целочисленного массива A(n,m) найти количество элементов, кратных 3 */

#include <iostream> #include <conio.h> using namespace std; int main()

{ int i,j,m,n,s; int a[20][20]; cout<<" n = "; cin>>n; cout<<" m = "; cin>>m; cout<<"input massiv:"<<endl; for (i=0;i<n;i++)

for (j=0;j<m;j++) { cout<<"a["<<i<<"]["<<j<<"]=";

cin>>a[i][j];

}

cout<<"massiv A:"<<endl; for (i=0; i<n; i++){

cout<<"elements "<<i<<" - stroki:"<<endl; for (j=0;j<m; j++) cout<<" "<<a[i][j]; cout<<endl;

73

}

for (i=0;i<n;i++){ s=0;

for (j=0;j<m;j++)

if (a[i][j]%3==0) s+=1; cout<<"строка -"<<i<<"; s= "<<s;

}

cout<<endl;

getch();

}

Пример 5. В каждой строке заданного целочисленного массива A(n, m) найти сумму элементов.

/* В каждой строке заданного целочисленного массива A(n,m) найти сумму элементов */

#include <iostream> #include <conio.h> using namespace std; int main()

{ int i,j,m,n,s; int a[20][20]; cout<<" n = "; cin>>n; cout<<" m = "; cin>>m; cout<<"input massiv:"<<endl; for (i=0;i<n;i++)

for (j=0;j<m;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j];

}

cout<<"massiv A:"<<endl; for (i=0;i<n;i++)

{ cout<<"elements "<<i<<" - stroki:"<<endl; for (j=0;j<m;j++) cout<<" "<<a[i][j]; cout<<endl;

}

for (i=0;i<n;i++) { s=0;

for (j=0;j<m;j++) s+=a[i][j];

cout<<" строка - "<<i<<"; s= "<<s;

}

cout<<endl;

74

getch();

}

Пример 6. В заданном целочисленном массиве A(n, m) найти сумму положительных элементов и произведение положительных элементов, кратных 3.

/* В заданном целочисленном массиве A(n,m) найти сумму положительных элементов и произведение положительных элементов, кратных 3 */

#include <iostream> using namespace std; const int n_max=30, m_max=30;

void input_m(int a[n_max][m_max],int &n,int &m); void output_m(int a[n_max][m_max],int n,int m);

void poisk(int a[n_max][m_max],int n,int m,int &s,int &p);

int main(){

int a[n_max][m_max]; int n,m,s,p; input_m(a,n,m); cout<<endl; output_m(a,n,m); cout<<endl; poisk(a,n,m,s,p); cout<<endl;

cout<<"s = "<<" "<<s<<" "; cout<<"p = "<<" "<<p; return 0;

}

void input_m(int a[n_max][m_max],int &n,int &m){ cout<<"n,m = ";cin>>n>>m;

for (int i=0;i<n;i++) for (int j=0;j<m;j++){

cout<<"a["<<i+1<<"]["<<j+1<<"]= "; cin>>a[i][j];

}

}

void output_m(int a[n_max][m_max],int n,int m){

75

for (int i=0;i<n;i++){ for (int j=0;j<m;j++) cout<<a[i][j]<<" "; cout<<"\n";

}

}

void poisk(int a[n_max][m_max],int n,int m,int&s,int&p){ s=0;p=1;

for (int i=0;i<n;i++){ for (int j=0;j<m;j++){

if (a[i][j]>0) s+=a[i][j];

if (a[i][j]>0 && a[i][j] %3==0) p*=a[i][j];

}

}

}

Пример 7. В заданном целочисленном массиве A(n, m) найти количество строк, строго упорядоченных по возрастанию

/* В заданном целочисленном массиве A(n,m) найти количество строк, строго упорядоченных по возрастанию */

#include <iostream> using namespace std; const int n_max=30, m_max=30;

void input_m(int a[n_max][m_max],int &n,int &m); void output_m(int a[n_max][m_max],int n,int m); int poisk(int a[n_max][m_max],int n,int m);

int main(){

int a[n_max][m_max]; int n,m,k; input_m(a,n,m); cout<<endl; output_m(a,n,m); cout<<endl;

76

k=poisk(a,n,m);

cout<<endl;

cout<<"k="<<"\t"<<k<<"\t";

return 0;

}

void input_m(int a[n_max][m_max],int &n,int &m){ cout<<"n, m = ";cin>>n>>m;

for (int i=0;i<n;i++) for (int j=0;j<m;j++){

cout<<"a["<<i+1<<"]["<<j+1<<"]= "; cin>>a[i][j];

}

}

void output_m(int a[n_max][m_max],int n,int m){ for (int i=0;i<n;i++){

for (int j=0;j<m;j++) cout<<a[i][j]<<"\t"; cout<<"\n";

}

}

int poisk(int a[n_max][m_max],int n,int m){

int k=0;

for (int i=0;i<n;i++){ int j=0;

while (j<m-1 && a[i][j]<a[i][j+1]) j++;

if (j==m-1) k++;

}

return k;

}

Пример 8. Дана матрица A(N, N). Получить вектор B(N), компоненты которого находятся по правилу: Bi равно первому по порядку положительному элементу в i-й строке матрицы (если таких элементов в строке нет, то принять Bi = –1).

77

/* Дана матрица A(N, N). Получите вектор B(N), компоненты которого находятся по правилу: Bi равно первому по порядку положительному элементу в i-й строке матрицы

(если таких элементов в строке нет, то примите Bi = –1).*/ #include <stdio.h>

#include <iostream> using namespace std; const int size = 10;

void InputOutput(int A[size][size], int &N, int &M) { int i, j;

printf(" N= "); scanf("%i", &N); //Количество строк printf(" M= "); scanf("%i", &M); //Количество столбцов for (i=0; i<N; i++)

for (j=0; j<M; j++)

{ printf("A[%i,%i] = ", i+1, j+1); scanf("%i", &A[i][j]);

}

printf("My matrica:\n"); for (i=0; i<N; i++)

{ for (j=0; j<M; j++) printf("%5i", A[i][j]); printf("\n");

}

}

int main(){

int A[size][size];

int b[size]; int N, M,c; InputOutput(A, N, M); for (int i=0; i<N; i++){ int j = 0;

while ((j<M) && (A[i][j]<=0)) j++;

if (j<M) b[i]=A[i][j]; else b[i]=-1;

}

cout<<"REZULT: B("; for (int i=0; i<N; i++) cout<<b[i]<<", "; cout<<")";

return 0;

}

78

Пример 9. Транспонировать матрицу, т. е. преобразовать ее следующим образом: элементы i – строки поменять местами с элементами i -го столбца.

// Транспонировать матрицу

#include <iostream> using namespace std; const int n_max=30, m_max=30;

void input_m(int a[n_max][m_max],int &n); void output_m(int a[n_max][m_max],int n);

void transponirovanie(int a[n_max][m_max],int n);

int main(){

int a[n_max][m_max]; int n; input_m(a,n); cout<<endl; output_m(a,n); cout<<endl;

transponirovanie(a,n);

cout<<endl; output_m(a,n); cout<<endl; return 0;

}

void input_m(int a[n_max][m_max],int &n){ cout<<"n= ";cin>>n;

for (int i=0;i<n;i++) for (int j=0;j<n;j++){

cout<<"a["<<i+1<<"]["<<j+1<<"]= "; cin>>a[i][j];

}

}

void output_m(int a[n_max][m_max],int n){ for (int i=0;i<n;i++){

for (int j=0;j<n;j++) cout<<a[i][j]<<"\t"; cout<<"\n";

}

}

79

void transponirovanie(int a[n_max][m_max],int n){ for (int i=0;i<n;i++){

for (int j=0;j<i;j++) swap(a[i][j],a[j][i]);

}

}

Пример 10. В заданном целочисленном массиве A(n, n) найти сумму элементов, лежащих на главной и побочной диагоналях

/* В заданном целочисленном массиве A(n, n) найти сумму элементов, лежащих на главной и побочной диагоналях */

#include <iostream> using namespace std; const int n_max=30, m_max=30;

void input_m(int a[n_max][m_max],int &n); void output_m(int a[n_max][m_max],int n); int summa_diag(int a[n_max][m_max],int n);

int main(){

int a[n_max][m_max]; int n,s; input_m(a,n); cout<<endl; output_m(a,n); cout<<endl; s=summa_diag(a,n); cout<<endl; cout<<"s= "<<s; return 0;

}

void input_m(int a[n_max][m_max],int &n){ cout<<"n= ";cin>>n;

for (int i=0;i<n;i++) for (int j=0;j<n;j++){

cout<<"a["<<i+1<<"]["<<j+1<<"]= "; cin>>a[i][j];

}

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]