Помогите начинающему программеру =)
От: MAHKA__3D  
Дата: 03.12.04 15:12
Оценка:
Всем привет!
Решил я начать изусать С++, вот дошёл до массивов и столкнулся с проблемой.
В книге которую я читаю такой пример по сумме массива:


#include <iostream.h>

double Summa(double array[], int n)
{
double s=0;
for(int i=0; i<n; ++i) s+=array[i];
return s;
}

int main()
{
double v[10]={1, 2, 3, 4, 5, 6};
cout<<Summa(v) <<endl;
        return 0;
}



Программа незапускается. Компилятор выдаёт ошыбку
"Too few parameters in call to 'Summa(double *,int)'"
А когда пишу

cout<<sizeof(v)<<endl;

все в поряде. показывает 80.

Что сделать чтобы все заработало?
Заранее спасибо.
Re: Помогите начинающему программеру =)
От: Vamp Россия  
Дата: 03.12.04 15:15
Оценка:
Ну, эта... Опа... У тебя в прототипе что написано? Два параметра, правда? А ты вызываешь функцию с одним. Беда...
Да здравствует мыло душистое и веревка пушистая.
Re: Помогите начинающему программеру =)
От: Анатолий Широков СССР  
Дата: 03.12.04 15:17
Оценка:
cout << Summa(v, sizeof(v)/sizeof(v[0])) <<endl;
Re: Помогите начинающему программеру =)
От: LaptevVV Россия  
Дата: 03.12.04 15:18
Оценка:
Здравствуйте, MAHKA__3D, Вы писали:

MAH> Всем привет!

MAH> Решил я начать изусать С++, вот дошёл до массивов и столкнулся с проблемой.
MAH> В книге которую я читаю такой пример по сумме массива:
MAH>
MAH>#include <iostream.h>

MAH>double Summa(double array[], int n)
MAH>{
MAH>double s=0;
MAH>for(int i=0; i<n; ++i) s+=array[i];
MAH>return s;
MAH>}

MAH>int main()
MAH>{
MAH>double v[10]={1, 2, 3, 4, 5, 6};
MAH>cout<<Summa(v) <<endl;
MAH>        return 0;
MAH>}
MAH>

MAH>Программа незапускается. Компилятор выдаёт ошыбку
MAH>"Too few parameters in call to 'Summa(double *,int)'"
Ну так в cout<<Summa(v) <<endl; пропущен второй параметр в функции
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Помогите начинающему программеру =)
От: Аноним  
Дата: 03.12.04 15:48
Оценка: +2
АШ>
АШ>cout << Summa(v, sizeof(v)/sizeof(v[0])) <<endl;
АШ>

А еще лучше
sizeof v / sizeof v[0] // Без скобок

К коду не придираюсь, но, имхо, лучше не ставить скобок где и без них все ясно. Иногда сложно читать код (не этот) где уж слишком "постарались со скобками."
Re[3]: Помогите начинающему программеру =)
От: nobody2 Россия  
Дата: 03.12.04 16:00
Оценка: :)
Здравствуйте, <Аноним>, Вы писали:

А>К коду не придираюсь, но, имхо, лучше не ставить скобок где и без них все ясно. Иногда сложно читать код (не этот) где уж слишком "постарались со скобками."


Стандарт С++ почитай, пункт 5.3.3

опрератор sizeof() так и вызывается: sizeof(<expr>).
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[4]: Помогите начинающему программеру =)
От: Анатолий Широков СССР  
Дата: 03.12.04 16:08
Оценка:
N>Стандарт С++ почитай, пункт 5.3.3

N>опрератор sizeof() так и вызывается: sizeof(<expr>).


Смотри синтаксис п. 5.3 п.1
Re[5]: Помогите начинающему программеру =)
От: Анатолий Широков СССР  
Дата: 03.12.04 16:11
Оценка: 3 (2)
Здравствуйте, Анатолий Широков, Вы писали:

N>>Стандарт С++ почитай, пункт 5.3.3


N>>опрератор sizeof() так и вызывается: sizeof(<expr>).


АШ>Смотри синтаксис п. 5.3 п.1


А именно:

<unary expression> ::= sizeof <unary expression> | sizeof( <type id> )


Так вот, v и v[0] являются <unary expression>, поэтому Аноним совершенно прав.
Re[6]: Помогите начинающему программеру =)
От: nobody2 Россия  
Дата: 03.12.04 16:31
Оценка:
Здравствуйте, Анатолий Широков, Вы писали:

АШ>

АШ><unary expression> ::= sizeof <unary expression> | sizeof( <type id> )


АШ>Так вот, v и v[0] являются <unary expression>, поэтому Аноним совершенно прав.


Просмотрел, однако
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.