Потоковый ввод/вывод

Слайд 2

Задача 3. Сформировать массив С, состоящий из элементов массива А, повторяющихся в

Задача 3. Сформировать массив С, состоящий из элементов массива А, повторяющихся в
массиве В несколько раз. Элементы в С не должны повторяться.

#include
using namespace std;
int main ()
{ setlocale(LC_ALL, "RUS");
int a[10],b[10],c[10],na,nb,nc=0,i,j,k;
cout << "Введите длину массива А ";
cin >> na;
cout << "Введите " << na << " элементов" << endl;
for(i=0; i {
cout << "Введите А[" << i << "]" << endl;
cin >> *(a+i);
}
//Ввод массива b аналогично
for(i=0;i {
//проверка повторения a[i] в b несколько раз
//k - число повторов a[i] в b

Слайд 3

for(j=0,k=0;j if(a[i]==b[j]) k++;
//k==0 – условие отсутствия a[i] в b
//k==1

for(j=0,k=0;j if(a[i]==b[j]) k++; //k==0 – условие отсутствия a[i] в b //k==1 –
– a[i] присутствует в b 1 раз
if (k==2) //условие повторения
{
//проверяем, что такого элемента еще нет в C
for(j=0;j if (j==nc) //условие отсутствия a[i] в C
//заносим этот элемент в С
c[nc++]=a[i];
}
}
if (!nc) cout << "Нет массива С" << endl;
else
{
cout << "Массив С из " << nc << " элементов\n" << endl;
for(j=0; j cout << " " << *(c+j);
}
return 0;
}

Слайд 4

Задача 4. Дана последовательность целых чисел A[0:n-1]. Найти длину максимальной последовательности из

Задача 4. Дана последовательность целых чисел A[0:n-1]. Найти длину максимальной последовательности из
нулей и начало этой последовательности.

Обозначения:
dtp – длина текущей последовательности из нулей
maxdp – максимальная длина последовательности
npmax – начало максимальной последовательности из нулей
nte - номер текущего элемента
//Алгоритм – вычислительная часть
maxdp:=0; dtp:=0;
цикл от nte:=0 до n-1
если a[nte]=0 то
dtp:=dtp+1;
иначе
если dtp>maxdp то
maxdp:=dtp;
npmax:=nte-dtp;
всё
всё
кц
если dtp>maxdp то
maxdp:=dtp;
npmax:=nte-dtp;
всё

Слайд 5

#include
using namespace std;
int main()
{
setlocale(LC_ALL, “RUS”);
int a[100], n, *ua, dtp, maxdp, npmax;
cout<<“Введите

#include using namespace std; int main() { setlocale(LC_ALL, “RUS”); int a[100], n,
длину массива”< cin>>n;
cout<<“Введите элементы”< for (ua=a; ua>*ua;
maxdp=dtp=0;
for (ua=a; ua if (*ua==0) dtp++;
else
{
if (dtp>maxdp) maxdp=dtp, npmax=(ua-a)-dtp;
dtp=0;
}
if (dtp>maxdp) maxdp=dtp, npmax=(ua-a)-dtp;
if (!maxdp) cout<<“Нет нулей”;
else
cout<<“Maxdp=“< return 0;
}

Слайд 6

Задача 4. Упорядочить элементы матрицы по всем строкам (по возрастанию). Дополнительный массив

Задача 4. Упорядочить элементы матрицы по всем строкам (по возрастанию). Дополнительный массив
не использовать.

Метод:
Рассматриваем матрицу как одномерный массив, содержащий n*m элементов. В сортировке «пузырьком» сравниваем 2 соседних элемента: a[i][j] и следующий за ним a[i1][j1]. Индексы i1 и j1 вычисляются в зависимости от местоположения a[i][j] в матрице:
если j=m -1/* a[i][j] находится в последнем столбце i-ой строки */
то i1=i+1; j1=0; /* в качестве a[i1][j1] берётся первый элемент следующей строки */
иначе j1=j+1; i1=i; /*в качестве a[i1][j1] берётся следующий элемент i-ой строки */
все

Слайд 7

Алгоритм решения задачи (вычислительная часть)

f:=1; m1:=n*m-1;
цикл пока (F)
F:=0; m2:=m1; i:=0; j:=0;
цикл от

Алгоритм решения задачи (вычислительная часть) f:=1; m1:=n*m-1; цикл пока (F) F:=0; m2:=m1;
k:=0 до m2-1
/* определение пары сравниваемых элементов, т.е. вычисление индексов следующего элемента i1, j1; сравниваем a[i][j] c a[i1][j1] */
если j=m-1 то
i1:=i+1; j1:=0;
иначе
j1:=j+1; i1:=i;
всё
если a[i][j]>a[i1][j1] то
b:=a[i][j]; a[i][j]:=a[i1][j1]; a[i1][j1]:=b;
F:=1; m1:=k;
всё
i:=i1; j:=j1;
кц
кц
Имя файла: Потоковый-ввод/вывод.pptx
Количество просмотров: 252
Количество скачиваний: 0