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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Задрот С
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 57
#1

деление на макс элемент массива - C++

03.10.2009, 14:24. Просмотров 613. Ответов 5
Метки нет (Все метки)

Помогите решить задачу?пожалуйста.

В массиве из 10 чисел поделить все отрицательные элементы на максимальный элемент массива.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2009, 14:24     деление на макс элемент массива
Посмотрите здесь:

C++ Массив. Макс и мин элемент.Шаблоны и функции.
Макс элемент масива? C++
Поменять местами мин и макс элемент в каждой строке C++
Найти элемент массива с макс. суммой делителей C++
C++ Индекс макс. элемента массива
Работа со стеком (найти мин и макс элемент) C++
посчитать макс и мин элемент массива ,сумма между 1-ым и 2-ым положит элементом и упорядочить по определённому принципу C++
список мин и макс элемент C++
Поменять местами макс и мин эл-ты массива C++
C++ Ошибка в строке содержащую мин и макс элемент массива
Найти макс. элемент среди отрицательных и мин. элемент среди положительных элементов массива C++
Создать стек из вещественных чисел и определить макс элемент C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
03.10.2009, 14:39     деление на макс элемент массива #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include <iostream>
#include <algorithm>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    const int size = 10;
    int arr[size];
    for (int i = 0 ; i < sizeof(arr)/sizeof(*arr) ; i++)
        cin>>*(arr+i);
    int max = *max_element(arr,arr+10);
    cout<<"max element"<<' '<<max<<endl;
    return 0;
}
максимум найден дальше иди по массиву если встречаешь arr[i]<0 то дели его на макс , пиши сам всё сказал)
Задрот С
0 / 0 / 0
Регистрация: 19.09.2009
Сообщений: 57
03.10.2009, 15:00  [ТС]     деление на макс элемент массива #3
хм...не мог бы пояснить как происходит заполнение массива?
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
03.10.2009, 15:09     деление на макс элемент массива #4
Ну в общем видимо это не понятно sizeof(arr)/sizeof(*arr) . sizeof(arr) - высчитываем сколько наш массив занимает в байтах , вроде в винде int = 4 байта поэтому sizeof(arr) = 40; то есть 4*10 элементов , далее sizeof(*arr) эквивалентно sizeof(arr[0]) или sizeof(*(arr+0)) если не знаешь почему так почитай адресную арифметику а пока что считай что *(arr+i) = arr[i] , так далее sizeof(arr[0]) количество байт занимаемое нашим первым элементом а так как первый элемент имеет тип int отсюда получаем sizeof(arr[0]) = 4 делим 40 на 4 получаем 10 и того (for int i=0;i<10;i++) ну а так далее понятно ну и далее алгоритм max_element из STL в общем он ищет макс элемент в диапазоне (arr,arr+10) так как arr это указатель на первый элемент соотв arr+10 указатель на последний элемент ( опять же адресная арифмеика ) считай что наш алгоритм возвращает указатель на макс элемент а чтобы получить значение нужно как известно указатели разименовывать отсюда и *max_element.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
03.10.2009, 15:13     деление на макс элемент массива #5
Андрейка,в твоем случае учти,что результат будет int(целое число)!!Т.е. деление будет без остатка! Т.е. если число положительное было в массиве,то у тебя всегда будет полчаться нуль в результрующем массиве.
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
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <limits.h>
 
double GetMax(double *arr,int N)
{
    int i;
    double max = arr[0];
    for(i = 1; i < N; ++i)
    {
        if(max > arr[i])
        {
            max = arr[i];
        }
    }
 
    return max;
}
 
int main()
{
    int i;
    double maxElem;
    const int n = 10;
    double arr[n];
 
 
    srand(time(0));
 
    rand();
 
    for(i = 0; i < n; ++i)
    {
        arr[i]= rand ()% INT_MAX - INT_MAX/2;
        printf("%lf\n",arr[i]);
    }
 
    maxElem = GetMax(arr,n);
 
 
    for(i = 0; i < n; ++i)
    {
        if(arr[i] < 0)
        {
            arr[i] = arr[i] / maxElem;
        }
    }
 
 
 
    puts("\n");
    printf("After dividing:\n");
 
    for(i = 0; i < n; ++i)
    {
        printf("%lf\n",arr[i]);
    }
 
    return 0;
}
ммм так я и не обещал всё делать правильно=)
У тебя правильно, но нелогично. Напр. у нас массив : [ 1 2 3 4 5]
Макс. элемент - "5". При делении на макс. число массива у нас получается всегда ноль,т.к. это максимальнывй элемент,получается можно просто в твоем случае занулить все положительные
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
03.10.2009, 15:14     деление на макс элемент массива #6
ммм так я и не обещал всё делать правильно=)
Yandex
Объявления
03.10.2009, 15:14     деление на макс элемент массива
Ответ Создать тему
Опции темы

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