- •Фгб оу впо «московский государственный университет
- •Файлы последовательного доступа
- •Файлы произвольного доступа
- •Операции над файлами
- •Задача 1.1
- •Задача 1.2
- •Задача 1.3.
- •Задача 2.1.
- •Задача 2.2.
- •Задача 2.3.
- •Задача 3.1.
- •Задача 3.2.
- •Задача 3.3.
- •Задача 3.4.
- •Задача 3.5
- •Задача 4.1
- •Задача 4.2
- •Задача 4.3
- •Задача 4.4
- •Задача 5.1
- •Задача 5.2
- •Задача 5.3
- •Задача 5.5
- •Задача 6.1
- •Задача 6.2
- •Задача 6.3
- •Задача 6.4
- •Задача 7.1
- •Задача 7.3
- •Задача 7.4
- •Задача 8.1
Задача 5.2
Дана матрица размера 5х10. Вывести номер её последнего столбца, содержащего только положительные элементы. Если таких столбцов нет, то вывести 0.
начало
Блок-схема.
a[i][j]
i, j, f
p=-1
j=0; j<n; j++
+ -
f=false
i=0; i<m; i++
+ -
a[i][j]>0
+ -
f=true
f=false
+ -
1
2
3
4
1
2
p=j
3
4
p=-1
+ -
Номер столбца
0
конец
Программный код.
#include "iostream"
#include <time.h>
#include "iomanip"
using namespace std;
int main()
{setlocale (LC_ALL, "Russian");
srand(time(NULL));
const int m=5, n=10;
int a[m][n];
int i,j;
int f;//Объявление переменной, которая в ходе задачи будет принимать занчения true или false
int p=-1;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=-10+rand()%90;//Рандом
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;}
//Вывод массива
for(j=0;j<n;j++)
{f=false;
for(i=0;i<m;i++)
if(a[i][j]<=0) f=true;
if(f=false) p=j;}
if(p!=-1) cout<<"Номер столбца - "<<p;
else cout<<"0 ";
}
Скриншот.
Задача 5.3
начало
Блок-схема.
i, j, s, q, k, z=0
a[m][n]
j=0; j<n; j++
s=1
i=0; i<m; i++
a[i][j]<0
+ -
s=0
s!=0
+ -
k=j
i=0; i<m; i++
a[i][j]
конец
Программный код.
#include "iostream"
#include <time.h>
#include "iomanip"
using namespace std;
void main()
{
setlocale (LC_ALL, "Russian");
srand(time(NULL));
int const m=5, n=10;
int i,j,s,q,k,z=0;
int a[m][n];
cout<<"Исходный массив:"<<endl;
for(i=0;i<m;i++)//Ввод массива
{
for(j=0;j<n;j++){//рандомный ввод чисел в массиве
a[i][j]=-20+rand()%90; }}
for(i=0;i<m;i++)//Вывод массива
{
for(j=0;j<n;j++)
cout<<setw(3)<<a[i][j]<<" ";
cout<<endl;
} cout<<endl;
for(j=1;j<n;j++)//Решение
{int s=1;
for(i=0;i<m;i++)
if(a[i][j]<0) {s=0; break;}
if(s!=0) {z=z++; k=j;}
if(z==1) break;}
for(i=0;i<m;i++)
{q=a[i][0];
a[i][0]=a[i][k];
a[i][k]=q;}
cout<<"Первый столбец заменил 1 из столбцов, содержащих только положительные элементы:"<<endl;
for(i=0;i<m;i++)//Вывод массива
{
for(j=1;j<n;j++)
cout<<setw(3)<<a[i][j]<<" ";
cout<<endl;
}
}
Скриншот.
Задача 5.4
Дана матрица размера 5х10. Найти максимальный среди элементов столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если такие столбцы отсутствуют, то вывести 0.
начало
Блок-схема.
a[m][n]
i, j, k=0, f=0, max
i=0; i<m; i++
j=0; j<n; j++
a[i][j]>a[i+1][j]
k++
f++
(k==4)
a[0][j]>a[4][j]
a[0][j]
a[4][j]
(f==4)
a[0][j]<a[4][j]
a[4][j]
a[0][j]
k=0
конец
Программный код.
#include "iostream"
#include <time.h>
#include "iomanip"
using namespace std;
int main()
{setlocale (LC_ALL, "Russian");
srand(time(NULL));
const int m=5, n=10;
int a[m][n];
int i,j;
int k=0;
int max;
int f=0;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=10+rand()%90;//Рандомный ввод чисел массива
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;}//Вывод матрицы на экран
for(j=0;j<n;j++){
for(i=0;i<m-1;i++){
if(a[i][j]>a[i+1][j]) k++; else f++;}
cout<<k<<endl;
if(k==4){if(a[0][j]>a[4][j]) cout<<"max="<<a[0][j]; else cout<<"max="<<a[4][j];}
if(f==4){if(a[0][j]<a[4][j]) cout<<"max="<<a[0][j]; else cout<<"max="<<a[4][j];}
k=0;
}
}
Скриншот.