Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6310
Последний выпуск: 19.06.2015

Что не так с программой для задачи на С++?

74K
14 февраля 2012 года
Лен4ик
7 / / 13.02.2012
Уточняю вчерашний вопрос. Помогите найти ошибку в программе для следующих задач.
Задача 2.1. Задана числовая матрица В. Написать функцию для нахождения значения максимального элемента матрицы и его индексов.
2.2. Найти максимальный элемент матрицы А и вычесть его из элементов всех столбцов, кроме того, в котором он находится.
Программа должна выглядеть примерно так:
#include <iostream>
#include <math.h>
using namespace std;
void c_one(int A[5][6], int max, int sum_ind)
{
int i,j;
max=A[1][1];
for(i=0; i<5; i++)
{
for(j=0; j<6; j++)
{
if(A[j]>max)
{
max=A[j];

}
}
sum_ind=i+j;
}
}
int main()
{
int i,j,max,sum_ind;
int A[5][6];
for(i=0; i<5; i++)
{
for(j=0; j<6; j++)
{
A[j]=rand()%10;
cout<< A[j]<<", ";
}
}
c_one(A,max,sum_ind);

cout<<"\n"<<"max="<<max<<"sum_ind="<<sum_ind;
cout<<"\n";

system("PAUSE");
return 0;
}
10K
14 февраля 2012 года
Cybernetic
106 / / 22.07.2009
Продолжали бы ту же тему.
Когда приводите пример кода, соберите его в тег CODE. Это можно сделать, когда набираешь сообщение, выбрать фигурные скобки в меню набора сообщения.

1) Массивы в С++ индексируются с нуля. Поэтому выражение A[1][1] вернет вам не крайний элемент массива, как вы хотите. Нужно писать A[0][0]
2) Вот вы ищите максимальное число, и ищете его правильно. Но индексы... После выполнения циколв у вас i=5 и j = 6. При обращении к матрице с данными индексами вы получите исключение, сообщающее, что вы вышли за рамки массива. Когда вы нашли максимальный элемент, нужно запомнить индексы, на которых он достигается:

Код:
int max_i;
int max_j;

for
for
{

if(A[ i][j]>max)
{
    max=A[ i][j];
    max_i = i;
    max_j = j; 
}
}


И зачем вам переменная sum_ind?

3) Самое главное. Когда в параметрах функции вы указываете просто int, то это называется передача параметров по значению. Значение копируется, и для функции оно будет свое. Когда Функция завершится, вы снова вернетесь к тому значению, которое было до вызова функции. Если вы хотите после функции иметь значение, которое там получили, то нужно параметры передавать по ссылке. Пишется это так: int&. Тогда копия элемента не создается, и вы работаете с той же переменной, что была до вызова функции.

Ну а кода для задачи 2.2 я не вижу. Вы смотрели ответ на ваш вчерашний вопрос?

Очень рекомендую прочитать первые 30 страниц Шилдта, самоучитель С++. Они ответят подробно на все ваши вопросы.

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог