Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 07.03.2009, 15:31   #1
ravvv
 
Регистрация: 07.03.2009
Сообщений: 5
Вопрос вопросы насчет массива

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;
}
Вопрос: Как найти разность элементов на главной диагонали? И как определить саму побочную диагональ?

Помогите пожалуйста. Заранее благодарю
ravvv вне форума
Старый 07.03.2009, 16:51   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Как определить ближайший к максимальному элементу элемент массива
Во-первых, их может быть два (справа и слева).
Нужно запоминать не значение максимума, а его индекс:

Код:
#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";
 }

max = 0;
for (i=0; i<7; i++)
 {
 if (mas [i] > mas[max])
  {
  max = i;
  }

 }


cout << "max = " << mas[max]; cout <<"\n";
cout<<"Blizhaishie elementy:\n";
if(max+1<7) cout<<"Sprava: "<<mas[max+1]<<endl;
if(max-1>=0) cout<<"Sleva: "<<mas[max-1]<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}
Цитата:
Как найти разность элементов на главной диагонали?
Разность? ) Думаю, что так, как и сделали вы.
Цитата:
И как определить саму побочную диагональ?
Если размер матрицы N, то побочная диагональ - mas[i][N-i-1].

Код:
#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++)
    {
      sub -= mas[i][i];
    }

    //цикл для побочной диагонали

    for (int i = 0;i<3;i++)
    {
      sum += mas[i][3-i-1];
      sum_count ++;
    }
cout << sub << "\n";
cout << sum << "\n";


system("PAUSE");
return EXIT_SUCCESS;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 07.03.2009, 17:24   #3
ravvv
 
Регистрация: 07.03.2009
Сообщений: 5
По умолчанию

Огромное Вам, спасибо.
Только один нюанс:
Цитата:
Как найти разность элементов на главной диагонали?
вот допустим матрица:

Код:
1 2 3
4 5 6
1 2 3
Разность, т.е "1-5-3 = -7", а компилятор выводит сумму этих элементов со знаком "-", т.е "-9"
ravvv вне форума
Старый 07.03.2009, 17:29   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Разность, т.е "1-5-3 = -7", а компилятор выводит сумму этих элементов со знаком "-", т.е "-9"
А вы уверены, что именно так? Это уже получается "разность первого элемента и суммы остальных".

Но если вам нужно именно так, то замените цикл:
Код:
for (int i = 0;i<3;i++)
    {
      sub -= mas[i][i];
    }
на
Код:
sub = mas[0][0];
for (int i = 1;i<3;i++)
    {
      sub -= mas[i][i];
    }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 07.03.2009, 17:33   #5
ravvv
 
Регистрация: 07.03.2009
Сообщений: 5
По умолчанию

Спасибо, Вам!
ravvv вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проконсультируйте насчет рекурсии. leshax Общие вопросы C/C++ 3 19.01.2009 10:44
насчет строк и букв cr1mson Общие вопросы C/C++ 5 14.01.2009 16:54
Новичкам: Насчет халявы MaTBeu Общие вопросы C/C++ 0 23.12.2008 23:38
насчет объединения таблиц student90 БД в Delphi 2 06.10.2008 17:40
Насчет формы!!! KlErik Общие вопросы Delphi 4 26.05.2007 10:59