Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C]Аргументы командной строки


Автор: igrulya 12.5.2007, 15:55
День добрый. Помогите плиз с прогой.
Нужно  вычислить площади фигур (круг,квадрат,прямоугольник) с использованием аргументов командной строки.
В командной строке задается признак фигуры. Вычисление площадей реализовать с помощью отдельных функций. Обращение к функциям реализовать через указатель на функцию.

Автор: igrulya 13.5.2007, 11:58
подскажите плиз хоть как сделать ету проверку на признак
 smile 

Автор: zkv 13.5.2007, 13:13
вот, на скорую руку
Код

#include <stdio.h>

void PrintHelp();
typedef float FuncSq(float , float );
FuncSq CircleSq;
FuncSq RectSq;
FuncSq SquareSq;

int main(int argc, char *argv[] )
{
    if( argc < 2 )
    {
        PrintHelp();
        return 10;
    }
    FuncSq *pFunc;
    float a = 0., b = 0.;
    char cSym = argv[1][0];
    switch( cSym )
    {
    case 'c'://circle
        if( argc != 3 )
        {
            PrintHelp();
            return 20;
        }
        if( sscanf( argv[2], "%f", &a ) != 1 )
        {
            PrintHelp();
            return 20;
        }
        pFunc = CircleSq;
        break;
    case 'r'://rectangle 
        if( argc != 4 )
        {
            PrintHelp();
            return 30;
        }
        if( sscanf( argv[2], "%f", &a ) != 1 )
        {
            PrintHelp();
            return 30;
        }
        if( sscanf( argv[3], "%f", &b ) != 1 )
        {
            PrintHelp();
            return 30;
        }
        pFunc = RectSq;
        break;
    case 's'://square 
        if( argc != 3 )
        {
            PrintHelp();
            return 40;
        }
        if( sscanf( argv[2], "%f", &a ) != 1 )
        {
            PrintHelp();
            return 40;
        }
        pFunc = SquareSq;
        break;
    default:
        PrintHelp();
        return 50;
    }

    printf( "\nSquare == %g", pFunc( a, b ) );
    printf("\n\nPress <Enter> to continue\n");
    getc(stdin);
    return 0;
}

void PrintHelp()
{
    printf("\nYou must use as the first command line parameter this letters:");
    printf("\nPass 'c' - for circle, 'r' - rectangle, 's' - square" );
    printf("\npass as second parameter radius for circle, side for squre," );
    printf("\npass as second and third parameters sides for rectangle" );
    printf("\nExample: project1.exe r 10 20" );
    
    printf("\n\nPress <Enter> to continue\n");
    getc(stdin);
}

float CircleSq( float r, float fake  )
{
    return 3.14*r*r;
}
float RectSq( float a, float b )
{
    return a*b;
}
float SquareSq( float a, float fake )
{
    return a*a;
}

Автор: igrulya 13.5.2007, 14:09
Огромное спасибо=)))  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)