Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопросы по поводу массива 
:(
    Опции темы
ravvv
Дата 7.3.2009, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



1) 
Дан одномерный массив, состоящий из семи элементов. Элементы создаются случайно из диапазона от 1 до 7. 
Определить максимальный элемент массива и ближайший к максимальному элементу элемент массива.


Код

#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int mas [7];
    int i;
    int max;
    int a;
 
    srand(time(0));
       for (i=0;i<7;i++)
   {
    mas[i]=rand()%8;   
       cout << mas[i];
       cout << "\n";
}
 
    for (i=0; i<7; i++)
    {   
if (mas [i] > max)
{
max = mas [i];
}
 
}
 
 
cout << "max = " << max; cout <<"\n";
    system("PAUSE");
    return EXIT_SUCCESS;


Вопрос: Как определить ближайший к максимальному элементу элемент массива

2) Дан двумерный массив размером 3 на 3. Элементы создаются случайно из диапазона от 1 до 5 , найти разность элементов главной диагонали и сумму элементов побочной диагонали.
  
Код

#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
 
    int i,j;
 
    int sum = 0;
    int sub = 0;
    int sum_count = 0;
    int sub_count = 0;
 
    int mas [3] [3];
    srand(time(0));
 
    for (int i=0; i<3; i++)
    {
    for (int j=0; j<3; j++)
 
{
 mas[i][j]=rand()%6;   
   cout.width(2);
       cout << mas[i][j];
 
}
  cout << "\n";
}
 
//цикл для главной диагонали
    for (int i = 0;i<3;i++)
    {
        for (int j = 0;j<3;j++)
        {
            if (i == j)
            {
                sub -= mas[i][j];
                sub_count --;
            }
        }
    }
 
 
 
 
 
    //цикл для побочной диагонали
 
    for (int i = 0;i<3;i++)
    {
        if(mas[i][3-i] < )
        {
            sum += mas[i][3-i+1];
                sum_count ++;
        }
    }
 
 
 
cout << sub << "\n";
cout << sum << "\n";
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}


Вопрос: Как найти разность элементов на главной диагонали? И как определить саму побочную диагональ?

Помогите пожалуйста. Заранее благодарю

PM MAIL   Вверх
zim22
Дата 7.3.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(ravvv @  7.3.2009,  16:53 Найти цитируемый пост)
Вопрос: Как определить ближайший к максимальному элементу элемент массива

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

Добавлено через 5 минут и 4 секунды
Цитата(ravvv @  7.3.2009,  16:53 Найти цитируемый пост)
Как найти разность элементов на главной диагонали?

необходимо с помощью двойного цикла пройти по всем элементам матрицы. и для тех элементов, у которых индексы по двум размерностям будут совпадать(т.е. элементы массива c индексами [0][0], [1][1], [2][2]) вычислить разность с помощью оператора -


--------------------
PM MAIL   Вверх
andrew_121
Дата 7.3.2009, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Вот:
Код

#include <algorithm>
#include <iostream>

int main() {

    const int size = 8;

    int arr1[size] = {0};
    int arr2[size] = {0};
    int* it = NULL;
    srand( (unsigned)time(NULL) );

    std::generate(arr1, arr1+size, rand);
    
    it = std::max_element(arr1, arr1+size);
    
    std::remove_copy(arr1, arr1+size, arr2, *it);
    
    it = std::max_element(arr2, arr2+size);
    
   return 0;
}

std::remove_copy() замени на remove() если не нужно сохранение исходного массива.
Еще можно максимальный элемент переместить в конец массива, и искать в диапазоне не достигая последнего элемента.




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 7.3.2009, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(ravvv @  7.3.2009,  16:53 Найти цитируемый пост)
И как определить саму побочную диагональ?


взято из просторов интернета: 
На следующей матрице мы видим, что элементы побочной диагонали равны числу три. Остальные элементы (не принадлежащие побочной диагонали) равны нулю. В данном случае побочной диагонали принадлежат элементы a41, a32, a23 и a14.
0 0 0 3
0 0 3 0
0 3 0 0
3 0 0 0

Побочная диагональ имеет закономерность. Самый первый (верхний) элемент побочной диагонали имеет максимальный индекс по одной размерности массива и минимальный по другой(строка-столбец). В цикле прогоните матрицу, увеличивая на единицу индексацию по размерности, отвечающей за строки матрицы и одновременно уменьшая индекс столбца на единицу. Параллельно заведите себе переменную для накопления сумму этих элементов.


--------------------
PM MAIL   Вверх
ravvv
Дата 7.3.2009, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



спасибо. Разобрался.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.