Помогите отладить программу

Ответить
twiss
Сообщения: 2
Зарегистрирован: 21 окт 2009, 21:22

Дана матрица МхН(целого типа)
Задача следующая,к каждому элементу добавить минимальный элемент строки.
int min=mat[1][1];
int x;
int y;
for(int i=0; i<ROW; i++)
{
for(int j=0; j<COL; j++)
{
if(mat[j]<min)
{
min=mat[j];
x=i;
y=j;

}
}
}
cout<<"Minimal'niy element-->"<<min<<endl;
int a=0;
for(int i=0;i<ROW;i++)
{
for(int j=0;j<COL;j++)
{
mat[j]=mat[j]+min;
a=mat[j]+min;
cout<<a<<'\t"
}
}
Программа минимальный элемент находит,но как прибавить догодаться не могу
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

Так, вроде всё есть. Только незачем дважды добавлять минимальный элемент:

mat[j]=mat[j]+min;
a=mat[j]+min;
cout<<a<<'\t"


Сделай так:

Код: Выделить всё

 
mat[i][j]+=min;//добавляется минимальный элемент
cout<<mat[i][j]<<'\t';// выводим для просмотра
twiss
Сообщения: 2
Зарегистрирован: 21 окт 2009, 21:22

А понятно,в чем была ошибка.
Спасибо за помощь)
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Разве это исправление ошибки? Это оптимизация. Ошибки, кстати, не было. Но назад не меняй, так лучше.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

atavin-ta писал(а):Разве это исправление ошибки? Это оптимизация. Ошибки, кстати, не было. Но назад не меняй, так лучше.
atavin-ta, или я тебя не понял, или, выводя на экран дважды увеличенное значение элемента массива на минимальный элемент, мы получаем верное решение задачи?
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Где ты увидел двойное увеличение? a=a+b и a+=b - одно и то же, разница во времени и способе исполнения.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Albor
Сообщения: 491
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

atavin-ta писал(а):Где ты увидел двойное увеличение? a=a+b и a+=b - одно и то же, разница во времени и способе исполнения.
Код автора с моими комментариями:

Код: Выделить всё

mat[i][j]=mat[i][j]+min;// Вот оно первое
a=mat[i][j]+min;// А вот второе
cout<<a<<'\t"

А это твоё изречение:

Ошибки, кстати, не было.
atavin-ta, ты невнимателен.
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

инкемент a я действительно пропустил.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответить