|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.09.2012, 02:00 | #1 |
Пользователь
Регистрация: 07.09.2012
Сообщений: 18
|
Мозги уже плывут!
Доброго времени суток! В универе задали задание : Создайте структуру с полями a,b,x1,x2,dx типа дабл. Введите с клавиатуры данные значения. Добавьте в структуру указатель, выделите под него память для значений ф-ции ф(икс) на интервале от х1 до х2 с шагом дх и обчислите значения ф-ции. Результат вывести в виде таблицы. Создайте ф-цию, которая нормировала бы массив значений ф(х) в диапазон от 0 до К. Вывидите значения ф(х) в тхт-файл в виде вертикальной зависимости... Для значений ф-ции обчислить параметры S1 и S2(с1-среднее среди значений ф(х) которые больше 0, с2-максимальное значение среди значений ф(х)). Создайте массив действительных чисел для всех расчитаных точек, значения которых есть случайными в диапазоне от Smin до Smax(Смакс - большее среди с1 и с2, Смин - меньшее).Шаг случайности должен быть P от Смакс. Упорядочить массив случ.чисел по убыванию. а=10 б=9 х1=0 х2=3 дх=0.1; К=70 P=0.045.Оптимизировать программу для работы с разными значениями.
Так в процессе у меня возникло несколько проблем: 1)в функции void fcia_table() в этом цыкле - for(n=var11.x1;n<=var11.x2;n=n+var1 1.dx) - когда я ввожу х1=0, х2=3 а шаг =0.1(по условию), то считает только до 2.9, а когда ввожу, например, х1=-5, х2=1 а шаг 0.25, то считает нормально, и так что не вводи... короче что-то не так( 2)в ф-ции void random() - собственно не могу вывести ф-лу для расчёта случ.чис в диапазоне с шагом. Напишите плз а? 3)При сортировке в ф-ции рандом сьедаются сотые значения чисел, как это исправить? 4)как узнать что указатель указывает именно на то что тебе нужно? Прога писалась в спешке, простите за бока) чтоб запустить нужно нажать 1(ввести) потом 3(чтоб посчитало) а потом можно и остальное) Помогите плз, а то уже мозги плывут((( |
07.09.2012, 02:01 | #2 |
Пользователь
Регистрация: 07.09.2012
Сообщений: 18
|
вот код:
// lab1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <math.h> #include <stdio.h> #include <conio.h> #include "malloc.h" #include <fstream> #include "time.h" struct var { double a; double b; double x1; double x2; double dx; double *f; } var11; int m=0; //кол-во элем массива double fmax=0,fmin=0,min=0,max=0,b=1; void vvod(); void vivod_struct(); void menu(); void fcia_table();// расчёт значений ф(х) и вывод таблицы void norm_mas(FILE *file);//нормирование массива и вывод графика в файл void obnul(); void random(); void main() { menu(); } void vvod() { printf("Enter value of a : "); scanf("%lf",&var11.a); printf("Enter value of b : "); scanf("%lf",&var11.b); printf("Enter value of x1 : "); scanf("%lf",&var11.x1); m2: printf("Enter value of x2 : "); scanf("%lf",&var11.x2); if(var11.x2<=var11.x1) { printf("Error starting point farther than the end \n\n"); goto m2; } m3: printf("Enter value of dx : "); scanf("%lf",&var11.dx); if ((var11.dx>(var11.x2-var11.x1))) { printf("Error: move more than a space\n\n"); goto m3; } } void vivod_struct() { printf("STRUCT : \n"); printf("\ta : %3.2lf\n",var11.a); printf("\tb : %3.2lf\n",var11.b); printf("\tx1 : %3.2lf\n",var11.x1); printf("\tx2 : %3.2lf\n",var11.x2); printf("\tdx : %3.2lf\n",var11.dx); } void menu() { m1: system("cls"); FILE *file=NULL; int FLAG=0,FLAG1=0; printf("\t\t\tMenu:\n\n"); printf("\tPress 1 to enter values\n\n"); printf("\tPress 2 to show values \n\n"); printf("\tPress 3 to show table \n\n"); printf("\tPress 4 according to output to a text file \n\n"); printf("\tPress 5 rand \n\n"); printf("\tPress 6 to to enter the data again \n\n"); printf("\tPress Esc to Exit\n\n"); while(FLAG!=27) { FLAG=getch(); switch (FLAG) { case 49: { system("cls"); vvod(); goto m1; break; } case 50: { system("cls"); vivod_struct(); printf("\nPress esc to menu"); while(FLAG1!=27) { FLAG1=getch(); switch (FLAG1) { case 27: { goto m1; } } } break; } case 51: { system("cls"); fcia_table(); printf("\nPress esc to menu"); while(FLAG1!=27) { FLAG1=getch(); switch (FLAG1) { case 27: { goto m1; } } } break; } case 52: { system("cls"); norm_mas(file); printf("\nPress esc to menu"); while(FLAG1!=27) { FLAG1=getch(); switch (FLAG1) { case 27: { goto m1; } } } break; } case 53: { system("cls"); random(); printf("\nPress esc to menu"); while(FLAG1!=27) { FLAG1=getch(); switch (FLAG1) { case 27: { goto m1; } } } break; } case 54: { obnul(); goto m1; } } } } |
07.09.2012, 02:02 | #3 |
Пользователь
Регистрация: 07.09.2012
Сообщений: 18
|
void fcia_table()
{ int c=0; if((var11.a!=0)||(var11.b!=0)||(var 11.x1!=0)||(var11.x2!=0)||(var11.dx !=0)) { double x=0,f=0,n=0,b=0,p=0; for(n=var11.x1;n<=var11.x2;n=n+var1 1.dx) { m=m+1; } printf("%d\n",m); var11.f=(double*)malloc(m*sizeof(do uble)); printf("%c",0xDA); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c",0xc2); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c\n", 0xbf); printf("%c f(x) %c x %c\n", 0xb3, 0xb3, 0xb3); printf("%c",0xc3); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c",0xc5); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c\n",0xb4); for(c=0, x=var11.x1;x<=var11.x2;x=x+var11.dx ,c++) { if(x<=1) { var11.f[c]=var11.a*x*x-var11.b; printf("%c%10.2lf%6c%10.2lf%6c\n",0 xb3, var11.f[c], 0xb3, x, 0xb3); if(x<var11.x2) { printf("%c",0xc3); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c",0xc5); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c\n",0xb4); } else { printf("%c",0xc0); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c",0xc1); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c\n",0xd9); } } else { var11.f[c]=var11.a/(x+var11.b); printf("%c%10.2lf%6c%10.2lf%6c\n",0 xb3, var11.f[c], 0xb3, x, 0xb3); if(x<var11.x2) { printf("%c",0xc3); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c",0xc5); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c\n",0xb4); } else { printf("%c",0xc0); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c",0xc1); for(int i=1;i<16;i++) { printf("%c", 0xc4); } printf("%c\n",0xd9); } } } } else { printf("The data is not filled\n\n\n"); obnul(); } } void norm_mas(FILE *file) { if((var11.b!=0)||(var11.x1!=0)||(va r11.x2!=0)||(var11.dx!=0)||(var11.a !=0)) { double *t,l=0; int n=0,k=0,A=0; printf("Valuation range from zero to ((enter a whole number): "); scanf("%d",&A); t=(double*)malloc(m*sizeof(double)) ; for(int i=0;i<m;i++) { t[i]=var11.f[i]; } min=t[0]; for(int i=1;i<m;i++) { if(t[i]<min) { min=t[i]; } } max=t[0]; for(int i=1;i<m;i++) { if(t[i]>max) { max=t[i]; } } if((max<0)||(min<0)) { l=-min+max; } else { l=max-min; } if(l<A) { if(max<=1) { for(int y=0; y<m; y++) { t[y] = (var11.f[y] - min)*A/l; } } else { for(int y=0; y<m; y++) { t[y] = (var11.f[y] - min)*l/A; } } } else { for(int y=0; y<m; y++) { t[y] = (var11.f[y] - min)*A/l; } } printf("\tMas:\tNormMas:\n"); for(int i=0;i<m;i++) { printf("\t%3.2lf\t%3.2lf\n",var11.f[i],t[i]); } for(n=0; n<m; n++) { { for(k=0; k<t[n]; k++) printf(" "); } printf("%c\n",0xB0); } if ((file=fopen("Var11.txt","w"))==NUL L) { printf("Fail unable to open or create"); } else { for(n=0; n<m; n++) { { for(k=0; k<t[n]; k++) fprintf(file," "); } fprintf(file,"%c\n",0xB0); } fclose(file); printf("\n\nSuccessful entry\n"); } } else { printf("The data is not filled\n\n\n"); } } void obnul() { if((var11.a==0)||(var11.b==0)||(var 11.x1==0)||(var11.x2==0)||(var11.dx ==0)) { m=1; min=0; max=0; var11.a=0; var11.b=0; var11.x1=0; var11.x2=0; var11.dx=0; } if((var11.a!=0)||(var11.b!=0)||(var 11.x1!=0)||(var11.x2!=0)||(var11.dx !=0)) { m=1; min=0; max=0; var11.a=0; var11.b=0; var11.x1=0; var11.x2=0; var11.dx=0; for(int i=0;i<m;i++) { var11.f[i]=0; } } } void random() { if((var11.b!=0)||(var11.x1!=0)||(va r11.x2!=0)||(var11.dx!=0)||(var11.a !=0)) { int n=0; double k=0, s1=0, s2=0, smin=0, smax=0, dx=0, u=0,*s; for(int i=0;i<m;i++) { if(var11.f[i]>=0) { k=k+var11.f[i]; n=n+1; } } fmax=var11.f[0]; for(int i=1;i<m;i++) { if(var11.f[i]>fmax) { fmax=var11.f[i]; } } s1=k/n; s2=fmax; if(s1<s2) { smax=s2; smin=s1; } else { smax=s1; smin=s2; } u=0.045; dx=smax*u; s=(double*)malloc(m*sizeof(double)) ; printf("%3.2lf max %3.2lf min %lf dx\n\n",smax,smin,dx); srand((unsigned)time(NULL)); for(int i=0;i<m;i++) { s[i]=rand()*(smax-smin)*dx+smin; printf("%3.2lf\n",s[i]); } for (int i = 0; i<m-1; i++) { int tmp = 0; for (int j=(i+1); j<m; ++j) if (s[i]<s[j]) { tmp = s[i]; s[i] = s[j]; s[j] = tmp; } } printf("\n\nsort mas\n"); for(int i=0;i<m;i++) { printf("%3.2lf\n",s[i]); } } else { printf("The data is not filled\n"); } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кнопки при hover плывут | neznayka333 | HTML и CSS | 5 | 14.02.2012 07:25 |
Есть тут Мозги по электронике? | Air | Свободное общение | 18 | 13.01.2012 00:41 |
Желание,терпение и мозги | Gamestop | Свободное общение | 18 | 03.04.2011 08:37 |