Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > Borland C++ Builder

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 05.11.2011, 16: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;
}
}
Vaassa вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: настенная вешалка с крючкамиBella плиткагрилибор машинкамебель из металла и дерева


Старый 13.12.2018, 16:26   #2
rpalaznik
Новичок
 
Пол:Мужской
Регистрация: 06.10.2011
Сообщений: 6
Репутация: 2
По умолчанию

Отладчиком умеешь пользоваться?
rpalaznik вне форума
 
Ответить с цитированием Вверх
Ответ

Опции темы
Опции просмотра

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где найти работу студенту? Кarinka Учёба, Работа и Карьера 94 21.12.2015 23:23
Помогите студенту..... Jonku Borland C++ Builder 4 30.05.2008 22:24
Помогите студенту... Triamur Visual C++ / С/C++ 8 23.12.2007 19:12
StudyMinder - в помошь студенту! tyanvit Архив 1 17.10.2007 17:30
Помогите советом!!! Помогите остановить разграбление компов Виталий Архив 17 21.10.2006 01:22

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:02. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.15057 секунды с 11 запросами