Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
05.11.2011, 15:02 | #1 |
Неактивный пользователь
Пол: Регистрация: 04.07.2010
Сообщений: 1
Репутация: 0
|
помогите студенту
Обращаюсь к гуру данного раздела.
) Вычислить N значений функции начиная с заданными с клавиатуры начальным значением аргумента, количеством значений N и интервалом Delta. 2) Вывести на экран значение функции и соответствующих им аргументов в десятичной, двоичной и шестнадцатеричной системах счисления с соответствующими комментариями. 3) Из полученных значений функции выделить целые части чисел, а соответствующих им значений аргументов дробные части. 4) Сформировать два массива чисел, элементами которых будут числа, состоящие из первых 2-х цифр целой части значений функции и 2-х цифр дробной части соответствующих значений аргументов. 5) Отсортировать полученные массивы по возрастанию (убыванию). 6) Вывести на экран отсортированные массивы с соответствующими комментариями. 7) С именами введенными с клавиатуры создать папку и в ней текстовый файл в котором сохранить результаты сортировки массивов. 8) Посчитать двоичную сумму байт созданного файла результатов. Результат расчета записать в шестнадцатеричные ресниц системе счисления в конец этого файла. 9) Построить график функции по точкам полученных массивов. Мой код зависает после вывода первого числа в двоичном исчислении. Подскажите, где ошибка? Пользуюсь Borland C++ v 3.1 Cам код: #include<conio.h> #include<iostream.h> #include<math.h> #include <string.h> #include<fstream.h> #include<graphics.h> float calc(double x); //ф-ция нахождения значения функции void perev(double x,int sys); //ф-ция перевода чисел в с-мы исчисления void sort(int *b,int n); //ф-ция сортировки char dirname[20]; char filename[40]; char fname[20]; void main() {textbackground(0); clrscr(); int N,i; double x[100]; double y[100]; double x0,D,pi; pi=3.1415926535; mitka: cout<<"Введите начальное значения x= "; //Ввод аргумента cin>>x0; x[0]=floor(x0*100+0.5)/100.0; //Проверка введенного значения на недопустимость значений tg() if ((sin(2*x[0]*pi/180)==0)||(sin(2*x[0]*pi/180)==1)||(sin(2*x[0]*pi/180)==-1)) { cout<<"Введеное х кратное 45\n"; goto mitka; } cout<<"Введите количество значений N= "; cin>>N; //Введение количества значений cout<<"Введите интервал Delta= "; cin>>D; //Введение интервалу for(i=1;i<N;i++) //Округление аргументов { //до 2х символов после запятой x[i]=x[i-1]+D; x[i]=floor(x[i]*100+0.5)/100.0; } cout<<"\nМасив значений "; for(i=0;i<N;i++) { float zn=calc(x[i]); //Вызов функции решения y[i]=floor(zn*100+0.5)/100.0; cout<<y[i]<<" "; //Вывод значений функции с } //2ма знаками после запятой cout<<"\nМасив аргументов (десятичная)"; / / Вывод аргументов в 10й for(i=0;i<N;i++) { cout<<x[i]<<" "; } cout<<"\nМасив аргументов (двоичная)"; / / Вывод аргументов в 2й int sys=2; for(i=0;i<N;i++) { perev(x[i],sys); //Вызов функции перевода cout<<" "; //в 2у с-му } cout<<"\nМасив аргументов (16)"; / / Вывод аргументов в 16й sys=16; for(i=0;i<N;i++) { perev(x[i],sys); //Вызов функции перевода cout<<" "; //в 16у с-му } double *cil; int cili[100],drobov[100]; cout<<"\nМасив дро. частей аргументов"; / / Вывод массива первых 2х for(i=0;i<N;i++) //цифр дробной части аргументов { x[i]=modf(x[i],&cil[i]); x[i]=floor(x[i]*100+0.5); drobov[i]=x[i]; cout<<drobov[i]<<" "; } cout<<"\nМасив целых частей значений"; / / Вывод массива первых 2х for(i=0;i<N;i++) //цифр целой части значений { if (abs(y[i])<100) { y[i]=modf(y[i],&cil[i]); y[i]=abs(cil[i]); cili[i]=y[i]; } if ((abs(y[i])>=100)&&(abs(y[i])<1000)) { y[i]=y[i]/10; y[i]=modf(y[i],&cil[i]); y[i]=abs(cil[i]); cili[i]=y[i]; } if ((abs(y[i])>=1000)&&(abs(y[i])<10000)) { y[i]=y[i]/100; y[i]=modf(y[i],&cil[i]); y[i]=abs(cil[i]); cili[i]=y[i]; } cout<<cili[i]<<" "; } sort (drobov, N); / / Вызов ф-ции сортировки cout <<"\ nОтсортитрованый массив частей арг."; / / Вывод отсортированного массива for (i = 0; i <N; i + +) cout <<drobov [i] <<""; sort (cili, N); cout <<"\ nОтсортитрований массив частей знач."; / / Вывод отсортированного массива for (i = 0; i <N; i + +) cout <<cili [i] <<""; cout <<"\ n \ nВведите название директории для сохранения результата:"; cin>> dirname; / / Ввод названия директории cout <<"\ nВведите имя файла для сохранения результата:"; cin>> fname; / / Ввод имени файла для сохранения char * roz = "\ \"; / / результатов сортировки strcat (filename, dirname); strcat (filename, roz); strcat (filename, fname); asm {/ / ассемблерный вставка MOV DX, OFFSET dirname / / Создание директории MOV AH, 39H INT 21H XOR CX, CX MOV DX, OFFSET filename MOV AH, 3CH / / Создание файла INT 21H } ofstream file(filename); for (i = 0; i <N; i + +) / / Запись отсортированного массива {/ / Целых частей в файл file <<cili [i] <<""; } file.close (); ifstream fil (filename, ios:: ate); int len = fil.tellg (); / / Определение об "объема записанных данных fil.close (); cout <<"\ Результаты записанных данных составил =" <<len <<"байт (а, ов) или в шеснадцатиричной"; ofstream fi (filename, ios:: ate); fi <<"\ n"; char len16 [100]; int t = 0, l = 0; i = 0; float ost, chast; double drob, cila, soti; / / Перевод значения величины do / / записанных данных в шестнадцатеричном { / / С-м и запись в конец файла ost = fmod (len, 16); drob = len/16; soti = modf (drob, & cila); chast = drob-soti; len = chast; len16 [i] = ost; i = i +1; t = t +1; } while (chast> = 16); len16 [i] = chast; for (i = t; i> = 0; i -) { if (len16 [i] <10) {Len16 [i] = len16 [i] +48;} if ((len16 [i]> = 10) & & (len16 [i] <= 16)) {Len16 [i] = len16 [i] +55;} cout <<len16 [i]; fi <<len16 [i]; } fi.close (); getch (); int g = DETECT, r; initgraph (& g, & r, "..// BGI "); / / Инициализация гр. режима setgraphmode (2); setbkcolor (0); outtextxy (630,470, "X"); / / Вывод осей координат outtextxy (15,10, "Y"); setcolor (7); moveto (0, 465); linerel (640, 0); setcolor (7); line (10, 0, 10, 480); moveto (10,465); setcolor (14); setlinestyle (0,2,3); / / Установка типа линии for (i = 0; i <N; i + +) / / графика { lineto (cili [i] +10, 465-drobov [i]); / / Вывод графика } getch (); } float calc (double x) / / ф-ция расчета значения функции { double pi; float zn; pi = 3.1415926535; zn = (fabs (tan (2 * x * pi/180) + (cos (2 * x * pi/180) / sin (2 * x * pi/180 )))-( 11 * sqrt (3)) / 3); return (zn); } void perev (double x, int sys) / / ф-ция перевода чисел в другие с-мы счисления { char * g; int j = 0, t = 0, l = 0; float ostacha, chastka; double drob, cila, soti, xc, xdr; xdr = modf (x, & xc); do { ostacha = fmod (xc, sys); drob = xc / sys; soti = modf (drob, & cila); chastka = drob-soti; xc = chastka; g [j] = ostacha; j = j +1; t = t +1; } while (chastka> = sys); g [j] = chastka; for (j = t; j> = 0; j -) { if (g [j] <10) {G [j] = g [j] +48;} if ((g [j]> = 10) & & (g [j] <= 16)) {G [j] = g [j] +55;} cout <<g [j]; } cout <<"."; double tmpxdr, xdrdr, xdrc; char * dr; tmpxdr = xdr * sys; for (l = 0; l <2; l + +) { xdrdr = modf (tmpxdr, & xdrc); dr [l] = xdrc; if (dr [l] <10) {Dr [l] = dr [l] +48;} if ((dr [l]> = 10) & & (dr [l] <= 16)) {Dr [l] = dr [l] +55;} cout <<dr [l]; tmpxdr = xdrdr * sys; } } void sort (int * b, int n) / / ф-ция сортировки { int a; for (int i = 0; i <= n-1; i + +) { int imin = i; for (int j = i +1; j <n; j + +) if (b [j] <b [imin]) imin = j; a = b [i]; b [i] = b [imin]; b [imin] = a; } } |
Реклама: | круиз из москвы в астрахани | концерт руки 2025 | мебель в коридор прихожую | речные круиз из москвы по россии | КНС Нева рекомендует - Dell PowerEdge R750 - КНС Санкт-Петербург - мы дорожим каждым клиентом! |
13.12.2018, 15:26 | #2 |
Новичок
Пол: Регистрация: 06.10.2011
Сообщений: 6
Репутация: 2
|
Отладчиком умеешь пользоваться?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где найти работу студенту? | Кarinka | Учёба, Работа и Карьера | 94 | 21.12.2015 22:23 |
Помогите студенту..... | Jonku | Borland C++ Builder | 4 | 30.05.2008 21:24 |
Помогите студенту... | Triamur | Visual C++ / С/C++ | 8 | 23.12.2007 18:12 |
StudyMinder - в помошь студенту! | tyanvit | Архив | 1 | 17.10.2007 16:30 |
Помогите советом!!! Помогите остановить разграбление компов | Виталий | Архив | 17 | 21.10.2006 00:22 |
|
|