Консультация № 169005
05.06.2009, 20:35
0.00 руб.
0 2 0
Здравствуйте, помогите пожалуйста с заданием по С++:
Написать функцию с переменным числом параметров для перевода чисел с десятичной системы исчисления в восьмеричную. Написать функцию вызова main, которая обращается к этой функции не менее 3-х раз с колличеством параметров 3, 5, 8.
Заранее благодарен!

Обсуждение

давно
Посетитель
7438
7205
05.06.2009, 22:24
общий
Что-то несовсем понятно, что передавать параметрами?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
14.06.2009, 20:17
общий
Я думаю, речь идёт о прототипе функции типа int GetAverage(int argAmount, ...) с последующим извлечением параметров через va_list, va_start, va_arg, va_end как в printf. Пример решения задачи:

Код:

#include <stdio.h>
#include <stdarg.h>
#include <math.h>

int DecToOct(int des)
{
float count = 0;
int vis=0, iMod;

while (des >= 8)
{
iMod = des % 8;
des = des / 8;
vis = iMod*(int)pow(10.0f,count) + vis;
count+=1.0f;
}
vis = des*(int)pow(10.0f,count) + vis;

return vis;
}

void PrintOct(int amount, ...)
{
int i,val,greater;
va_list vl;
va_start(vl,amount);
for (i=0;i<amount;i++)
{
val=va_arg(vl,int);
printf( "%3dd = %3do\n",val, DecToOct(val) );
}
va_end(vl);
}

void main()
{
PrintOct(3,7,12,14);
printf("=====================\n");
PrintOct(5,3,9,13,15,24);
printf("=====================\n");
PrintOct(8,6,8,10,11,16,18,20,23 );
printf("=====================\n");
PrintOct(24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24);
}
Форма ответа