ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца - АВГУСТ!
0 Пользователей и 1 Гость просматривают эту тему.
"У меня вызывает затруднения найти алгоритм, такой же, какой применяет автор программы в своих ответах".
Простейшая фигня. Передаешь в функцию указатель на указатель. Функция сама выделяет маллоком под него память и заполняет его.
void fun1 (int sec, float* pSHA, float* pSHA_gr, float* pSHA_min){ float grad; grad=((float)sec / 3600)*15; *pSHA=360-grad; *pSHA_min=modff(*pSHA, pSHA_gr); *pSHA_min *=60;}int main(){ SetConsoleCP (1251); SetConsoleOutputCP (1251); int chas, minut, seck; float SHA, SHA_min, SHA_gr; printf ("\n\t Введи прямое восхождение светила: часы минуты секунды "); scanf("%i %i %i", &chas, &minut, &seck); fun1(chas*3600+minut*60+seck, &SHA, &SHA_gr, &SHA_min); printf("\n\n\t SHA =%f SHA_gr=%.0f\xB0 SHA_min= %.2f' \n", SHA, SHA_gr, SHA_min); return 0;}
typedef struct{ float SHA; float SHA_min; float SHA_gr;} Params;void fun1 (int sec, Params* prm){ float grad; grad=((float)sec / 3600)*15; prm->SHA=360-grad; prm->SHA_min=modff(prm->SHA, &prm->SHA_gr); prm->pSHA_min *=60;}int main(){ SetConsoleCP (1251); SetConsoleOutputCP (1251); int chas, minut, seck; Params prm; printf ("\n\t Введи прямое восхождение светила: часы минуты секунды "); scanf("%i %i %i", &chas, &minut, &seck); fun1(chas*3600+minut*60+seck, &prm); printf("\n\n\t SHA =%f SHA_gr=%.0f\xB0 SHA_min= %.2f' \n", prm.SHA, prm.SHA_gr, prm.SHA_min); return 0;}
Можно обойтись без массива.В функцию сразу передавать секунды и указатели на вычисляемые значение.
В функцию сразу передавать секунды и указатели на вычисляемые значение.
Но откуда взялись эти указатели pSHA , pSHA_gr, pSHA_min, если они нигде не объявлялись и нигде не инициализировались?
Но откуда взялись эти указатели pSHA , pSHA_gr, pSHA_min
А когда вы ее будете где-то вызывать, то в вызов подставите реальные переменные, причем называться они могут как угодно,
Сильные мужчины снова начинают учить С++
#include <stdio.h>// http://www.iwriteiam.nl/SigProgC.htmlq(a,b,c) { int e,f,i=8; for(;a&&i--;) if(e=1<<i,f=e<<a|e<<24-a,!(b&e||c&f)&&q(a-1,b|e,c|f)) return printf("%08x\n",1<<i*4); return!a; }int main(int argc, char **argv){ q(8,0,0); return 0;}