Мурмурчик
|
|
1 | |
что нужно поменять?27.08.2008, 12:47. Просмотров 1275. Ответов 3
Метки нет Все метки)
(
подскажите пожалуйста, что нужно поменять, чтобы значение Radiusa не требовалось вводить с клавиатуры, а чтобы это значение бралось из bat файла?
Код
#include <stdio.h> #include <math.h> #include <string.h> // Определить струтуру точки typedef struct { float x; float y; } Point; // Конвертироовать строку в точку void ConvertToFloat(char *Buffer,Point *point) { float res; char szBuffer[100]; int len, i; // Скопируем данные во внутренний буфер strcpy(szBuffer,Buffer); // Определить размер строки len = strlen(Buffer); // Заменить запятую на точку for(i=0;i<len;i++) { szBuffer[i] = Buffer[i]; if(szBuffer[i]==',') {// Заменить запятую на символ окончания строки szBuffer[i] = NULL; // Преобразовать начало строки (до запятой) в координату x point->x = atof(szBuffer); // Преобразовать начало строки (после запятой) в координату y point->y = atof(szBuffer+i+1); } } } // Главная функция 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); } ///////////////////////////////////////////////////////// // Проверка на равность 1 или корень из 2 ///////////////////////////////////////////////////////// // Открыть исходный файл fileIn = fopen(argv[1],"rt"); if(fileIn) {// Файл откроем только при записи первой строки fileOut = NULL; // По умолчанию индекс строки = 1 index = 1; // Читаем число в виде строки из файла if( fscanf(fileIn,"%s",szBuffer)>0 ) {// Преобразуем строку в точку ConvertToFloat(szBuffer,&prevPoint); // Читаем очередную точку while( fscanf(fileIn,"%s",szBuffer)>0 ) {// Преобразуем строку в вещественное число ConvertToFloat(szBuffer,&point); // Вычислим расстояние Между точками prevPoint и point L = sqrt( fabs(prevPoint.x - point.x)*fabs(prevPoint.x - point.x) + fabs(prevPoint.y - point.y)*fabs(prevPoint.y - point.y) ); // Если расстояние НЕ равно 1 или корню из 2 if( L!=1.0f && L!=v2 ) {// то если файл ещё не открыт if(fileOut==NULL) {// то открыть его fileOut = fopen(argv[3],"wt+"); } // Сохраним в файл строку для проверки fprintf(fileOut,"check %i, %i\n",index,index+1); } // Запомнить предыдущую точку prevPoint.x = point.x; prevPoint.y = point.y; // Увеличить индекс строки index++; } } // Закрыть файл, если он был открыт if(fileOut) {// Закрыть файл fclose(fileOut); } // Закрыть файл fclose(fileIn); } } else {// Вывести строку подсказку printf("\nANALIZ_C.EXE <fileIn.cf> <fileOut.dat> <fileCheck.dat>\n"); } return 0; } |
|
27.08.2008, 12:47 | |
Что тут нужно поменять что бы код работал?
парни нужно кое-что добавить (нужно что бы эта программа вычисляла среднее арифметическое чисел) |
|
295 / 55 / 5
Регистрация: 22.05.2008
Сообщений: 788
|
|
27.08.2008, 13:14 | 2 |
добаить передачу параметров через командную строку
0
|
0 / 0 / 0
Регистрация: 27.08.2008
Сообщений: 11
|
|
29.08.2008, 11:04 | 3 |
Почему именно из bat? из ini-файла можно?
0
|
295 / 55 / 5
Регистрация: 22.05.2008
Сообщений: 788
|
|
29.08.2008, 21:09 | 4 |
тут кже другое, есил бат файл, то обычно передают через параметр приложения, тоесть например: someapp.exe file1.txt. а через ини чтоб получить, его надо парсить
0
|
29.08.2008, 21:09 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Написал программу по смене слов в строке, но нужно что бы можно было вводить слова с клавиатуры.Что нужно ? Что нужно поменять что бы программа меняла местами слова первое с последним второе с предпоследним и т.д? Что нужно поменять? Проверте сборку, что нужно поменять? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |