с++ задача с масивами
1)В одномерном массиве ,состоящих из целых чисел ,есть только два одинаковых элемента.Найти их.
2)
дан двух ступенчетый масив из 15 строчек и 2 стопбцов. Найти минимальную сумму елементов в двух рядом стоящих строчках.
1)В одномерном массиве ,состоящих из целых чисел ,есть только два одинаковых элемента.Найти их.
2)
дан двух ступенчетый масив из 15 строчек и 2 стопбцов. Найти минимальную сумму елементов в двух рядом стоящих строчках.
Это, вероятнее, в тему "Судентам".
1) В цикле от 1 до N - 1 (где N - длина массива) берём элемент и во вложенном цикле от следующего за текущим до N ищем такой же. Если нашли -- показали какой и где и вышли из циклов.
2) Что такое двухступенчатый массив, я не знаю, а для двухмерного массива X (сиречь матрица) размером M столбцов * N строк можно сделать примерно так.
Берем min = X(1, 1)
Первый цикл (скажем, по k) от 1 до N - 1
Второй цикл по j от 1 до M
Третий цикл по i от 1 до M
Если min > X(i, k) + X(j, k+ 1) то min = X(i, k) + X(j, k+ 1) и запоминаем координаты
кц
кц
кц
выводим координаты и значение суммы.
PS. а если у тебя много КЦ, то ты имеешь право носить малиновые штаны, и перед тобой и пацак, и чатланин должен два раза КУ делать, и эцилопп не имеет права бить тебя по ночам, никогда!
1)В одномерном массиве ,состоящих из целых чисел ,есть только два одинаковых элемента.Найти их.
#include <iostream>
#include <stdexcept>
const int* find_dup(const int* p, size_t len)
{
typedef std::map<int, bool> holder_t;
holder_t holder;
for (size_t i=0; i<len; i++)
{
if (holder.find(p) != holder.end())
return (p + i);
holder.insert(holder_t::value_type(p, true));
}
throw std::exception("no dups");
}
int main()
{
int arr[] = {1,2,3,4,1};
const size_t len = sizeof(arr) / sizeof(arr[0]);
std::cout << *find_dup(arr, len) << std::endl;
return (0);
}
Судя по первому посту, человек толком не знаком с языком, а ты ему даешь решение с STL.
Еще бы буст впарил, ей-богу:) жестоко ты.
#include <algorithm>
using namespace std;
int main()
{
int arr[] = {1,3,4,2,1};
int *arrEnd = arr + 5;
sort(arr, arrEnd);
int *p = adjacent_find(arr, arrEnd);
if(p < arrEnd)
cout << *p << endl;
return 0;
}
Добавлено позже:
Ну, массив я перемешал и позиции не показал. Но таких условий конкретно не было :)