2011-03-07 14:04:41 Yakoot1 я мож тоже вечером гляну чонить) | ||
2011-03-08 01:37:21 MrHide Первая задача #include <stdio.h>//библиотека ввода вывода #include <math.h>//библиотека математических функций #define MAXN 99 void main(void) { FILE *fpIn=NULL;//Указатель на файл с исходными данными FILE *fpOut=NULL;//Указатель на файл результата int N=0;//реальное количество чисел в входном файле float Numb[MAXN];//массив действительных чисел максимального размера short unsigned int i=0;//счетчик цикла float Summ=0;//Счетчик суммы для среднего арифметического float Pro=1;//Счетчик произведения для среднего геометрического float SrArifm=0;//Для среднего арифметического float SrGeom=0;//Для среднего геометрического float Dispers=0;//Для дисперсии //========================================================================= for(i=0;i<MAXN;i++) Numb[i]=0.0;//обнуляем елементы массива //========================================================================= puts("====Opening files..."); fpIn=fopen("data.txt","r");//открываем для чтения исходный файл if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } fpOut=fopen("result.txt","w");//открываем для записи файл результата if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } //========================================================================= puts("====Reading data from input file...."); fscanf(fpIn,"%d",&N);//считываем количество чисел printf("Kol of Numbers N=%dn",N);//выводим его на экран puts("Data:"); for (i=0;i<N;i++) //для всех чисел { fscanf(fpIn,"%f",&Numb[i]);//считываем очередное число из файла printf("%6.1f",Numb[i]);//выводим его на экран Summ+=Numb[i];//добавляем его к сумме Pro*=Numb[i];//домножаем его на произведение } puts("");//просто перевод строки printf("Summa of all numbers Summ=%.3fn",Summ); printf("Proizvedenie of all numbers Pro=%.3fn",Pro); //========================================================================= puts("====Reading data from input file...."); SrArifm=Summ/N;//вычисляем среднее арифметическое SrGeom=sqrt(Pro);//вычисляем среднее геометрическое printf("Srednee ariphmetishekoe = %.3fn",SrArifm); printf("Srednee geometricheskoe = %.3fn",SrGeom); Summ=0;//используем ту же переменную суммы для нового счетчика for (i=0;i<N;i++) { Summ+=(Numb[i]-SrArifm)*(Numb[i]-SrArifm); } Dispers=Summ/N;//вычисляем дисперсию (по формуле Е(Х—M)^2) printf("Dispersiya = %.3fn",Dispers); //========================================================================= puts("====Writing data to the output file...."); fprintf(fpOut,"Srednee ariphmetishekoe = %.3fn",SrArifm); fprintf(fpOut,"Srednee geometricheskoe = %.3fn",SrGeom); fprintf(fpOut,"Dispersiya = %.3fn",Dispers); fclose(fpIn);//закрываем файл исходных данных fclose(fpOut);//закрываем файл результата } Как-то так. указаний на то, в каком виде выводится результат не нашел, оформил по своему усмотрению тестировал на файле: 5 13 1.4 15 9.9 1.1 | ||
2011-03-08 14:54:05 Only_True Ехх... Если б в паскале)) | ||
2011-03-08 18:23:12 MeloD MrHide Ууууууу!!! :о) спасибо | ||
2011-03-08 18:42:15 MrHide MeloD это одна пока... запустилась? | ||
2011-03-08 18:56:17 MeloD MrHide | ||
2011-03-09 03:32:37 MrHide Вторая задача #include <stdio.h>//библиотека ввода вывода #include <conio.h> #include <math.h>//библиотека математических функций #define MAXN 99 void main(void) { FILE *fpIn=NULL;//Указатель на файл с исходными данными FILE *fpOut=NULL;//Указатель на файл результата int N=0;//реальное количество чисел в входном файле float Numb[MAXN];//массив действительных чисел максимального размера float Tmp=0.0;//временная переменная для обмена значений short unsigned int i=0,j=0;//счетчики цикла char Choise='~';//для выбора сортировки //========================================================================= for(i=0;i<MAXN;i++) Numb[i]=0.0;//обнуляем элементы массива //========================================================================= puts("====Opening files..."); fpIn=fopen("data.txt","r");//открываем для чтения исходный файл if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } fpOut=fopen("result.txt","w");//открываем для записи файл результата if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } //========================================================================= puts("====Reading data from input file...."); fscanf(fpIn,"%d",&N);//считываем количество чисел printf("Kol of Numbers N=%dn",N);//выводим его на экран puts("Data:"); for (i=0;i<N;i++) //для всех чисел { fscanf(fpIn,"%f",&Numb[i]);//считываем очередное число из файла printf("%6.1f",Numb[i]);//выводим его на экран } puts("");//просто перевод строки puts("Please press '1' if you want to sort up and '2' if you want to sort down..."); while (Choise!='1' && Choise!='2') Choise=getch();//считываем выбор направления сортировки //========================================================================= puts("====Start Of sorting...."); //Сортировка (методом пузырька) for (j=0;j<(N-1);j++) { for (i=0;i<(N-1-j);i++) { if (Choise=='1')//если выбран вариант "1" {//сортируем по возрастанию if (Numb[i]>Numb[i+1]) { Tmp=Numb[i]; Numb[i]=Numb[i+1]; Numb[i+1]=Tmp; } } if (Choise=='2')//если выбран вариант "2" {//сортируем по убыванию if (Numb[i]<Numb[i+1]) { Tmp=Numb[i]; Numb[i]=Numb[i+1]; Numb[i+1]=Tmp; } } } } puts("Result:"); for (i=0;i<N;i++) //для всех чисел { printf("%6.1f",Numb[i]);//выводим его на экран } puts("");//просто перевод строки //========================================================================= puts("====Writing data to the output file...."); for (i=0;i<N;i++) //для всех чисел { fprintf(fpOut,"%.1f ",Numb[i]);//выводим его в файл } fclose(fpIn);//закрываем файл исходных данных fclose(fpOut);//закрываем файл результата } | ||
2011-03-09 19:02:11 MeloD MrHide урааа | ||
2011-03-09 20:40:46 MrHide MeloD Ну там общая часть (чтения данных) не меняется. Меняется только этап обработки. Ну и переменные некоторые добавляются... Сейчас постараюсь третью посмотреть и, может быть, четвертую, Если напомните как вычислить значение производной будет проще... | ||
2011-03-09 21:30:04 MrHide не знаю суть задачи(файл удален уже, не скачать), но значение производной в точке - это тангенс угла наклона касательной к графику в этой точке | ||
2011-03-09 21:46:02 MrHide Degrot угу, только боюсь не поможет, там многочлен заданный коэффициентами, его производная нужно вот задача 4
наверное придется все-таки вычислять производную каждого одночлена по формуле и подставлять туда аргумент | ||
2011-03-09 21:59:11 MrHide а, ну тут все более менее просто) f(x)=a0+a1*x+a2*x^2...+an*x^n тогда f'(x)=a1+a2*2*x+a3*3*x^2...+an*n*x^(n-1) как то так вроде for (i=0;i<n;i++) a[i] = a[i+1]*[i+1]; | ||
2011-03-09 22:39:05 MrHide Degrot ну да, примерно так | ||
2011-03-09 22:44:50 MrHide с нетерпением жду код) | ||
2011-03-10 00:49:47 MrHide Degrot не так быстро ;) Задача 3 #include <stdio.h>//библиотека ввода вывода #include <conio.h> #include <math.h>//библиотека математических функций #include <string> #include <stdlib.h> using namespace std; #define MAXN 99 void main(void) { FILE *fpIn=NULL;//Указатель на файл с исходными данными FILE *fpOut=NULL;//Указатель на файл результата int N=0;//реальное количество чисел в входном файле float Numb[MAXN];//массив действительных чисел максимального размера float fMax=0.0;//переменная для поиска максимума float fMin=0.0;//переменная для поиска минимума char strMax[300]="";//строка для хранения индексов максимальных элементов char strMin[300]="";//строка для хранения индексов минимальных элементов short unsigned int i=0,j=0;//счетчики цикла //========================================================================= for(i=0;i<MAXN;i++) Numb[i]=0.0;//обнуляем элементы массива //========================================================================= puts("====Opening files..."); fpIn=fopen("data.txt","r");//открываем для чтения исходный файл if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } fpOut=fopen("result.txt","w");//открываем для записи файл результата if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } //========================================================================= puts("====Reading data from input file...."); fscanf(fpIn,"%d",&N);//считываем количество чисел printf("Kol of Numbers N=%dn",N);//выводим его на экран puts("Data:"); for (i=0;i<N;i++) //для всех чисел { fscanf(fpIn,"%f",&Numb[i]);//считываем очередное число из файла printf("%6.1f",Numb[i]);//выводим его на экран } puts("");//просто перевод строки //========================================================================= puts("====Start Of find min and max...."); fMin=Numb[0];//изначально считаем минимумом первый элемент fMax=Numb[0];//изначально считаем максимумом первый элемент char TmpStr[10]="";//временная строка для преобразования индекса в текстовый вид for (i=1; i<N; i++) { if(fMax<Numb[i])//если текущий элемент больше максимального { fMax=Numb[i];//делаем его максимальным itoa(i+1,TmpStr,10);//преобразуем индекс в текст strcpy(strMax,TmpStr);//сохраняем индекс нового максимума } else //иначе { if(fMax == Numb[i])//если текущий элемент совпадает с максимальным { itoa(i+1,TmpStr,10);//преобразуем его индекс в текст strcat(strMax," ");//добавляем в строку индексов разделитель - пробел strcat(strMax,TmpStr);//приписываем новый индекс к строке индексов максимальных элементов } } if(fMin>Numb[i])//если текущий элемент меньше минимального { fMin=Numb[i];//делаем его минимальным itoa(i+1,TmpStr,10);//преобразуем индекс в текст strcpy(strMin,TmpStr);//сохраняем индекс нового минимума } else //иначе { if(fMin == Numb[i])//если текущий элемент совпадает с минимальным { itoa(i+1,TmpStr,10);//преобразуем его индекс в текст strcat(strMin," ");//добавляем в строку индексов разделитель - пробел strcat(strMin,TmpStr);//приписываем новый индекс к строке индексов минимальных элементов } } } puts("Result:"); printf("Maximalnue elementu: %s; ih znachenie:%6.2fn",strMax,fMax); printf("Minimalnue elementu: %s; ih znachenie:%6.2fn",strMin,fMin); //========================================================================= puts("====Writing data to the output file...."); fprintf(fpOut,"Maximalnue elementu: %s; ih znachenie:%6.2fn",strMax,fMax); fprintf(fpOut,"Minimalnue elementu: %s; ih znachenie:%6.2fn",strMin,fMin); fclose(fpIn);//закрываем файл исходных данных fclose(fpOut);//закрываем файл результата } тестировалась на файле: 7 13 1.4 1.1 15 9.9 15 1.1 | ||
2011-03-10 01:04:39 MrHide зачем прибегать к строкам? не проще ли будет найти max и min, а потом пройтись 2 раза по массиву и выписать все индексы чисел с соответствующими значениями? | ||
2011-03-10 01:31:01 MrHide Degrot на мой взгляд повторный проход - неэффективное решение. при 100 числах разница в производительности будет ощутима Задача 4 #include <stdio.h>//библиотека ввода вывода #include <conio.h> #include <math.h>//библиотека математических функций #include <string> #include <stdlib.h> #include <time.h> #include <complex> using namespace std; #define MAXN 99 void main(void) { FILE *fpIn=NULL;//Указатель на файл с исходными данными FILE *fpOut=NULL;//Указатель на файл результата int N=0;//реальное количество чисел в входном файле float Numb[MAXN];//массив действительных чисел максимального размера int X0=0;//переменная для случайного значения X0 float Y=0.0;//переменная для значения полинома в точке X0 float dY=0.0;//переменная для значения производной в точке X0 short unsigned int i=0,j=0;//счетчики цикла srand( (unsigned)time( NULL ) );//инициализируем счетчик случайных чисел //========================================================================= for(i=0;i<MAXN;i++) Numb[i]=0.0;//обнуляем элементы массива //========================================================================= puts("====Opening files..."); fpIn=fopen("data.txt","r");//открываем для чтения исходный файл if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } fpOut=fopen("result.txt","w");//открываем для записи файл результата if (fpIn==NULL)//проверяем что файл успешно открыт { puts("Error for opening file with starting data. Program will be close."); return;//выходим в случае ошибки } else { puts("File with starting data was open sucsessfully."); } //========================================================================= puts("====Reading data from input file...."); fscanf(fpIn,"%d",&N);//считываем количество чисел printf("Kol of Numbers N=%dn",N);//выводим его на экран puts("Data:"); for (i=0;i<N;i++) //для всех чисел { fscanf(fpIn,"%f",&Numb[i]);//считываем очередное число из файла printf("%6.1f",Numb[i]);//выводим его на экран } puts("");//просто перевод строки //========================================================================= puts("====Start Of working...."); //выводим на экран исходный полином puts("Polinom:"); for (i=0;i<N-1;i++) //для всех чисел { printf("%.1f*x^%d + ",Numb[i],i);//выводим одночлен на экран } printf("%.1f*x^%dn",Numb[N-1],N-1);//выводим последний одночлен на экран //генерируем значение X0 int range_min=-10;//нижняя граница int range_max=10;//верхняя граница X0=(double)rand() / (RAND_MAX + 1) * (range_max - range_min)+ range_min; //X0=1; //можно использовать для тестирования, просто подставляем нужное значение X0 //начинаем вычислять puts("Proizvodnaia:"); for (i=1;i<N;i++) //первое слагаемое сознательно опускаем { Y+=Numb[i]*pow((float)X0,i);//прибавляем очередное слагаемое (одночлен) полинома dY+=Numb[i]*i*pow((float)X0,i-1);//прибавляем очередное слагаемое (одночлен) производной if(i!=N-1)printf("%.1f*x^%d + ",Numb[i]*i,i-1);//выводим одночлен производной на экран } printf("%.1f*x^%dn",Numb[N-1]*(N-1),N-2);//выводим последний одночлен производной на экран Y+=Numb[0];//прибавляем в сумме обозначающей значение полинома в точке X0 первый одночлен, который мы пропустили ранее puts("Result:"); printf("Znachenie polinoma v tochke X0=%d ravno:%6.2fn",X0,Y); printf("Znachenie proizvodnoi v tochke X0=%d ravno:%6.2fn",X0,dY); //========================================================================= puts("====Writing data to the output file...."); fprintf(fpOut,"Znachenie polinoma v tochke X0=%d ravno:%6.2fn",X0,Y); fprintf(fpOut,"Znachenie proizvodnoi v tochke X0=%d ravno:%6.2fn",X0,dY); fclose(fpIn);//закрываем файл исходных данных fclose(fpOut);//закрываем файл результата } | ||
2011-03-10 01:32:59 MrHide MeloD остальные не сделаю т.к. начиная с 6й не помню мат аппарата да и времени нет... | ||
2011-03-10 01:37:48 yashchar MrHide ыыыыыыыыыыыыы | ||
2011-03-10 01:37:53 MeloD зато я мат часть помню, но если пробую чтото сделать, то... MrHide уже догадывается, какой ужас получится | ||
2011-03-14 22:53:11 MrHide MeloD помогло? | ||
2011-03-18 19:27:29 MeloD MrHide спасибо большое, я с этой учебой совсем на лигу забила. Вы бесценны. Иду на почту писать секретик. | ||
2011-03-18 19:30:33 MrHide MeloD иду =) | ||
1 | 2 |