Форум программистов, компьютерный форум CyberForum.ru

Функция, которая возвращает требуемое значение - C++

Восстановить пароль Регистрация
 
 
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 10:03     Функция, которая возвращает требуемое значение #1
Дан одномерный массив из n чисел. Элементами массива являются случайные целые числа от -10 до 10 включительно. Напишите функцию, которая возвращает требуемое значение. Массив является параметром функции. Печать результата выполняется в функции main. Найти пару отрицательных чисел с максимальной суммой (индексы элементов).
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 10:10     Функция, которая возвращает требуемое значение #2
kollmykov, в каком смысле требуемое? Возвращала значение в ячейке с определенным индексом или поиск определенного числа в массиве?
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 10:13  [ТС]     Функция, которая возвращает требуемое значение #3
TenGen, пару отрицательных чисел с максимальной суммой
TenGen
Будущее рядом
 Аватар для TenGen
96 / 94 / 20
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 10:32     Функция, которая возвращает требуемое значение #4
kollmykov,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct numbers
{
int a, b;
};
 
numbers func(int *array, int array_size)
{
numbers result;
result.a = -1;
result.b = -1;
for (int i = array_size-1; i >= 0; i--)
if (*(array+i) < 0)
{
if (result.a == -1) result.a = i;
else if (result.b == -1)
{
result.b = i;
return result;
}
}
return result;
}
вроде вот так

Добавлено через 9 минут
вызов функции будет примерно
C++
1
numbers k = func(&myarray[0], int n);
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
14.03.2014, 10:50     Функция, которая возвращает требуемое значение #5
Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include<ctime>
#include<pair.h>
std::pair<int, int> FindElement(const int*, const int);
int main ()
{
    const int N = 20;
    int arr[N];
    srand(time(NULL));
    for(int i = 0; i < N; ++i)
        arr[i] = rand() % 21 - 10;
 
    for(int i = 0; i < N; ++i)
       std::cout << arr[i] << ' ';
    std::cout << std::endl;
    std::pair<int, int> elem = FindElement(arr, N);
    std::cout << elem.first << ' ' << elem.second << std::endl;
 
    return 0;
}
 
std::pair<int, int> FindElement(const int* arr, const int N)
{
    int first = 0;
    int second = 0;
    if (N < 3)
        std::cerr << "Error size array!" << std::endl;
    else {
        while (arr[first] >=0 0 && first < N)
            first++;
        if (first == N)
            std::cerr << "Not find negative element" << std::endl;
        for(int i = 0; i < N; ++i) {
            if((arr[i] < 0) && (arr[first] < arr[i]))
                first = i;
        }
        if(first == 0)
            ++second;
        while ((arr[second] >= 0 || second == first) && second < N)
            second++;
        if (second == N)
            std::cerr << "Not find negative element" << std::endl;
 
        for(int i = 0; i < N; ++i) {
            if((arr[i] < 0) && (i != first) && (arr[second] < arr[i]))
                second = i;
        }
    }
    return std::pair<int, int>(first, second);
}
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 11:31  [ТС]     Функция, которая возвращает требуемое значение #6
Цитата Сообщение от Ilot Посмотреть сообщение
Кликните здесь для просмотра всего текста
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(3) : fatal error C1083: Не удается открыть файл include: pair.h: No such file or directory
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
14.03.2014, 11:46     Функция, которая возвращает требуемое значение #7
kollmykov,
C++
1
#include<pair>
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 12:17  [ТС]     Функция, которая возвращает требуемое значение #8
Цитата Сообщение от Ilot Посмотреть сообщение
Код C++
1
#include<pair>
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(3) : fatal error C1083: Не удается открыть файл include: pair: No such file or directory
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 12:20     Функция, которая возвращает требуемое значение #9
C++
1
#include <utility>
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
14.03.2014, 12:22     Функция, которая возвращает требуемое значение #10
Пнял. Счаз...
Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
#include <iostream>
#include<ctime>
void FindElement(const int*, const int, int&, int&);
int main ()
{
    const int N = 10;
    int arr[N];
    int elem_first, elem_second;
    srand(time(NULL));
    for(int i = 0; i < N; ++i)
        arr[i] = rand() % 21 - 10;
 
    for(int i = 0; i < N; ++i)
       std::cout << arr[i] << ' ';
    std::cout << std::endl;
    FindElement(arr, N, elem_first, elem_second);
    std::cout << elem_first << ' ' << elem_second << std::endl;
 
    return 0;
}
 
void FindElement(const int* arr, const int N, int& first, int &second)
{
    first = second = 0;
    if (N < 3)
        std::cerr << "Error size array!" << std::endl;
    else {
        while (arr[first] >=0 && first < N)
            first++;
        if (first == N)
            std::cerr << "Not find negative element" << std::endl;
        for(int i = 0; i < N; ++i) {
            if((arr[i] < 0) && (arr[first] < arr[i]))
                first = i;
        }
        if(first == 0)
            ++second;
        while ((arr[second] >= 0 || second == first) && second < N)
            second++;
        if (second == N)
            std::cerr << "Not find negative element" << std::endl;
 
        for(int i = 0; i < N; ++i) {
            if((arr[i] < 0) && (i != first) && (arr[second] < arr[i]))
                second = i;
        }
    }
}

John Prick, точно.
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 12:44  [ТС]     Функция, которая возвращает требуемое значение #11
Цитата Сообщение от John Prick Посмотреть сообщение
Код C++
1
#include <utility>
warning C4244: аргумент: преобразование 'time_t' в 'unsigned int', возможна потеря данных
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(29) : error C2143: синтаксическая ошибка: отсутствие ")" перед "константа"
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(29) : error C2059: синтаксическая ошибка: )
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(30) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "first"

еще повылазило)
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 12:46     Функция, которая возвращает требуемое значение #12
kollmykov, это к Ilot, так как код его (её).
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 12:49  [ТС]     Функция, которая возвращает требуемое значение #13
так там ееще больше ошибок навылазило)
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 13:02     Функция, которая возвращает требуемое значение #14
C++
1
while (arr[first] >=0 0 && first < N)
C++
1
while ((arr[first] >= 0) && (first < N))
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
14.03.2014, 13:05     Функция, которая возвращает требуемое значение #15
Сообщение было отмечено автором темы, экспертом или модератором как ответ

Не по теме:

Цитата Сообщение от John Prick Посмотреть сообщение
её


Цитата Сообщение от kollmykov Посмотреть сообщение
так там ееще больше ошибок навылазило)
Эти ошибки косяки студии. Попробуйте так:
Кликните здесь для просмотра всего текста
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
40
41
42
43
44
45
46
47
48
#include <iostream>
#include<ctime>
void FindElement(const int*, const int, int&, int&);
int main ()
{
    const int N = 10;
    int arr[N];
    int elem_first, elem_second;
    srand(unsigned int(time(NULL)));
    for(int i = 0; i < N; ++i)
        arr[i] = rand() % 21 - 10;
 
    for(int i = 0; i < N; ++i)
       std::cout << arr[i] << ' ';
    std::cout << std::endl;
    FindElement(arr, N, elem_first, elem_second);
    std::cout << elem_first << ' ' << elem_second << std::endl;
 
    return 0;
}
 
void FindElement(const int* arr, const int N, int& first, int &second)
{
    first = second = 0;
    if (N < 3)
        std::cerr << "Error size array!" << std::endl;
    else {
        while ((arr[first] >=0) && (first < N))
            first++;
        if (first == N)
            std::cerr << "Not find negative element" << std::endl;
        for(int i = 0; i < N; ++i) {
            if((arr[i] < 0) && (arr[first] < arr[i]))
                first = i;
        }
        if(first == 0)
            ++second;
        while (((arr[second] >= 0) || (second == first)) && (second < N))
            second++;
        if (second == N)
            std::cerr << "Not find negative element" << std::endl;
 
        for(int i = 0; i < N; ++i) {
            if((arr[i] < 0) && (i != first) && (arr[second] < arr[i]))
                second = i;
        }
    }
}
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
14.03.2014, 13:07     Функция, которая возвращает требуемое значение #16
C++
1
srand(time(NULL));
C++
1
srand(static_cast<unsigned int>(time(NULL)));
Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от Ilot Посмотреть сообщение
Не по теме:
её
Ну теперь буду знать.

kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 13:37  [ТС]     Функция, которая возвращает требуемое значение #17
Цитата Сообщение от Ilot Посмотреть сообщение
Попробуйте так:
впринципе...оно работает...наверное...промелькивает черное окошечко

Программа "[7524] Kolmykov_PM1_3_Prog_V10.exe: Машинный код" завершилась с кодом 0 (0x0).

как мне узнать, выполняет ли она то, что нужно)

я сейчас стараюсь понять, что за что отвечает, на плюсах до этого делал все на уровне "if", ну т.е. простейшие программки писал а преподше объяснить нужно будет, да и самому инетресно

можно в паре слов, что тут сделано?

#include <iostream>
#include<ctime>
void FindElement(const int*, const int, int&, int&);
тут мы начинаем программу, задаем типы четырех переменных.
что означают &* ... я, честно сказать, не пмоню

int main ()
{
const int N = 10;
int arr[N];
int elem_first, elem_second;
srand(unsigned int(time(NULL)));
for(int i = 0; i < N; ++i)
arr[i] = rand() % 21 - 10;

for(int i = 0; i < N; ++i)
std::cout << arr[i] << ' ';
std::cout << std::endl;
FindElement(arr, N, elem_first, elem_second);
std::cout << elem_first << ' ' << elem_second << std::endl;

return 0;
arr — массив, который объявлен в начале программы.
elem_first/second - переменны? их можно заменить на х, у?
srand(unsigned int(time(NULL))) - какойто рандом, без понятия, что это)
for(int i = 0; i < N; ++i)
arr[i] = rand() % 21 - 10;
что такое ++и и откуда 21
for(int i = 0; i < N; ++i)
std::cout << arr[i] << ' ';
std::cout << std::endl;
FindElement(arr, N, elem_first, elem_second);
std::cout << elem_first << ' ' << elem_second << std::endl;

return 0;
что делает эта часть тоже смутно представляю)
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
14.03.2014, 13:48     Функция, которая возвращает требуемое значение #18
Цитата Сообщение от kollmykov Посмотреть сообщение
впринципе...оно работает...наверное...промелькивает черное окошечко
Перед return ставим код:
C++
1
2
3
4
5
6
int main ()
{
    \\..........
    system("pause");
    return 0;
}
kollmykov
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 14:09  [ТС]     Функция, которая возвращает требуемое значение #19
Ilot, так, кажет. прога находит не отрицательные числа, а должна отрицательные, сумма которых максимальна)

C++
1
2
3
4
while ((arr[first] >=0 && (first < N))
            first++;
        if (first == N)
            std::cerr << "Not find negative element" << std::endl;
мне нужно поменять это, так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2014, 14:13     Функция, которая возвращает требуемое значение
Еще ссылки по теме:

Функция, которая возвращает массив C++
Функция, которая возвращает значение в классе C++
C++ Функция, которая только возвращает значение

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

Или воспользуйтесь поиском по форуму:
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
14.03.2014, 14:13     Функция, которая возвращает требуемое значение #20
Этот блок предназначен для поиска первого отрицательного элемента. Ведь таких может и не быть.
Прога ищет не числа, а их индексы в массиве.
Вы же сами написали:
Цитата Сообщение от kollmykov Посмотреть сообщение
Найти пару отрицательных чисел с максимальной суммой (индексы элементов).
Yandex
Объявления
14.03.2014, 14:13     Функция, которая возвращает требуемое значение
Ответ Создать тему
Опции темы

Текущее время: 00:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru