Форум программистов, компьютерный форум CyberForum.ru

cannot convert `float' to `float*. Почему так происходит? - C++

Восстановить пароль Регистрация
 
kvoter
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 12
25.05.2013, 02:48     cannot convert `float' to `float*. Почему так происходит? #1
всем привет, помогите исправить ошибки... а то голова мало варит уже, а завтра надо сдать уже
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <iomanip.h>
#include <math.h>
#include <conio.h>
 
 
    void vremya (int n ,float *t, float dt)
    {
    float  tn=0.5,tk=6;
    dt=(tk-tn)/(n-1);
    for (int i=0;i<n;i++)
    t[i]=tn+i*dt;
    }
    
 
void uvhoda(int n,float *t, float *uvh)
    {
        int i,tk=6;
    float  tm=2.5,Umin=0,Umax=20.5,tn=0.5;
    for (i=0;i<n;i++)
    if (t[i]<tm) uvh[i]=((t[i]-tn)*(Umax-Umin))/(tm-tn); else uvh[i]=((t[i]-tm)*(Umin-Umax)+Umax*(tk-tm))/(tk-tm);
    }
 
 
 
 
 
void uvihoda(int n,float *uvh,float *uvih,float uvh1)
    { float a=2.0,b=4,c=-1;
    for (int i=0;i<n;i++)
    {
    uvih[i]=a*(pow(uvh[i],2))+b*uvh[i]+c;}
    }
 
void output (int n,float *t,float *uvh,float *uvih)
{int i;
 cout<<endl;
 cout<< " t            uvh               uvih "<<endl;
 for(i=0; i<n; i++)
  {printf(" %3.1f          %4.5f           %4.5f ",t[i], uvh[i], uvih[i]);
   printf ("\n");}
 return;}
 
 
float front(int n, float*t, float*uvih, float tk, float tn, float *uvh)
 {int i,k=0;
  float umax,umin,dt,u1,u2,a1,a2,dlit,p,w,v=10000,eps=0.12;
  umax=uvih[0];
  umin=uvh[0];
  for(i=1;i<n;i++)
   {if (uvih[i]>umax) umax=uvih[i];
    if (uvh[i]<umin) umin=uvh[i];}
  printf("\n Umax = %.2f", umax);
  printf("\n Umin = %.2f", umin);
  dt=(tk-tn)/(n-1);
  u1=umin+0.9*(umax-umin);
 u2=umin+0.1*(umax-umin);
  for (i=0; i<(n-1); i++)
   {a1=uvih[i];
    a2=uvih[i+1];
    if (uvih[i]<=u1 && uvih[i]>=u2 && a1>a2) k++;
  dlit=k*dt;}
  printf("\n Dlitelnost zadnego fronta signala Uvih = %.3f \n", dlit);
  return dlit;}
  
  void tochn (int n, float t, float *uvh, float *uvih, float dt)
  {
       float p=1, eps=0.012, par=100000000,tk,tn,uvh1,par1;
       while(p>eps)
       {
                   vremya(n,t);
                   uvhoda(n,t,uvh);
                   uvihoda(n,uvh,uvih,uvh1);
                   par1=front(n,t,uvih,tk,tn,uvh);
                   p=fabs(par-par1)/par1;
                   cout<<"n="<<n<<"parametr="<<par1<<"pogrechnost="<<p<<endl;
                   par=par1;
                   n=2*n;
                   }}                   
 
 
 
int main ()
{
    int n=11;
    float tk, tn, t[n], uvh[n], uvih[n], dt, e, e0, w, v,uvh1;
    tk=6, tn=0.5, e0=0.01, e=1, v=1000000;
    vremya(n,t,dt);
    uvhoda(n,t,uvh);
    uvihoda(n,uvh,uvih,uvh1);
    output(n,t,uvh,uvih);
    front(n,t,uvih,tk,tn,uvh);
    tochn (n,t,uvih,uvh,dt);
 
    getch();
}
74 cannot convert `float' to `float*' for argument `2' to `void vremya(int, float*, float)'
75 cannot convert `float' to `float*' for argument `2' to `void uvhoda(int, float*, float*)'
77 cannot convert `float' to `float*' for argument `2' to `float front(int, float*, float*, float, float, float*)'
In function `int main()':
96 cannot convert `float*' to `float' for argument `2' to `void tochn(int, float, float*, float*, float)'
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2013, 02:48     cannot convert `float' to `float*. Почему так происходит?
Посмотрите здесь:

