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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kvoter
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 12
#1

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

25.05.2013, 02:48. Просмотров 891. Ответов 4
Метки нет (Все метки)

всем привет, помогите исправить ошибки... а то голова мало варит уже, а завтра надо сдать уже
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 (*)(float)' to `float' in argument passing - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;math.h&gt; float f1(float x)/*vira*enie 1*/ {return (x*cos(x))/(1+ pow(x,2));} ...

Ошибка cannot convert 'float' to 'float*' - C++
Здравствуйте, что означает error: cannot convert 'float' to 'float*' for argument '1' to 'int mas_time(float*, int)'? Из-за чего она...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int) - C++
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй подпрограме.Извиниет за ошибки.Не владею руским.Помогите...

Чем отличаются float преобразования (float)var от float(var) - C++
Здравствуйте! Подскажите, чем отличается (float)var от float(var)

Error C2664: 'sprintf' : cannot convert parameter 2 from 'float' to 'const char *' - C++
Читаю в Интернете пишут о том что нужно явное преобразование типов, подскажите, пжл, как его произвести. PS: если оно тут...

invalid types `float[float]' for array subscript - C++
void SEARCH(float vol, float price, int i) { if (i&gt;N) { if(price&gt;maxprice) { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
25.05.2013, 03:04 #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  [ТС] #3
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вот это хотя бы:

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

ой не до конца прочитал сообщение ваше. а что значит я указал 1-ый и 3-ий??? я же вроде указал 1-ый и 2-ой
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
25.05.2013, 03:45 #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  [ТС] #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 передайте.
спасибо большое, помогло)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2013, 03:48
Привет! Вот еще темы с ответами:

неверное приведение void* к *float а далее к float - C++
Почему когда привожу void* к int* потом к int то все работает, данные не бьются и работают нормально, когда делаю те же операции но с...

Не происходит конвертация типа int в float - C++
int r = 130; r = (float)r/255; r равен 0. Почему не произошла конвертация типа?

Почему float выводит 0.0 ? - C++
ПОЧЕМУ р ВЫВОДИТ =0.0 ????? int Rows, Cols; float p; printf(&quot;Vvedite kol-vo strok and colon&quot;); scanf(&quot;%d%d&quot;, &amp;Rows,...

почему float выводит 0 ? - C++
машинный нуль или в чем проблема? for(i=0; i&lt;k; i++) { t=t*2; } p=(1/t); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.05.2013, 03:48
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru