Передача нескольких аргументов

Pan_Ataman

Добрый день, скажите как передать несколько аргументов для func2 и вывести их в printf?
#include <stdio.h>
 
int func1 (num1,num2)
{
    int c=3;
    int g=4;
    return (c,g);
}
 
int main ()
{
    int a=1;
    int b=2;
    int func2 =func1 (a,b);
    printf ("%d,%d", func2 ,func2);
    return(0);
}
7 ответов

Pan_Ataman

Хе? func2 у вас переменная, какие параметры? Передавать параметры можно функциям, т.е. в вашем случае func1.
func1 (a,b)


Pan_Ataman

Вот так наверное правильнее: Как мне вывести значения func1 с возвращёнными значениями ?
#include <stdio.h>
 
 
int func1  (int num1,int num2)
{
    int c=3+num1;
    int g=4+num2;
    return (c,g);
}
 
int main ()
{
    int a=1;
    int b=2;
    func1 (a,b);
    printf ("%d,%d", func1 (a,b) ,func1 (a,b));
    return(0);
}


Pan_Ataman

Если так хочется получать от функции несколько значений, то изучайте язык Go от Google. Серьёзно, в нём есть такая реализация.


Pan_Ataman

т.е. хотите сказать никаким образом даже доработав текущий код это реализовать не получится? А если с помощью указателей?Я просто пытаюсь реализовать вот эту идею более компактно По коду- это просто конвертер температу из Цельсия в Фаренгейты
#include <stdio.h>
 
int c1=0;
int c2=1;
 
int Convert1 (int cel1)
{
int CountF1=cel1*2+32;
return (CountF1);
}
 
int Convert2 (int cel2)
{
int CountF2=cel2*2+32;
return (CountF2);
}
 
int main ()
{
int Fahr1 = Convert1 (c1);
int Fahr2 = Convert2 (c2);
printf ("Температура раз:%d\nТемпература два:%d\n",Fahr1, Fahr2);
return (0);
}


Pan_Ataman

Можно создать структуру:
struct name {int temp1, temp2};
В функции динамично аллоцировать память и выставлять нужные значения:
struct name *my_temp = (struct name *) malloc(sizeof(struct name));
my_temp->temp1 = 3+num1;
my_temp->temp2 = 4+num2;
И возвращать поинтер на структуру:
return my_temp;


Pan_Ataman

int Convert1 (int cel1) { int CountF1=cel1*2+32; return (CountF1); } int Convert2 (int cel2) { int CountF2=cel2*2+32; return (CountF2); }
не подскажешь в чем разница??? по моему ты просто не представляешь что такое функция это участок кода который делает однотипные действия в твоем случае берет аргумент умножает на два и прибавляет 32 а в качестве аргумента может участвовать любое число, и даже выражения в результате твой код с одной функцией
#include <stdio.h>
 
int c1=0;
int c2=1;
 
int Convert(int cel1)
{
int CountF1=cel1*2+32;
 return (CountF1);
}
 
 
int main ()
{
int Fahr1 = Convert (c1);
int Fahr2 = Convert (c2);
printf ("Температура раз:%d\nТемпература два:%d\n",Fahr1, Fahr2);
return (0);
}
теперь более красивый вариант
#include <stdio.h>
 
int Convert (int cel1)
{
return  cel1*2+32;
}
 
int main ()
{
int Fahr1 = Convert (0);
int Fahr2 = Convert (1);
printf ("Температура раз:%d\nТемпература два:%d\n",Fahr1, Fahr2);
return (0);
}
а теперь вариант который выводит температуру от 0 до 20
#include <stdio.h>
int Convert (int cel1)
{
return  cel1*2+32;
}
 
int main ()
{
int i;
for(i=0;i<21;i++)
printf ("Температура %d: %d\n ",i,Convert(i));
return (0);
}
представляешь сколько функций тебе бы пришлось писать
В функции динамично аллоцировать память и выставлять нужные значения:
и нарушить главное правило: кто выделяет тот и удаляет


Pan_Ataman

т.е. хотите сказать никаким образом даже доработав текущий код это реализовать не получится? А если с помощью указателей?
Указатель - штука обоюдоострая, мощная. При неумении можно долго и безуспешно "мочить корки" (core dump), т.е. исследовать дамп обвалившейся программы.
Я просто пытаюсь реализовать вот эту идею более компактно По коду- это просто конвертер температу из Цельсия в Фаренгейты
Для перевода температуры из шкалы Фаренгейта в шкалу Цельсия нужно от исходного числа отнять 32 и умножить результат на 5/9. Для перевода температуры из шкалы Цельсия в шкалу Фаренгейта нужно умножить исходное число на 9/5 и прибавить 32. Пишите программы простыми и понятными, но не проще. Функции я бы всё-таки обозвал бы более осмысленными именами, типа Cels2Fahr (возвращает градус по Фаренгейту, аргумент функции - градус по Цельсию) и наоборот, Fahr2Cels.
float Cels2Fahr(float C)
{
return ((C * 9.0) / 5.0) + 32.0;
}
 
float Fahr2Cels(float F)
{
return ((F - 32.0) * 5.0 / 9.0);
}
Так наглядно и более доступно для понимания?