Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
1

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

14.03.2014, 10:03. Показов 2122. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан одномерный массив из n чисел. Элементами массива являются случайные целые числа от -10 до 10 включительно. Напишите функцию, которая возвращает требуемое значение. Массив является параметром функции. Печать результата выполняется в функции main. Найти пару отрицательных чисел с максимальной суммой (индексы элементов).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2014, 10:03
Ответы с готовыми решениями:

Функция, которая возвращает значение в классе
Уважаемые, подскажите пожалуйста. У меня есть программа. (созд. списка; различные операции над...

Функция которая возвращает значение и цикл
Задача функции: Ввод прекращается при наполнении массива либо когда пользователь вводит нечисловое...

Функция, которая только возвращает значение
Как реализовать функцию, которая только возвращает значение. Вот, например: #include "stdafx.h"...

Функция, которая возвращает значение суммы элементов строк
надо чтоб функция возвращала значение суммы строки в конце строки, однако где-то ошибка и...

31
Будущее рядом
101 / 100 / 48
Регистрация: 06.03.2014
Сообщений: 342
14.03.2014, 10:10 2
kollmykov, в каком смысле требуемое? Возвращала значение в ячейке с определенным индексом или поиск определенного числа в массиве?
0
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 10:13  [ТС] 3
TenGen, пару отрицательных чисел с максимальной суммой
0
Будущее рядом
101 / 100 / 48
Регистрация: 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);
1
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,505
Записей в блоге: 6
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);
}
1
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
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,505
Записей в блоге: 6
14.03.2014, 11:46 7
kollmykov,
C++
1
#include<pair>
0
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
0
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,249
14.03.2014, 12:20 9
C++
1
#include <utility>
2
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,505
Записей в блоге: 6
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, точно.
1
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(2 9) : error C2143: синтаксическая ошибка: отсутствие ")" перед "константа"
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(2 9) : error C2059: синтаксическая ошибка: )
1>c:\users\artem\documents\visual studio 2008\projects\kolmykov_pm1_3_prog_v10\kolmykov_pm1_3_prog_v10\kolmykov_v10.cpp(3 0) : error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "first"

еще повылазило)
0
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,249
14.03.2014, 12:46 12
kollmykov, это к Ilot, так как код его (её).
0
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 24
14.03.2014, 12:49  [ТС] 13
так там ееще больше ошибок навылазило)
0
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,249
14.03.2014, 13:02 14
C++
1
while (arr[first] >=0 0 && first < N)
C++
1
while ((arr[first] >= 0) && (first < N))
1
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,505
Записей в блоге: 6
14.03.2014, 13:05 15
Лучший ответ Сообщение было отмечено kollmykov как решение

Решение

Не по теме:

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


Цитата Сообщение от 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;
        }
    }
}
1
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,249
14.03.2014, 13:07 16
C++
1
srand(time(NULL));
C++
1
srand(static_cast<unsigned int>(time(NULL)));
Добавлено через 2 минуты

Не по теме:

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

1
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;
что делает эта часть тоже смутно представляю)
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,505
Записей в блоге: 6
14.03.2014, 13:48 18
Цитата Сообщение от kollmykov Посмотреть сообщение
впринципе...оно работает...наверное...промелькивает черное окошечко
Перед return ставим код:
C++
1
2
3
4
5
6
int main ()
{
    \\..........
    system("pause");
    return 0;
}
1
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;
мне нужно поменять это, так?
0
Эксперт по математике/физикеЭксперт С++
2048 / 1366 / 395
Регистрация: 16.05.2013
Сообщений: 3,505
Записей в блоге: 6
14.03.2014, 14:13 20
Этот блок предназначен для поиска первого отрицательного элемента. Ведь таких может и не быть.
Прога ищет не числа, а их индексы в массиве.
Вы же сами написали:
Цитата Сообщение от kollmykov Посмотреть сообщение
Найти пару отрицательных чисел с максимальной суммой (индексы элементов).
0
14.03.2014, 14:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2014, 14:13
Помогаю со студенческими работами здесь

Функция, которая возвращает структуру
Не поддаётся компиляции. В чём дело? Как с этим работать? Не нашёл ответа и буду благодарен, если...

Функция которая возвращает класс
Есть функция считывания вектора с формы Вызов функции выглядит так ...

Функция, которая возвращает массив
Здравствуйте. Подскажите, пожалуйста, как правильно написать код - есть функция; она должна вернуть...

Функция, которая возвращает массив
Как сделать так чтобы функция возвращала указатель на рандомно сгенерированный массив. Входящими...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru