что нужно поменять7
int main(int argc, char *argv[])
{// Объявить переменные
FILE *fileIn, *fileOut;
float Radius, L, v2;
Point curPoint, point, prevPoint;
char szBuffer[100];
int index;
v2 = sqrt(2.0f);
printf("[%lf]\n",v2);
// Проверим количество аргументов
// (их должно быть 4 (строка запуска + 3 файла) )
if(argc==4)
{// Открыть исходный файл
fileIn = fopen(argv[1],"rt");
if(fileIn)
{// Открыть файл с результатами
fileOut = fopen(argv[2],"wt+");
if(fileOut)
{// Ввод радиуса
// (вводим, пока радиус не введут)
do
{
printf("Radius [2,1024] = ");
scanf("%f",&Radius);
}
while( Radius<2.0 || Radius>1024 );
// Читаем число в виде строки из файла
if( fscanf(fileIn,"%s",szBuffer)>0 )
{// Преобразуем строку в точку
ConvertToFloat(szBuffer,&curPoint);
// Записать число в результирующий файл
fprintf(fileOut,"%s\n",szBuffer);
// Читаем очередное число в виде строки
while( fscanf(fileIn,"%s",szBuffer)>0 )
{// Преобразуем строку в вещественное число
ConvertToFloat(szBuffer,&point);
// Вычислим расстояние Между точками curPoint и point
L = sqrt( fabs(curPoint.x - point.x)*fabs(curPoint.x - point.x) +
fabs(curPoint.y - point.y)*fabs(curPoint.y - point.y) );
// Проверим: равно ли расстояние ПРИБЛИЗИТЕЛЬНО радиусу
if( floor(L)==floor(Radius) )
{// Если эти велечины ПРИБЛИЗИТЕЛЬНО равны
// то записать точку в файл
fprintf(fileOut,"%s\n",szBuffer);
// и сделать вновь найденную точку исходной
curPoint.x = point.x;
curPoint.y = point.y;
}
}
}
// Закрыть файл
fclose(fileOut);
}
// Закрыть файл
fclose(fileIn);
}
Код:
Radius = atof(argv[N])
где N - индекс значения радиуса в коммандной строке
Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct Point {
float x,y;
};
void usage();
void ConvertToFloat(const char* str, Point* pt);
int main(int argc, char **argv) {
FILE *fileIn, *fileOut;
float Radius, L, v2;
Point curPoint, point, prevPoint;
char szBuffer[100];
int index;
if ((argc!=4)||(argc != 5)) {
usage();
}
v2 = sqrt(2.0f);
printf("[%lf]\n",v2);
fileIn = fopen(argv[1],"rt");
if(fileIn) {
fileOut = fopen(argv[2],"wt+");
if(fileOut) {
Radius = 0.0f;
if ( argc == 5 ) {
Radius = atof(argv[4]);
}
while( Radius<2.0 || Radius>1024 ) {
printf("Radius [2,1024] = ");
scanf("%f",&Radius);
}
if( fscanf(fileIn,"%s",szBuffer)>0 ) {
ConvertToFloat(szBuffer,&curPoint);
fprintf(fileOut,"%s\n",szBuffer);
while( fscanf(fileIn,"%s",szBuffer)>0 ) {
ConvertToFloat(szBuffer,&point);
L = sqrt( fabs(curPoint.x - point.x)*fabs(curPoint.x - point.x) +
fabs(curPoint.y - point.y)*fabs(curPoint.y - point.y) );
if( floor(L)==floor(Radius) ) {
fprintf(fileOut,"%s\n",szBuffer);
curPoint.x = point.x;
curPoint.y = point.y;
}
}
}
fclose(fileOut);
}
fclose(fileIn);
}
return 0;
}
void usage() {
puts("me file.in file.out file.??? [radius]");
exit(0);
}
void ConvertToFloat(const char* str, Point* pt) {
// ....
}
#include <stdlib.h>
#include <math.h>
struct Point {
float x,y;
};
void usage();
void ConvertToFloat(const char* str, Point* pt);
int main(int argc, char **argv) {
FILE *fileIn, *fileOut;
float Radius, L, v2;
Point curPoint, point, prevPoint;
char szBuffer[100];
int index;
if ((argc!=4)||(argc != 5)) {
usage();
}
v2 = sqrt(2.0f);
printf("[%lf]\n",v2);
fileIn = fopen(argv[1],"rt");
if(fileIn) {
fileOut = fopen(argv[2],"wt+");
if(fileOut) {
Radius = 0.0f;
if ( argc == 5 ) {
Radius = atof(argv[4]);
}
while( Radius<2.0 || Radius>1024 ) {
printf("Radius [2,1024] = ");
scanf("%f",&Radius);
}
if( fscanf(fileIn,"%s",szBuffer)>0 ) {
ConvertToFloat(szBuffer,&curPoint);
fprintf(fileOut,"%s\n",szBuffer);
while( fscanf(fileIn,"%s",szBuffer)>0 ) {
ConvertToFloat(szBuffer,&point);
L = sqrt( fabs(curPoint.x - point.x)*fabs(curPoint.x - point.x) +
fabs(curPoint.y - point.y)*fabs(curPoint.y - point.y) );
if( floor(L)==floor(Radius) ) {
fprintf(fileOut,"%s\n",szBuffer);
curPoint.x = point.x;
curPoint.y = point.y;
}
}
}
fclose(fileOut);
}
fclose(fileIn);
}
return 0;
}
void usage() {
puts("me file.in file.out file.??? [radius]");
exit(0);
}
void ConvertToFloat(const char* str, Point* pt) {
// ....
}
не получается(((
всем спасибо, разобралась