Похожие презентации:
Seminar_1_4_2025
1. Задача 1. Найти адреса первого и второго отрицательного элемента одномерного массива. Поменять местами значения этих элементов.
2. Задача 1. Найти адреса первого и второго отрицательного элемента одномерного массива. Поменять местами значения этих элементов.
#include <iostream>#include <stdio.h>
int main ()
{setlocale(LC_ALL,"RUS");
int a[10],na,*u1,*u2,k,*t;
//u1 и u2 - указатели на два первых отрицательных элемента
//t - указатель на текущий элемент массива
printf ("введите длину массива А:"); scanf("%d",&na);
printf ("введите массив А\n");
for (t=a;t<a+na;t++) scanf("%d",t);
u1=u2=NULL; //инициализация указателей
for(t=a;t<a+na&&u2==NULL;t++) //поиск адресов
// цикл завершится когда будет найден второй отрицательный
//элемент
if (*t<0)
if(!u1)
u1=t;
else
u2=t;
3.
// перестановка и вывод результатаif (!u2)
printf(" Нет двух отрицательных элементов");
else
{printf("1 отрицательный %d\n 2 отрицательный%d\n",*u1,*u2);
k=*u1,*u1=*u2,*u2=k;
printf ("Получен массив А\n");
for (t=a;t<a+na;)
printf("%5d",*t++);}
return 0;
}
4. Задача 2. Даны два одномерных массива целых чисел A и B. Сформировать массив С, состоящий из повторяющихся элементов массива А,
отсутствующих в массиве В.1. Есть новый массив
A
B
1 2 1 2 2 3 4
1 3 0 -5
C
2 2 2
2. Нет нового массива
A
B
1 2 3 3 3 4
1 2 3 4
5. /* Сформировать массив С, состоящий из повторяющихся элементов массива А, отсутствующих в массиве В. */
if (j<na) //повторяется#include <stdio.h>
{ //проверка отсутствия a[i] в b
#include <iostream>
for (j=0;j<nb&&a[i]!=b[j];j++);
//для setlocale
//цикл закрыт
int main ()
if (j==nb) //условие отсутствия
c[nc++]=a[i];
{ setlocale(LC_ALL,”RUS”);
}
int a[10], b[10], c[10], na, nb, nc=0, i, j;
}
printf ("введите длину массива А:");
//вывод результата
scanf("%d",&na);
if (nc==0)
printf ("введите массив А\n");
printf("массив C пуст\n");
else
for (i=0;i<na;i++)
{
scanf("%d",&a[i]);
printf("Массив C");
//ввод массива b аналогично
for (i=0;i<nc;i++)
for(i=0;i<na;i++)
printf("%7d",c[i]);
printf ("\n");
{ //проверка повторения a[i]
}
for(j=0;j<na&&(a[i]!=a[j]||i==j);j++);
return 0;
}
6. /* Сформировать массив С, состоящий из повторяющихся элементов массива А, отсутствующих в массиве В. Используем указатель для
обращения к элементам */#include <stdio.h>
if (ua1<a+na) //повторяется
#include <iostream>
{ //проверка отсутствия *ua в b
int main ()
for
(ub=b;ub<b+nb&&*ua!=*ub;ub++);
{ setlocale(LC_ALL,"RUS");
if (ub==b+nb) //условие отсутствия
int a[10], b[10], c[10], na, nb,
nc=0,*ua,
*uc=*ua, uc++, nc++;
*ua1, *ub, *uc=c;
}
printf ("введите длину массива А:");
}
scanf("%d",&na);
//вывод результата
printf ("введите массив А\n");
if (nc==0)
for (ua=a;ua<a+na;ua++)
printf("массив C пуст\n");
scanf("%d",ua);
else
//ввод массива b аналогично
{ printf("Массив C");
for(ua=a;ua<a+na;ua++)
for (uc=c;uc<c+nc;uc++)
printf("%7d",*uc);
{ //проверка повторения *ua
for(ua1=a;ua1<a+na&&(*ua!=*ua1 printf ("\n");
||ua==ua1);ua1++);
}
return 0;}
7.
Задача 3. Дан массив a[1:na]. Удалить из него повторяющиесяэлементы без использования нового массива (путем сдвига).
Определив, что элемент повторяется в массиве, оставляем все
элементы, не равные заданному, а также вычисляем новую длину
массива.
a[1:na]
1
2
4
1
2
a[1:na]
2
4
2
3
4
a[1:na]
1
2
4
1
3
1
4
a[1:na]
3
3
1
4
8. Алгоритм
Алг «удаление повторений»Нач
Ввод( na, a[1:na])
i:=1 ; L:=na
цикл-пока i ≤ na
j:=1 {проверка повторения a[i], j - текущий номер элемента в маccиве a }
цикл-пока j≤ na и (a[i] ≠ a[j] или i=j )
j:=j+1
кц
если j ≤ na то {оставим только элементы, которые отличны от текущего}
x:=a[i]
k:=i-1 {число оставшихся элементов}
цикл от j:=i до na
если a[j] ≠ x то
k:=k+1;
a[k]:=a[j]
всё
кц
na:=k { у массива новая длина – число оставленных элементов}
иначе
i:=i+1
всё
кц
если na=0 то
вывод (“полное удаление”)
иначе если L=na то вывод (“нет удаления”)
иначе Вывод( a[1:na])
всё
всё
Кон
9.
#include<stdio.h>#define lmax 50
int main()
{
int a[lmax],na,L,i,j,k,x;
printf(«удаление повторений\n");
printf(«введите длину массива\n");
scanf("%d",&na);
printf(«введите массив\n");
for(i=1;i<=na;i++)
scanf("%d",&a[i]);
i=1 ; L=na;
while( i <= na)
{
j=1;
while (j<= na && (a[i] != a[j] || i==j )) j=j+1;
if (j <= na)
{
x=a[i];
k=i-1 ;
10.
for( j=i;j<= na;j++)if (a[j] !=x)
k=k+1, a[k]=a[j];
na=k;
}
else
i=i+1;
}
if (na==0)
printf(«полное удление");
else if (L==na) printf(«нет удаления") ;
else
{
printf(«оставшийся массив\n");
for(i=1;i<=na;i++)
printf("%5d",a[i]);}
return 0;
}
11. Задача 4. В данной целочисленной матрице поменять местами первый положительный и последний отрицательный элемент. Вычислять
адресаэлементов.
#include <iostream>
#include <stdio.h>
int main()
{ int a[10][10],n,m,i,j,*u1,*u2,c;
setlocale(LC_ALL,"RUS");
do
{ printf("Введите количество строк"); scanf("%d",&n);
}
while (n<=0||n>10);
do
{ printf("Введите количество столбцов"); scanf("%d",&m);
}
while (m<=0||m>10);
12.
printf("Введите матрицу\n");for (i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
}
13.
u1=u2=NULL;for (i=0;i<n;i++)
for(j=0;j<m;j++)
{
if (a[i][j]>0&&u1==NULL)
u1=&a[i][j];
if (a[i][j]<0)
u2=&a[i][j];
}
14.
if (!u1)printf("нет положительных");
else
if (!u2)
printf("нет отрицательных");
else
{ c=*u1,*u1=*u2,*u2=c;
for (i=0;i<n;i++)
{ for(j=0;j<m;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
return 0;
}
Программирование