private: void cmd(string inpu) { char* s = new char[inpu.length()+1](); strcpy(s, inpu.c_str()); system (s); system ("@echo OK"); } }; int main() { creator pip; switch(pip.init()) { case 0: system ("@echo input error"); break; case 1: pip.make(); break; default: system ("@echo fail"); break; } system ("pause"); return 0; }
Member
Статус: Не в сети Регистрация: 02.02.2008 Откуда: Ростов-на-Дону Фото: 3
ToSHiC писал(а):
указатель - это адрес, а очищаться должна память, на которую он указывает.
Чему там отчищаться? Нигде выделения динамической памяти не было. Товарищ mars478 видимо совершенно не понимает, что значит ключевое слово "delete". В приведённом коде происходит попытка освобождения памяти из кучи, но данная память кучи не принадлежит (это статическая память), что естественно рушит саму кучу. mars478, взгляни на код функции delete - это сишный free:
указатель - это адрес, а очищаться должна память, на которую он указывает.
Чему там отчищаться? Нигде выделения динамической памяти не было. Товарищ mars478 видимо совершенно не понимает, что значит ключевое слово "delete". В приведённом коде происходит попытка освобождения памяти из кучи, но данная память кучи не принадлежит (это статическая память), что естественно рушит саму кучу. mars478, взгляни на код функции delete - это сишный free:
я к этому и клоню:) тут надо понять концепцию указателей 1 раз, потом всё станет легко и приятно. мб лучше даже для этого начать с С, а не с плюсов. в плючах, из-за объектности, всё это намного менее наглядно, деструкторы всякие и т.д.
Obscury писал(а):
ToSHiC писал(а):
и к тому же, у тебя i находится в пространстве std, а не в глобальном, так что использование ::i некорректно
Как i умудрилась попасть в пространство std? В коде присутствуют две переменные i - стековая и глобальная, ::i - это обращение к глобальной.
у него в начале кода using namespace std. в какой области имён будет находиться глобальная переменная i? я думаю, что в std::, но не уверен.
"Все хорошо"(с), за время отсутствия я осилил Подбельского "Язык С++" и сейчас осваиваю "Полный справочник по С++" Шилдта. Тот косяк с указателем понятен- delete применим только для указателя на участок динамически выделенной памяти (посредством new). Новый вопрос: есть класс, суть которого в вычислении некоего значения. В консоли все работает, захотелось прикрутить гуй. Где объявлять объект этого класса, чтобы при клике по кнопке в текстбоксе появлялось нужное значение?
Код:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { if ((textBox1->Text) && (textBox2->Text)) { //Calc -объект того самого класса, calc- метод, возвращающий значение во float //textBox3->Text=Calc.calc( (double.Parse(textBox1->Text)) , Calc.inputEps(int.Parse(textBox2->Text)) ); //^"продвинутый" вариант с вводом данных через два текстбокса textBox3->Text=System::Convert::ToString( Calc.calc(0.1,5) ); //^отладочный вариант с "вшитыми" входными параметрами } }
В stdafx.h подключен L2.h (с прототипом моего класса); В L2.CPP подключен stdafx.h; В lab2_gui.CPP (главный файл проекта) подключены stdafx.h и Form1.h. ЗЫ все проворачивается в VS2008.
проще всего пихнуть в глобальные переменные указатель, в момент инициализации формы создать объект, а в момент наатия на кнопку - дёргать вызовы. так сказать, грязный метод
Member
Статус: Не в сети Регистрация: 09.03.2007 Откуда: ~5km от Москвы
помогите пожалуйста, может кто делал надо в виде win 32 console сделать на с++
Для заданной матрицы размером 8 на 8 найти такие k, что k-я строка совпадает с k-м столбцом. Найти сумму элементов в тех строках, которые содержат хотябы один отрицательный элемент.
ну т.е чтобы программа искала столбцы равные строкам ( матрицу сами задаем, вводим с клавиатуры) и проверяла строки на отрицательный элемент и если находила его , то складывала все элементы строки. и проверяла дальше т.к может быть несколько строк.
#define SIZE 8 /*...*/ for (int q=0; q<SIZE; q++) { int cmp_str=0; int cmp_zero=0; int sum=0; for (int w=0; w<SIZE; w++) { if (!cmp_str && mA[q][w]!=mA[w][q]) cmp_str++; if (mA[q][w]<0) cmp_zero=1; sum+=mA[q][w]; } if (!cmp_str) printf("%d-th row is equal to %d-th column\n", q+1, q+1); if (cmp_zero) printf("%d-th rows' sum: %d\n", q+1, sum); }
ToSHiC на выходных погонял С++ -никак не могу осилить гуй на mfc; ради интереса залез в шарп и, извиняюсь, чуть не уделался от восторга- в коде намного меньше %мусора% (насколько я понял, там гуй в коде почти не отображается), и взаимодействовать с элементами намного проще. Вопрос: какой фреймворк лучше начинать изучать, чтобы и несложен был, и возможности приличные? От mfc уже получил баттхерт, в qt что-то работающее накидал, но сам не понял как... Или же мб стоит изучить с++ на уровне стандарта, а потом перейти на C# с .net или Java со Swing`ом ?
а я гуёвые софтины на с++ только один раз, юзал wxwidget - как бы кросплатформенно, да, но мне не понравилось вообще. в детстве был развращён delphi там интерфейсики легко рисовались
а что изучать зависит от того, что хочешь получить. я вот на работе вообще бэкэндом занимаюсь, и с гуями возиться не люблю. и с css при создании каких нить веб-страничек возиться тож не люблю, так что я бы выбрал c++0x в комплекте с бустом либо жаву. то то я, а это ты, решать тебе
По специальности мне предстоит познать лабвью,матлаб и чистый си; посему для себя я хз что выбирать- в любом случае, в академических целях это не будет применено. Но, допустим, если пытаться устроиться джуниор-кодером, С++ с stl и boost`ом будет достаточно?
Заблокирован Статус: Не в сети Регистрация: 27.04.2010
mars478 писал(а):
ToSHiC на выходных погонял С++ -никак не могу осилить гуй на mfc; ради интереса залез в шарп и, извиняюсь, чуть не уделался от восторга- в коде намного меньше %мусора% (насколько я понял, там гуй в коде почти не отображается), и взаимодействовать с элементами намного проще. Вопрос: какой фреймворк лучше начинать изучать, чтобы и несложен был, и возможности приличные? От mfc уже получил баттхерт, в qt что-то работающее накидал, но сам не понял как... Или же мб стоит изучить с++ на уровне стандарта, а потом перейти на C# с .net или Java со Swing`ом ?
mfc устаревшая хрень ориентироваться на которую ни в коем случае не надо и не надо идти в конторы где она юзается.
Под с++ единственная легкая среда разработки интерфейсов - это билдер. Можно повозиться с qt но там геморра уже достаточно (хотя все равно лучше чем mfc)
int main( void ) { double mas[N] [N + 1]; //Матрица double x[N]; //Корни системы int otv[N]; //Отвечает за порядок корней int i, j, k, n, f; //Ввод данных
cls();
printf( "Vvedite 4iclo uravnenii sistemy ot 2 do 50= " ); scanf( "%d", & n ); if (N < n) printf( "Slishkom bolshoe 4islo urabnenii. Povtorite vvod\n" );
while ( N < n ); printf( "Vvedite sistemy:\n" ); for ( i = 0; i < n; i++ ) for ( j = 0; j < n + 1; j++ ) scanf( "%lf", & mas[i] [j] ); //Вывод введенной системы
printf( "Sistema:\n" ); for ( i = 0; i < n; i++ ) { for ( j = 0; j < n + 1; j++ ) printf( "%7.2f ", mas[i] [j] ); printf( "\n" ); } //Сначала все корни по порядку for ( i = 0; i < n + 1; i++ ) otv[i] = i; //Прямой ход метода Гаусса for ( k = 0; k < n; k++ ) { if ( fabs( mas[k] [k] ) < 0.0001 ) { printf( "Sistema ne imeet reshenii" ); scanf( "%d", & f ); return ( 0 ); } for ( j = n; j >= k; j-- ) mas[k] [j] /= mas[k] [k]; for ( i = k + 1; i < n; i++ ) for ( j = n; j >= k; j-- ) mas[i] [j] -= mas[k] [j] * mas[i] [k]; } //Обратный ход for ( i = 0; i < n; i++ ) x[i] = mas[i] [n]; for ( i = n - 2; i >= 0; i-- ) for ( j = i + 1; j < n; j++ ) x[i] -= x[j] * mas[i] [j]; //Вывод результата printf( "Otvet:\n" ); for ( i = 0; i < n; i++ ) for ( j = 0; j < n; j++ ) if ( i == otv[j] ) { //Расставляем корни по порядку printf( "%f\n", x[j] ); break; } scanf( "%d", & f ); return ( 0 );
}
_________________ СЧАСТЬЕ ДЛЯ ВСЕХ, ДАРОМ, И ПУСТЬ НИКТО НЕ УЙДЁТ ОБИЖЕННЫЙ!(c)Стругацкие Пикник на обочине
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения