17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740

Задачка с одномерным массивом. Отбор по условию

16.06.2014, 17:12. Показов 2090. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Мне дана такая задача с массивом.
Дан массив. Вывести на экран индексы i, j, k, при которых a[i] = a[j] + a[k]. То есть, если дан массив
1 2 3 5 7
то должно вывести либо 3 2 1, либо 2 1 1, либо 4 2 3, либо 5 2 4. Можно вывести любой вариант. Индексы могут быть в диапазоне 1<= i,j,k <= n. Вот я попробовал написать программу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <conio.h>
using namespace std;
 
int a[100];
 
int main()
{
    int n;
    int i,j,k;
 
    cin >> n;
 
    for(i = 1;i <= n;i++)
        cin >> a[i];
 
    for(j = 1;j <= n;j++)
        a[j] == a[i];
 
    for(k = 1;k <= n;k++)
        a[k] == a[i];
 
    for(i = 1;i <= n;i++){
        for(j = 1;j <= n;j++){
            for(k = 1;k <= n;k++){
                if(a[i] = a[j] + a[k]){
                    cout << i << " " << j << " " << k;
                    getch();
                    return 0;
                }
            }
        }
    }
    cout << "-1" << endl;
 
    getch();
 
    return 0;
}
Все время выводит 1 1 1. Смотрел отладчиком. Проблема в этом куске.
C++
1
2
3
4
5
6
7
    for(i = 1;i <= n;i++){
        for(j = 1;j <= n;j++){
            for(k = 1;k <= n;k++){
                if(a[i] = a[j] + a[k]){
                    cout << i << " " << j << " " << k;
                    getch();
                    return 0;
Как мне нужно переделать циклы? Заранее спасибо.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2014, 17:12
Ответы с готовыми решениями:

Задачка с одномерным массивом.Найти количество удвоенных нечётных чисел
Помогите пожалуйста. Вот текст задания: Даны целые числа a1,a2..an.Известно что a1&gt;0 и что среди a2..an есть хотя бы одно...

Задачка с одномерным массивом
помогите, пожалуста решить задачу, своих знаний не хватает. В одномерном массиве целых чисел найти минимальный и максимальный...

Задачка с одномерным массивом. Определить количество одноразрядных, двухразрядных и трёхразрядных чисел в процентном отношении
Имеется задача: Создать массив из 50 случайных чисел в диапазоне от 0 до 200. Определить количество одноразрядных, двухразрядных и...

10
 Аватар для Kuzia domovenok
4264 / 3323 / 925
Регистрация: 25.03.2012
Сообщений: 12,520
Записей в блоге: 1
16.06.2014, 17:14
Пфф... ==
1
58 / 58 / 22
Регистрация: 12.02.2014
Сообщений: 108
16.06.2014, 17:16
И ещё в этих строках нет смысла.
C++
1
2
3
4
5
    for(j = 1;j <= n;j++)
        a[j] == a[i];
 
    for(k = 1;k <= n;k++)
        a[k] == a[i];
2
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
16.06.2014, 17:18
Лучший ответ Сообщение было отмечено Sh@dow777 как решение

Решение

Цитата Сообщение от Sh@dow777 Посмотреть сообщение
if(a[i] = a[j] + a[k]){
C++
1
a[i] == a[j] + a[k]
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
16.06.2014, 17:47  [ТС]
Kuzia domovenok, Переделал так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
 
int a[100];
 
int main()
{
    int n;
    int i,j,k;
 
    cin >> n;
 
    for(i = 1;i <= n;i++)
        cin >> a[i];
 
    for(j = 1;j <= n;j++)
        a[j] = a[i];
 
    for(k = 1;k <= n;k++)
        a[k] = a[i];
 
    for(i = 1;i <= n;i++){
        for(j = 1;j <= n;j++){
            for(k = 1;k <= n;k++){
                if(a[i] = a[j] + a[k]){
                    cout << i << " " << j << " " << k;
                    return 0;
                }
            }
        }
    }
    cout << "-1" << endl;
 
    return 0;
}
Все время выводит -1.

Добавлено через 45 секунд
Jewbacabra, Сейчас попробую

Добавлено через 27 минут
В общем, спасибо вам. Программа работает. Несколько раз проверял. Все верно вроде. Но система выдает "Неправильный ответ". Уточню. Я не занимаюсь спортивным программированием. У нас в универе таким образом все сдают задачи.
Вот условие задачи:
Входные данные

В первой строке записано целое число n (3 ≤ n ≤ 100) — количество видов червей. На следующей строке через пробел записано n целых чисел a[i] (1 ≤ a[i] ≤ 1000) — длины червей всех видов.

Выходные данные

Выведите 3 различных целых числа i j k (1 ≤ i, j, k ≤ n) — номера видов червей, для которых выполняется a[i] = a[j]+ a[k]. Если таких не существует, выведите -1. Если решений несколько, выведите любое. Допустимо, что a[j] = a[k].
Не подскажете, что я делаю не так? Вроде все верно же. Задачка то простая.
0
58 / 58 / 22
Регистрация: 12.02.2014
Сообщений: 108
16.06.2014, 18:06
Размер массива должен быть не 100, а 1001.
C++
1
int a[1001];
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
16.06.2014, 18:17  [ТС]
lsprofit, Почему?
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
В первой строке записано целое число n (3 ≤ n ≤ 100) — количество видов червей.
Это сами числа в массиве в диапазоне
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
(1 ≤ a[i] ≤ 1000)
Попробовал сделать с вектором.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int n;
    int i,j,k;
 
    cin >> n;
    vector<int>a(100);
 
    for(i = 1;i <= n;i++)
        cin >> a[i];
 
 
    for(i = 1;i <= n;i++){
        for(j = 1;j <= n;j++){
            for(k = 1;k <= n;k++){
                if(a[i] == a[j] + a[k]){
                    cout << i << " " << j << " " << k;
                    return 0;
                }
            }
        }
    }
    cout << "-1" << endl;
 
    return 0;
}
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
"Неправильный ответ"
0
58 / 58 / 22
Регистрация: 12.02.2014
Сообщений: 108
16.06.2014, 18:20
Да, но тогда не до 100, а до 101. Так как нумерация у вас с 1, а не с 0.
Выведите 3 различных целых числа (!!!!)
Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
  for(i = 1;i <= n;i++){
        for(j = 1;j <= n;j++){
            for(k = 1;k <= n;k++){
                if(a[i] == a[j] + a[k] && i!=j && j!=k && i!=k){
                    cout << i << " " << j << " " << k;
                    return 0;
                }
            }
        }
    }
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
16.06.2014, 18:24  [ТС]
lsprofit,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    int n;
    int i,j,k;
 
    cin >> n;
    vector<int>a(101);
 
    for(i = 1;i <= n;i++)
        cin >> a[i];
 
 
    for(i = 1;i <= n;i++){
        for(j = 1;j <= n;j++){
            for(k = 1;k <= n;k++){
                if(a[i] == a[j] + a[k]){
                    cout << i << " " << j << " " << k;
                    return 0;
                }
            }
        }
    }
    cout << "-1" << endl;
 
    return 0;
}
Переделал.
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
"Неправильный ответ"


Добавлено через 1 минуту
lsprofit,
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
Допустимо, что a[j] = a[k].
0
58 / 58 / 22
Регистрация: 12.02.2014
Сообщений: 108
16.06.2014, 18:24
В условии сказано о трех различных числах.
C++
1
   if(a[i] == a[j] + a[k] && i!=j && j!=k && i!=k)
Выведите 3 различных целых числа i j k (1 ≤ i, j, k ≤ n)
1
17 / 17 / 6
Регистрация: 10.12.2013
Сообщений: 740
16.06.2014, 18:29  [ТС]
lsprofit, Сейчас попробую.

Добавлено через 3 минуты
lsprofit, Спасибо огромное вам. Недоглядел условие.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2014, 18:29
Помогаю со студенческими работами здесь

Задачка с массивом и задачка с формулами Ньютона и Лагранжа
Прошу помочь решить две задачи

Задача с одномерным массивом
Как решить эту задачу?) Условие задачи: Составить графическую схему алгоритма и написать программу. Программа должна...

Работа с одномерным массивом
Паскаль. Задан одноименный массив X, содержащий N элементов Определить: А) Сумму всех положительных элементов массива Б) Максимальный...

Программа с одномерным массивом
Сформировать в программе массив из целых чисел от 2 до N. Подсчитать сумму квадpатов четных и сумму квадратов нечетных чисел. ...

Задание с одномерным массивом
Нужна помощь с решением задания. Даны вещественные числа x, a,...,a (n=12). Выяснить, во-первых, верно ли, что a&lt;x&lt;a, и,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

Новые блоги и статьи
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
C++26: Индексирование пакетов и метапрограммиро­вание
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru