Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Одномерные массивы


Автор: 18652tasha 18.1.2009, 21:45
 Почему программа выводит 256 ?
Как это исправить?
Задача звучит так 
В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) номер минимального по модулю элемента массива;

Код

//---------------------------------------------------------------------------

#include <stdio.h> 
#include <conio.h> 
#include <iostream.h> 
#include <math.h>
void main() 
{
int n=10;
int i;
float A[]={0,4,5,-2,3,1,6,8,9,-6};
int Min = 0;
for(int i = 0; i < n; i++)
{

    if(fabs(A[i]) < A[Min])
    {
        Min = i;
    }
}
cout <<"i ="<<i<<""; 
 system( "PAUSE" );
}

Автор: mes 18.1.2009, 21:58
Цитата(18652tasha @  18.1.2009,  20:45 Найти цитируемый пост)
1) номер минимального по модулю элемента массива;

cout <<"Min ="<<Min;   smile

Цитата(18652tasha @  18.1.2009,  20:45 Найти цитируемый пост)
Почему программа выводит 256 ?

Выводит "мусорное" значение i;
у Вас два раза определено i, один раз вначале main() другой в цикле - это две разные переменные с одинаковым именем.
Выводит значение первой, а она не инициализирована. (ее вобще надо убрать)

Автор: 18652tasha 18.1.2009, 22:09
Спасибо mes все заработало, буду разбираться дальше

Автор: mes 18.1.2009, 22:26
кстати (так на всякий случай) в вашем цикле слишком много скобок, 
можно записать короче и имхо наглядней,

ну и главное: в условии забыт один fabs :
Код

for (int i = 0; i < n; ++i)
 if (fabs(A[i]) < fabs(A[Min])) Min = i;
    

Автор: mes 19.1.2009, 00:19
и вот еще что (на будущее) :
Цитата(18652tasha @  18.1.2009,  20:45 Найти цитируемый пост)
int n=10;
float A[]={0,4,5,-2,3,1,6,8,9,-6};

n и размер массива никак логически не связаны - это не очень красиво.


Автор: bsa 19.1.2009, 01:32
Цитата(mes @ 19.1.2009,  00:19)
n и размер массива никак логически не связаны - это не очень красиво.

18652tasha, можно сделать так:
Код
float A[]={0,4,5,-2,3,1,6,8,9,-6};
const int n = sizeof(A) / sizeof(*A);
Это "автоматическое" определение размера массива, определенного через [].

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)