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

Заполнить массив - C++

Восстановить пароль Регистрация
 
Liniman
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 4
03.12.2011, 14:00     Заполнить массив #1
Нужно заполнить массив 40 рандомными значениями, найти "максимальное" значение а все до "максимального" заполнить - 0 (нулями).
Прошу помощи именно с алгоритмом.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<stdio.h>
#include<time.h> 
#include<stdlib.h> 
 
int main() 
{
int max; 
int i;
int m[40];
 
for (i=0;i<40;i++)
    {   
        m[i]=rand()%10;     
    } 
 m[0]=max;
for (i=0;i<40;i++)
    {
        if
            (m[i]>max)
            max=m[i];
    }
}
Как найти макс.элемент до меня дошло, но вот с заменой всех элементов до максимального на 0(ноль) - не пойму.
Прошу помощи.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2011, 14:00     Заполнить массив
Посмотрите здесь:

Одномерный массив вещественных чисел R75 содержит данные о росте группы студентов. Массив заполнить значениями путем ввода с клавиатуры. Вычислить с C++
C++ Дан одномерный массив, состоящий из N вещественных элементов. 4.1. Заполнить массив случайными числами. 4.2. Найти минимальный положительный элемент.
Дан массив A[N]. заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству C++
C++ Массив: Заполнить массив из 10 элементов случайным образом в интервале (0..3).
Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326
03.12.2011, 14:03     Заполнить массив #2
Обьявите переменную c.
Когда вы нашли новый максимальный элемент, добавьте c=i (в 20 строчку после if)

C++
1
2
3
4
5
6
7
8
m[0]=max;
c=0;
//тут ваш цикл
if (m[i]>max)
          {
          max=m[i];
          c=i;
          }
Потом вам нужно будет заполнить элементы массива от нуля до m[c]!
Deleter
2 / 2 / 0
Регистрация: 10.01.2011
Сообщений: 35
03.12.2011, 14:12     Заполнить массив #3
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
#include <stdio.h>
#include <time.h> 
#include <stdlib.h> 
#include <conio.h>
#include <iostream>
 
using namespace std;
 
int main() 
{
int max = 0; 
int i;
int m[40];
 
for (i=0;i<40;i++)
        {       
           m[i]=rand()%10;         
        } 
 m[0]=max;
for (i=0;i<40;i++)
        {
           if(m[i]>max) max=m[i];
        }
    for(i=0 ; i < 40 ;i++)
    {
        if(m[i]!=max){
            m[i]=0;// меняеш на 0
        }else{
            break;// конец
        }
    }
    for(i=0;i<40;i++){
        cout<<m[i];// выводиш посмотреть
    }
    _getch();
}
Нашол макс элемент а потом идёш по массиву пока его не встретиш и всё меняеш на 0 когда нашол конец.
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
03.12.2011, 14:25     Заполнить массив #4
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
#include <iostream>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
 
const int n = 20;
 
int main()
{
    srand(time(0));
    int arr[n];
    for(int i = 0; i < n; i++)
    {
        arr[i] = rand()%50;
        std::cout<<std::setw(3)<<arr[i];
    }
    std::fill(arr,std::max_element(arr, arr+n),0);
    std::cout<<std::endl;
    for(int i = 0; i < n; i++)
        std::cout<<std::setw(3)<<arr[i];
    std::cout<<std::endl;
    system("pause");
    return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
03.12.2011, 14:51     Заполнить массив #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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
void random_fill(int * arr, size_t count, int bottom, int top){
    while ( count-- )
        *arr++ = rand() % (top - bottom + 1) + bottom;
}
 
int * max_element(const int * arr, size_t count){
    return ( count < 2 ) ? (int*)arr : ( *arr < *(arr + count - 1) ) ? max_element(arr + 1, count - 1) : max_element(arr, count - 1);
}
 
void dump(const int * arr, size_t count){
    while ( count-- )
        printf("%d%c", *arr++, ( count ) ? ' ' : '\n');
}
 
#define NUM_ELEMENTS 40
#define BOTTOM 0
#define TOP 99
 
int main(void){
    int arr[NUM_ELEMENTS];
    
    srand(time(NULL));
    random_fill(arr, NUM_ELEMENTS, BOTTOM, TOP);
    printf("Before:\n");
    dump(arr, NUM_ELEMENTS);
    memset(arr, 0, (max_element(arr, NUM_ELEMENTS) - arr) * sizeof(int));
    printf("After:\n");
    dump(arr, NUM_ELEMENTS);
    
    return 0;
}
Yandex
Объявления
03.12.2011, 14:51     Заполнить массив
Ответ Создать тему
Опции темы

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