У меня проблема, помогите плиз.
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <Math>
//—————————————————————————
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//—————————————————————————
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit2->Text = sqrt(81);
}
Вот это вычисляет квадр. корень 81, а как сделать чтобы оно вычисляло корень числа введенного в Edit1->Text?
9 октября 2008 в 1:00
AFAIUI, на нормальном компиляторе этот мега код должен с SIGSEGV валиться. ибо глобальный int* d; перекрыт локальным, и под него память не выделяется. это был "раз"
а "два" – это то что у вас гениальные (j <= r) сортировку делают от 0-го до n-го элементов включительно, т.е. n+1 элемент, а их у вас всего n.
Выдохнул и прочёл заклинание "Saint Anger"
Блин, топикстартер даже не удосужился даже банальную книжку открыть или готовое решение в интернете поискать! Кто то мне из модеров заливал что удаляет темы в которых нет попытки решения. Здесь оно есть что ли? Автор даже не удосужился посмотреть что выдаёт IntelliSence в IDE для эдит-бокса.
А "мегасортировщик" даже не пытался отдельно проверить как работает его (а "его" ли?) функция merge, я уж и не говорю о таких вещах как дебаг который видимо чужд всем "крутым программерам".
8 октября 2008 в 21:04
Используйте встроенные средства отладки; сравните с другой, правильно работающей программой. В чем проблема?
8 октября 2008 в 17:03
у меня тоже: (это сортировка слиянием… должна быть…)
#include <stdio.h>
//#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
int n;
int *d;
int *b;
void merge(int l, int m, int r)
{
int i, j, k;
i = l;
j = m;
k = l;
while ((i < m) && (j <= r))
{
if(d[i] < d[j])
{
b[k] = d[i];
i++;
}
else
{
b[k] = d[j];
j++;
}
k++;
}
while (i < m)
{
b[k] = d[i];
i++;
}
while (j <= r)
{
b[k] = d[j];
k++;
}
}
void sort(int l, int r)
{
//cout << l << " " << r << endl;
int i, m;
if (l >= r-1) return;
else
{
m = ( l + r) / 2;
sort(l, m);
sort(m, r);
merge(l, m, r);
for (i = l; l < r; i++) d[i] = b[i];
}
}
void main()
{
ifstream in("sort.in");
ofstream out("sort.out");
int i;
int *d;
in>>n;
//cout << n << endl;
d = new int[n];
b = new int[n];
for(i = 0; i < n; i++)
{
in>>d[i];
}
sort(0, n);
cout << n << endl;
for (i = 0; i < n; i++) out<<d[i]<<' ';
delete(d);
delete(b);
out.close();
}
11 августа 2008 в 20:01
тт
11 августа 2008 в 1:05
))
10 августа 2008 в 18:04
Преобразование строки в число
10 августа 2008 в 18:04
большое спасибо
10 августа 2008 в 18:03
Спасибо
10 августа 2008 в 18:03
А что такое StrToInt??
10 августа 2008 в 18:02
Edit2->Text = sqrt(StrToInt(Edit1->Text));
Только о проверках не забудь.