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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передаче массива в функцию 
V
    Опции темы
Krav
Дата 29.3.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



возникла проблема при передаче массива в функцию
Код
void poter(float x[42],float y[42],float& a,float& b,int n1,int n2)
{
  int i;
  float xi,yi;
  xi=x[n2-n1+1];
  yi=y[n2-n1+1];
  a=xi/yi;
  b=yi/xi;
  return;
}

int main(int argc, char *argv[])
{
 float time[42],T1[42], T2[42], rubbish,r,t;
 int i;
std::ifstream in("file.txt");
i=1; 
do {
    in >> time[i] >> T1[i] >> T2[i] >> rubbish;
 i++;  
} while (in);
poter(T1,T2,r,t,5,5);
cout<<r<<" "<<t;
return 0;
}

когда просматриваю через watch значение переменных x и y, то они не выглядят как элементы массива, а отображаются как едичное значение:
x=00125948
y=001259F0
PM MAIL WWW ICQ Jabber   Вверх
Dmi3ev
Дата 29.3.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

void poter(float x[42],float y[42],float& a,float& b,int n1,int n2)

делай так
Код

void poter(float x[],float y[],float& a,float& b,int n1,int n2)

функция сама поймет какая длина у массива...
а проблему твою не понял...
че не работает-то?

Это сообщение отредактировал(а) Dmi3ev - 29.3.2009, 17:31


--------------------

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


Новичок



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

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



Вот на скрине видны значения X и Y, то есть в функцию не передались значения массива.
user posted image
PM MAIL WWW ICQ Jabber   Вверх
Dmi3ev
Дата 29.3.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а в T1,T2 они есть? глянь...


--------------------

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


Новичок



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

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



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


Эксперт
***


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

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



Цитата

нету 

следовательно, массив из файла не читается, а в функцию все передается отлично...

Добавлено @ 17:51
покажи файл на данный момент, что-то не то мутишь там...

у тебя должен быть файл типа
Код

1.1 1.2 1.3 1.4
1.5 1.6 1.7 1.8


Это сообщение отредактировал(а) Dmi3ev - 29.3.2009, 18:00


--------------------

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


Новичок



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

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



всё, разобрался

ошибся при записи цикла
PM MAIL WWW ICQ Jabber   Вверх
Dmi3ev
Дата 29.3.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



еще бросается в глаза что i у тебя от 1, а в С++ с 0 массиву нумеруют, те
у тебя 
1 2 3 4 ...
а надо 
0 1 2 3 4 5 ...

поработал с файлом, убери за собой
Код

in.close();



что-то вроде должно быть у тебя...
Код

    //...
        if (!in)
        {
                cout<<"ERROR"<<endl;
                system ("pause")
                return 0;
        }
        int i=0;
        while (!in.eof())
        {
                in>>time[i]>>T1[i]>>T2[i]>>rubbish;
                i++;
        }
    //...
        in.close();


+ еще с точки зрения здравого смысла:
зачем читать каждый раз rubbish, если все равно там будет последнее значение?

Это сообщение отредактировал(а) Dmi3ev - 29.3.2009, 18:19


--------------------

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


Эксперт
***


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

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



Krav
когда просматриваю через watch значение переменных x и y, то они не выглядят как элементы массива, а отображаются как едичное значение:
так и должно быть.
при такой передаче теряется информация о типе, и имя массива представляется как указатель.
в watch есть специальные опции для просмотра, типа  x,10 - показать 10 элементов по адресу x
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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