Лучшее  🚀
06.10.2014 в 16:41 ★ Макклаус ★

Работа с компилятором GCC в командной строке.Урок 2.

Цель

Изучить структуру программ, исходный текст которых состоит из двух и более файлов. Приобрести практические навыки компиляции такой программы при помощи компилятора GCC в командной строке. Научится разбивать программу на несколько файлов с исходным текстом и использовать функции, объявленные в других файлах.

Кстати, на сайте читать удобнее


Исходные данные

• n количество кругов, прямоугольников и m количество точек.

• Опции компилятора: -lm, -c, -o,-s.


Используемые строки для компиляции

• Создание объектного файла:

GCC –с main.c –o main.o

GCC –с rnd.c –o rnd.o

GCC –с geo.c –o geo.o

• Cоздание исполнимого файла:

GCC main.o rnd.o geo.o -s -o neomain.exe -lm


Пример попадания точек в круг и квадрат + график


Вывод:

В итоге проделанной работы можно понять, как состоит структура файла и как в итоге из нескольких файлов с помощью компилятора gcc через командную строку можно создать один исполняемый файл.


Исходный текст программы

GEO.c

int tochka_v_kruge(float x, float y,float x0,float y0,float r)

{

if(((x-x0)*(x-x0))+((y-y0)*(y-y0))<=r*r)

{

return 1;

}

else

{

return 0;

}

}

int tochka_v_kvadrate(float x, float y, float x0, float y0, float x2, float y2)

{

if((x2x))

{

return 0;

}

if((y2y))

{

return 0;

}

return 1;

}


RND.c

#include

#include

#include

float rnd(float a, float b)

{

srand(time(NULL));

float x=(float)rand() / (float) RAND_MAX;

return (x*(b-a))+a;

}


MAIN.c

#include

#include

#include

#include "geo.h"

#include "rnd.h"

//using namespace std;

main()

{

srand(time(NULL));

int I = 0;

float x = rnd(0,5);

float y = rnd(0,5);

float r = rnd(0,5);

printf("krug x = %f, y = %f, r = %f", x, y, r);

for (I = 0; I < 3; I++)

{

float x0 = rnd(0,5);

float y0 = rnd(0,5);

if(tochka_v_kruge(x, y, x0, y0, r) == 1)

{

printf("tochka x = %f, y = %f vxodit v krug", x0, y0);

}

else

{

printf("tochka x = %f, y = %f nevxodit v krug", x0, y0);

}

}

x = rnd(0,5);

y = rnd(0,5);

float x2 = x + rnd(0,5);

float y2 = y - rnd(0,5);

printf("pramoygol'nik x = %f, y = %f, x2 = %f, РЅ2 = %f", x, y, x2, y2);

for (I = 0; I < 3; I++)

{

float x0 = rnd(0,5);

float y0 = rnd(0,5);

if( tochka_v_kvadrate(x, y, x0, y0, x2, y2))

{

printf("tochka x = %f, y = %f vxodit v pramoygol'nik", x0, y0);

}

else

{

printf("tochka x = %f, y = %f nevxodit v pramoygol'nik", x0, y0);

}

}

getchar();

}


GEO.h

extern int tochka_v_kruge(float x, float y,float x0,float y0,float r);

extern int tochka_v_kvadrate(float x, float y, float x0, float y0, float x2, float y2);


RND.h

extern float rnd(float a, float b);

Читать далее