C++ Ошибка cannot convert 'float' to 'float*'
invalid types `float[float]' for array subscript C++
Почему float выводит 0.0 ? C++
опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing C++
почему float выводит 0 ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6156 / 2885 / 281
Регистрация: 04.12.2011
Сообщений: 7,680
Записей в блоге: 3
25.05.2013, 03:04     cannot convert `float' to `float*. Почему так происходит? #2
Вот это хотя бы:
Цитата Сообщение от kvoter Посмотреть сообщение
74 cannot convert `float' to `float*' for argument `2' to `void vremya(int, float*, float)'
Смотрите, тут указана строка:74 имя функции void vremya(int, float*, float) и проблема: в объявлении (см. стр.10) она 2-м параметром принимает указатель, а передается значение. Правда и параметра 2 вместо 3-х... Забыли 2-й, написав 1-й и 3-й?
kvoter
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 12
25.05.2013, 03:08  [ТС]     cannot convert `float' to `float*. Почему так происходит? #3
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вот это хотя бы:

Смотрите, тут указана строка:74 имя функции void vremya(int, float*, float) и проблема: в объявлении (см. стр.10) она 2-м параметром принимает указатель, а передается значение. Правда и параметра 2 вместо 3-х... Забыли 2-й, написав 1-й и 3-й?
на счёт 3-его значения: я не забыл, просто так почему-то лучше работает прога (вроде)
а как передать передать именно значение?

ой не до конца прочитал сообщение ваше. а что значит я указал 1-ый и 3-ий??? я же вроде указал 1-ый и 2-ой
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6156 / 2885 / 281
Регистрация: 04.12.2011
Сообщений: 7,680
Записей в блоге: 3
25.05.2013, 03:45     cannot convert `float' to `float*. Почему так происходит? #4
Цитата Сообщение от kvoter Посмотреть сообщение
ой не до конца прочитал сообщение ваше. а что значит я указал 1-ый и 3-ий??? я же вроде указал 1-ый и 2-ой
Нет вроде перегрузки для int и float, посмотрите ещё раз 10-ю строку. Можно бы так вызвать:
vremya(n, &t, dt)
хотя скорее всего и это неверно. Убедитесь, что
void tochn (int n, float t, float *uvh, float *uvih, float dt)
объявлена правильно. Може все-таки:
void tochn (int n, float *t, float *uvh, float *uvih, float dt)//второй параметр t - указатель?
Вам виднее конечно. Вот в 91-й - правильно, там t - имя массива и преобразуется к float *t в вызове.
ps глянул в прототип vremya и вижу, что передача dt бессмысленна. Его или по указателю/ссылке или вообще не передавать. Он ведь внутри считается. Если снаружи нужен то float& dt передайте.
kvoter
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 12
25.05.2013, 03:48  [ТС]     cannot convert `float' to `float*. Почему так происходит? #5
Цитата Сообщение от IGPIGP Посмотреть сообщение
Нет вроде перегрузки для int и float, посмотрите ещё раз 10-ю строку. Можно бы так вызвать:
vremya(n, &t, dt)
хотя скорее всего и это неверно. Убедитесь, что
void tochn (int n, float t, float *uvh, float *uvih, float dt)
объявлена правильно. Може все-таки:
void tochn (int n, float *t, float *uvh, float *uvih, float dt)//второй параметр t - указатель?
Вам виднее конечно. Вот в 91-й - правильно, там t - имя массива и преобразуется к float *t в вызове.
ps глянул в прототип vremya и вижу, что передача dt бессмысленна. Его или по указателю/ссылке или вообще не передавать. Он ведь внутри считается. Если снаружи нужен то float& dt передайте.
спасибо большое, помогло)
Yandex
Объявления
25.05.2013, 03:48     cannot convert `float' to `float*. Почему так происходит?
Ответ Создать тему
Опции темы

Текущее время: 09:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru