Есть 2 задачи:
- Дан одномерный массив чисел, среди элементов которого есть одинаковые. Создать новый массив из различных элементов исходного массива.
- Дана действительная матрица размером n ? m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением.
Написал следующий код:
Задача №1
Предполагаемый алгоритм:
- Пусть дан массив a
- Сравниваем a[k] элемент со всеми остальными
- Если значения совпадают (но не совпадают индексы) элементов массива, то увеличиваем f,
если в результате работы цикла значение f равно 1, то число добавляем в другой массив.
Код
#include <iostream.h>
#include <conio.h>
void main()
{
clrscr();
int n,f,d,i,j,k,a[100],b[100];
f=1;
d=1;
cin >> n;
for (i=1; i<=n; i++)
{
cout << "Введите длину массива " << i << " :";
cin >> a[i];
}
for (i=1; i<=n; i++)
{
cout << " " << a[i] << " ";
}
for (j=1; j<=n; j++)
{
for (k=1; k<=n; k++)
{
if (a[k]==a[j])
{
if (k!=j)
{
f++;
}
}
if (f==1)
{
b[d]=a[j];
d++;
}
}
}
for (i=0; i<=n; i++)
{
cout << b[i];
}
}
Задание 2:
- Берем матрицу и построчно находим минимальное значение.
- Каждое минимальное значение(а также координаты в матрице) добавляем в массив b.
- Находим максимальное значение среди элементов массива b, и выводим это значение.
Код
#include <iostream.h>
#include <conio.h>
void main ()
{
int n,m;
clrscr();
cout << "Enter rows:";
cin >> n;
cout << "Enter cols:";
cin >> m;
int i,f,j,k,a[10][10],b[10][3],d,t;
f=1;
for (i=1; i<=n; i++)
{
for (j=1; j<=m; j++)
{
cout << "Enter a[" << i << "," << j << "]";
cin >> a[n][m];
}
}
for (d=1;d<=n; d++)
{
k=a[d][1];
for (t=1;t<=m;t++)
{
if (k<a[d][t]) {k=a[d][t]; b[f][1]=k; b[f][2]=d; b[f][3]=t;}
}
}
k=b[1][1];
for (j=1; j<=m; j++)
{
if (b[j][1]>k) {k=b[j][1]; d=b[j][2]; t=b[j][3];}
}
cout << "Max: " << k << " Str: " << d << " Stolb: " << t;
}
Оно компилируется, но не работает, подскажите пожалуйста как лучше реализовать эти задачи?
Заранее спасибо!