Тролль Опубликовано 21 сентября, 2008 Жалоба Поделиться Опубликовано 21 сентября, 2008 (изменено) daff9000: C++ по сути - метаязык, "язык языков". Сам он довольно примитивен, его операции и операторы ближе к тому, что делает машина, чем у других языков высокого уровня. Операции и встроенные типы данных тоже весьма примитивны. Поэтому он очень эффективен. Но почти все его элементы - типы данных, квадратные и круглые скобки, операции =, +, -, *, new и так далее - переопределяемые (точнее, доопределяемые) средствами самого языка. Язык рассчитан на то, на его основе программисты будут строить собственные языки гораздо более высокого уровня. Ты можешь ввести в нем, например, собственный класс целых чисел, которые пишутся "задом наперед" и для которых операция + означает "умножить", а - - взять факториал. Конечно, такой класс целых чисел никому не понадобится, это просто как пример степени гибкости языка. Но можно придумать и объекты с описаниями во много тысяч строк "космическая станция" и "космический корабль" и определить для них операцию + как стыковку. Это опять же в качестве примера. Можно придумать множество полезных операций для любых объектов. При обучении чаще всего используют математические объекты. Например, для массивов часто применяются операции их поэлементного сложения, вычитания и умножения всех элементов массива на число, а также вывод целиком массива. Вот от тебя и требуют определить такие операции для той модели массивов, которая уже определена в твоей программе. При определении операции записываются как обычные функции класса ("методы"), только само обозначение функции у них особенное и включает обозначение определяемой операции (например, для + будет operator+). Конкретные примеры записи определения операции, скорее всего, ты легко найдешь в учебнике. P.S. Более конкретно, надо определить в классе нашего массива операции =, +, * так, чтобы можно было в программе писать выражения типа c=2*a+b*5, где a, b, c - массивы (фактически объекты класса, описывающего наш вид массива и возможные операции для объектов этого класса). Изменено 21 сентября, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 24 сентября, 2008 Жалоба Поделиться Опубликовано 24 сентября, 2008 а как матрицу транспонировать если размерность n*m . Это нужно создавать еще одну матрицу ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 24 сентября, 2008 Жалоба Поделиться Опубликовано 24 сентября, 2008 (изменено) Да. Иначе пришлось бы использовать, например, моделирование двумерного массива одномерным с соответствующим пересчетом индексов. P.S. Собственно, а зачем ее транспонировать? "Как вы яхту назовете, так она и поплывет". Если мы будем обращаться к столбцам вместо строк и наоборот, это то же, что обращаться к транспонированной матрице. Например, если в моем примере заменить тело функции fun на такое for (int j=0; j<m; j++) {for (int i=0; i<n; i++){cout.width(7); cout<<b[j];} cout<<endl;} то функция fun будет выводить не прямую, а транспонированную матрицу. Изменено 24 сентября, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 25 сентября, 2008 Жалоба Поделиться Опубликовано 25 сентября, 2008 Да. Иначе пришлось бы использовать, например, моделирование двумерного массива одномерным с соответствующим пересчетом индексов. P.S. Собственно, а зачем ее транспонировать? "Как вы яхту назовете, так она и поплывет". Если мы будем обращаться к столбцам вместо строк и наоборот, это то же, что обращаться к транспонированной матрице. Например, если в моем примере заменить тело функции fun на такое for (int j=0; j<m; j++) {for (int i=0; i<n; i++){cout.width(7); cout<<b[j];} cout<<endl;} то функция fun будет выводить не прямую, а транспонированную матрицу. Задание такое: Написать программу, выполняющую в матрице размерностью н*м перестановку строк и столбцов. Написать функции: 1. заполнение двумер. массива случ. числами 2. вывод массива на экран 3. перестановка строк и столбцов Я вот думаю, как более рационально это сделать, какие длжны быть функции по своим задачам. В частности последняя, создает новую транспонированную матрицу, или выводит заданную в определенной последовательности... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 сентября, 2008 Жалоба Поделиться Опубликовано 25 сентября, 2008 Условие сформулировано нечетко. Под перестановкой строк и столбцов чаще понимается не транспонирование, а перестановка порядка следования тех или других. Такие операции часто применяются, например, при решении системы уравнений в матричной форме. Но в данном случае, мне кажется, имелось в виду именно транспонирование. Вывод на печать в транспонированном виде я бы не рассматривал как истинное транспонирование. Транспонирование матрицы n*m даст матрицу другой размерности - m*n. Поэтому я бы создал новый массив (что нам стоит дом построить? Нарисуем, будем жить :) ), а не пытался переопределить границы старого. Вообще исходные данные всегда лучше сохранять в неприкосновенности. Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 4 октября, 2008 Жалоба Поделиться Опубликовано 4 октября, 2008 Здравствуйте Тролль =) Поздаровался я потому, что на мой вопрос, ответите как всегда Вы :) Помогите пожалуйста уточникть следующую ситуацию: Мы знаем, что Объекты не имеют прямого доступа к закрытым данным класса. Если же я хочу перегрузить оператор сложения (для матриц), то мне нужно в качестве единственного параметра передать ссылку на массив, который будет прибавляться к первому. Тогда при реализации перегрузки оператора, я задаю условие (которое проверяет равенство размерностей матриц), и к размерности второго массива обращаюсь так: Mas.n, Mas.m (где Mas - ссылка на матрицу)... Если не совсем понятно, то код ниже. Matrix Matrix::operator+ (Matrix &Mas) { if (n==Mas.n && m==Mas.m) { Matrix Sum; for (int i=0; i<n; i++) { for(int j=0; j<m; j++) { Sum.pMatrix[j] = pMatrix[j] + Mat.pMatrix[j]; } } return Sum; } else { cout << "Error!"; retern *this; } } [/cpde] Но разве, Mas.n - это не прямое ображения к закрытому члену n ? Или здесь подводные камни заключается в том, что к n обращается функция, перегружающая операцию сложения ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 5 октября, 2008 Жалоба Поделиться Опубликовано 5 октября, 2008 Функция - член класса может работать с данными любых объектов этого класса. Если объект принадлежит к этому же классу, его компоненты видны для функции этого класса. Инкапсуляция осуществляется внутри класса, а не объекта. То есть объекты имеют прямой доступ к закрытым данным других объектов их класса. на мой вопрос, ответите как всегда Вы :) C++ не инкапсулирован в класс троллей :) . Кто поспел, тот и съел ответил. Ссылка на комментарий Поделиться на другие сайты Поделиться
Platinum-msk Опубликовано 6 октября, 2008 Жалоба Поделиться Опубликовано 6 октября, 2008 (изменено) Всем доброго времени суток! :no: Надеюсь на вашу помощь, так как в программировании не особо силен, а если точнее, то не силен вообще. :g: Необходимо решить пару задачек по С++, но я никак не могу въехать, как это осуществить. :g: Начало и конец проги, это понятно как сделать, функцию тоже, но вот как считать уравнения и ряд с "n" я не могу осилить. Собственно текст задания: 1. Составьте программу вычисления значения суммы и функции в диапазоне от 0 до 1 с шагом h=0.2. Вычисление суммы ряда Тейлора производите с погрешностью, не превышающей 0.000001. Заданная точность обеспечивается суммированием членов ряда вплоть до слагаемого, абсолютное значение которого меньше 0.000001. Вывести на экран значение суммы и номер (N) последнего слагаемого. При вычислении значения очередного члена ряда используйте значение предыдущего члена. 2. Напишите программу для вычисления у по формуле: Натуральное значение n введите с клавиатуры. Обеспечьте возможность, не завершая программу, вычислить y для нескольких значений n и выведите на экран значения промежуточных результатов при n равном 3, 5 и 10. Обеспечьте необходимую точность вычислений и точность представления результатов. Заранее спасибо :g: Изменено 6 октября, 2008 пользователем Platinum-msk Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 6 октября, 2008 Жалоба Поделиться Опубликовано 6 октября, 2008 (изменено) Platinum-msk: Первая задача: #include <iostream>#include <math.h>using namespace std;main(){int n; float x,s,t,y;for(x=0;x<1.1;x+=0.2){s=t=x*x*x; for(n=1; fabs(t)>=1e-6; n++){t=-t*x*x*(2*n-1)/(2*n+1); s+=t;}y=x*x*atan(x);cout<<"x="<<x<<" s="<<s<<" n="<<n<<" y="<<y<<endl;}getchar(); } Вторая задача, кроме вывода промежуточных результатов при n=3,5,10: #include <iostream>#include <math.h>using namespace std;main(){int i,n; float y;do{cout<<"n= "; cin>>n; y=0; for(i=n; i>=0; i--)y=sqrt(2*i+1+y); cout<<"y="<<y<<endl;}while(n);cout<<endl; getchar(); } Тут выполнение заканчивается при вводе n, равного 0. Насчета вывода промежуточных результатов при n=3, 5, 10 я не понял, это отдельная дополнительная задача или их надо выводить, когда введено такое n, поэтому проигнорировал. В любом случае просто внутрь цикла добавляется вывод y, если n равно 3, 5 или 10. P.S. Убрал двоеточие в самом начале первой программы (попало туда от слов "первая задача:" ) Изменено 7 октября, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 20 октября, 2008 Жалоба Поделиться Опубликовано 20 октября, 2008 Опять надеюсь на помощь Троля... Необходимо организовать ввод-чтение матриц из файла и в файл (та задача которую я с сентября тут тру :doh: ) Для этого нужно сначала перегрузить операторы вводы-вывода... Читаю Либерти, но пока не могу понять систему вввода-вывода С++... Что там должно быть в получаемых параметрах, в возвращаемых и т.д. Короче, болото у меня с этим ((( Что там в этой иерархии классов iostream ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dr.Glюk Опубликовано 21 октября, 2008 Жалоба Поделиться Опубликовано 21 октября, 2008 насколько я понял, нужно сделать считку и запись при помощи iostream.. считка: CString str_er("Ошибка при открытии файла!");std::ifstream infile(filename);if(!infile){ MessageBox(0,str_er,(LPCTSTR)"Ошибка!!!",0); exit(1);} infile>>Row; infile>>Col; Matr = new int* [Row]; for(int i=0; i<Row;i++){ Matr[i] = new int[Col];} while(infile){ for(int i(0);i<Row;i++) { for(int j(0);j<Col;j++) { infile>>Matr[i][j]; } } } infile.close(); запись: std::ofstream myFile(nameFile, std::ios_base::out); for(int i=0;i<Col;i++){ for(int j=0;j<Col;j++) { myFile<<Matr[i][j]<<" "; } myFile<<"\n";} myFile.close(); все это работает на VS2005 Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 25 октября, 2008 Жалоба Поделиться Опубликовано 25 октября, 2008 В книге встретил слежующее описание: "Как объект cin возвращает значение Возвращаемым значением объекта cin является ссылка на объект istream. " Как может объект возвращать значение, когда это не функция ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 25 октября, 2008 Жалоба Поделиться Опубликовано 25 октября, 2008 Ты обращаешься к объекту посредством вызова его функции (операции). Эта функция выдает тебе какое-то значение. Поскольку она принадлежит объекту, можно сказать, что объект выдал тебе какое-то значение при обращении к нему посредством этой функции. Не слишком удачное выражение, но допустимое. В стиле "Белый Дом возвратил на повторное рассмотрение..." Ссылка на комментарий Поделиться на другие сайты Поделиться
daff9000 Опубликовано 9 ноября, 2008 Жалоба Поделиться Опубликовано 9 ноября, 2008 Не могу понять назначение такой штуки как stream. Вот скажем есть перегрузка оператора ввода из файла, а какую роль играет stream понять не могу :) ifstream & operator >>(ifstream & stream, Cmatrix & obj){//obj.~Cmatrix();int m1,n1;stream>>n1>>m1;obj.n=n1;obj.m=m1;obj.mat = new int* [obj.n];for (int i=0;i<obj.n;i++) obj.mat[i]=new int[obj.m]; for (i=0; i<obj.n; i++)for (int j=0; j<obj.m; j++) stream>>obj.mat[i][j];return stream;} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 9 ноября, 2008 Жалоба Поделиться Опубликовано 9 ноября, 2008 (изменено) stream - имя ссылки на поток, то есть, в более простых словах, имя автоматически разыменовываемого при использовании указателя на "умный" буфер вводимых-выводимых данных типа ifstream. P.S. В целом это работает так: оператор >> должен заполнить матрицу вводимыми из буфера файла элементами записанной в файле матрицы и выдать снова буфер содержания файла уже без этих данных. Значки использования ссылок служат для того, чтобы эта работа велась бы непосредственно над данными, а не над их копиями. А stream просто имя формального параметра (ссылки на экземпляр класса буфера, называемый в C++ потоком) в функции, реализующей операцию >>. Изменено 9 ноября, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 10 ноября, 2008 Жалоба Поделиться Опубликовано 10 ноября, 2008 Подскажыте пожалуйста, можно ли в BCPP из одной exe'шки вызывать експортные функции другой exe'шки? И как проще ето зделать? С DLL'ками, кажится разобрался (там достаточно к проекту добавить нужный *.lib)... а вот, как заставить линкер понимать функции експортировиные с exe'шки? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость xekcem Опубликовано 19 декабря, 2008 Жалоба Поделиться Опубликовано 19 декабря, 2008 Доброго времени суток! На странице 3 был приведен пример запуска процесса через функцию system(); Как я понял, это функция интерпретирует командную строку... Существует несколько функций, для запуска процессов (ShallExecute(); WinExec(); LoadModule() и, наверное, прочие), но все они, по сути, уже устарели, используются для совместимости и работают через CreatProcess(), плюсы которой и в том, что она не только запускает процесс, но и позволяет им управлять... Соответственно вопрос: Как запустить колькулятор через CreateProcess(); :blink: Пробовал, не получилось, не могу разобраться с параметрами сей функции, их там куча. Помогите примером plz. Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 19 декабря, 2008 Жалоба Поделиться Опубликовано 19 декабря, 2008 xekcem: #include "windows.h"#include "iostream.h"main(){STARTUPINFO cif;ZeroMemory(&cif,sizeof(STARTUPINFO)); PROCESS_INFORMATION pi;if(CreateProcess("c:\\windows\\system32\\calc.exe",0,0,0,FALSE,0,0,0,&cif,π)==TRUE) {Sleep(3000); TerminateProcess(pi.hProcess,NO_ERROR);}} Запускает калькулятор и через 3 с закрывает его. Проверял на DEv-C++. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость xekcem Опубликовано 19 декабря, 2008 Жалоба Поделиться Опубликовано 19 декабря, 2008 xekcem: #include "windows.h"#include "iostream.h"main(){STARTUPINFO cif;ZeroMemory(&cif,sizeof(STARTUPINFO)); PROCESS_INFORMATION pi;if(CreateProcess("c:\\windows\\system32\\calc.exe",0,0,0,FALSE,0,0,0,&cif,π)==TRUE) {Sleep(3000); TerminateProcess(pi.hProcess,NO_ERROR);}} Запускает калькулятор и через 3 с закрывает его. Проверял на DEv-C++. Спасибо Тролль! Работает... Но я не совсем понял реализацию... Не мог бы подробней по строкам объяснить, еще раз спасибо... Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 19 декабря, 2008 Жалоба Поделиться Опубликовано 19 декабря, 2008 (изменено) xekcem: Нули в CreateProcess соответствуют использованию значений параметров по умолчанию, мы эти параметры не используем (FALSE тоже ноль, только по-другому обозначенный, вместо него можно было написать тоже 0, как и в соседних параметрах) и разбираться с ними нет никакой нужды. Первый параметр в вызове CreateProcess - путь к вызываемой программе - тоже ясен. Последние два параметра в вызове - адреса двух служебных структур, первая для задания размера окна и связанных с ним вещей, если в ней нули, все берется по умолчанию. Вторая структура заполняется самой Windows данными о том, что же она все-таки создала, нам она не особенно нужна, но чтобы Windows была довольна, ей нужно дать адрес такой структуры. Первую структуру мы создаем и обнуляем двумя первыми операторами функции main, вторую структуру - третьим, четвертый оператор - сам вызов CreateProcess внутри if и, если все в порядке, принудительное завершение созданного процесса через 3000 мс, для чего используется идентификатор этого процесса, взятый из второй структуры (все же пригодилась :blushing:). Изменено 19 декабря, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Глупышка Опубликовано 20 декабря, 2008 Жалоба Поделиться Опубликовано 20 декабря, 2008 опять нуждаюсь в помощи! скажи мне где у меня ошибка почему моя программа не работает ! задание: в однородном массиве, состоящем из n элементов вычислить: 1.Минимальный по модулю элемент массива. 2.Сумму модулей элементов массива,расположенных после первого элемента, равного нулю. 3.Преобразовать масив таким образом , чтобы в первой половине его распологались элементы, стоящие в четных позициях, а во второй половине-элементы стоящие в нечетных позициях. программа: #include<stdio.h> #include<math.h> #include<conio.h> #include<stdlib.h> #include<time.h> #include<iomanip.h> void main() { clrscr(); int n, i, j; printf("\n vvedite kol-vo ele-tov macciva\n,n="); scanf("%d",&n); int *A=new int [n]; randomize(); for(i=0;i<n;i++) A=random(99)-50; FILE*rez; rez =fopen("F:\\lab4.txt","w"); printf("\n isxodni macciv A\[%d\]:\n",n); for(i=0;i<n;i++) {printf("%4d",A); fprintf(rez,"%4d",A);} int min=0,imin=0; for(i=0;i<n;i++) if(min<abs(A)); {min=abs(A); imin=i+1;} printf("\n\n min modul elementa A\[%d\]=%d\n",imin,min); fprintf(rez,"\n\n min modul elementa A\[%d\]=%d\n",imin,min); for(i=0;i<n;i++) if(A==0) {j=i;break;} int sum=0; for(i=j+1;i<n;i++) sum=sum+abs(A); printf("\n sum mod ele-ta=%d\n",sum); fprintf(rez,"\n sum mod ele-ta=%d\n",sum); int*B=new int[n]; int nach=0,kon=n-1; for(i=0;i<n;i++) if(i%2) {B[kon]=A;kon--;} {B[nach]=A;nach++;} {printf("%4d",B); fprintf(rez,"%4d",B);} getch();} Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 20 декабря, 2008 Жалоба Поделиться Опубликовано 20 декабря, 2008 (изменено) Глупышка: скажи мне где у меня ошибка почему моя программа не работает !Разберем по косточкам - комментарии мои:#include<stdio.h> #include<math.h> #include<conio.h> #include<stdlib.h> #include<time.h> #include<iomanip.h> //не нужен void main() { clrscr(); int n, i, j; printf("\n vvedite kol-vo ele-tov macciva\n,n="); // запятая после перевода строки явно не на месте scanf("%d",&n); int *A=new int [n]; randomize(); // это из Паскаля, в C++ не работает; надо srand(time(NULL)); for(i=0;i<n;i++) A=random(99)-50; // это опять из Паскаля; надо A=rand()%100-50; FILE*rez; rez =fopen("F:\\lab4.txt","w"); // зачем файл? в задании ничего о файлах не было; и компьютер с диском F, на который предписано записывать файл, еще поискать надо; у меня нормальные диски только C и D, поэтому лучше диск вообще не указывать или указать C, он-то всегда есть printf("\n isxodni macciv A\[%d\]:\n",n); // не знаю, как у тебя на Borland, а у меня \ перед квадратными скобками будут только мешать; впрочем, это зависит от компилятора for(i=0;i<n;i++){printf("%4d",A); fprintf(rez,"%4d",A);} int min=0,imin=0; // надо min=abs(A[0]), и притом отдельным оператором: чтобы найти минимум, надо сначала задать его значение достаточно большим или равным первому элементу, а потом уменьшать каждый раз, как встретится меньшее значение, а от нуля ехать вниз по модулю уже некуда, min так и останется нулем в любом случае for(i=0;i<n;i++) if(min<abs(A)); // ошибка: не должно быть ";", иначе на этом оператор if и закончится {min=abs(A); imin=i+1;} // это найдет максимальный элемент, а не минимальный; запоминаем почему-то индекс следующего элемента, это, видимо, для вывода его порядкового номера, я бы там и выводил imin+1, а то путает - пойди потом вспомни, что для элемента min в imin хранится индекс следующего элемента printf("\n\n min modul elementa A\[%d\]=%d\n",imin,min); fprintf(rez,"\n\n min modul elementa A\[%d\]=%d\n",imin,min); for(i=0;i<n;i++) if(A==0) {j=i;break;} // в j должен быть индекс первого нулевого элемента; а если нулевого элемента в массиве не встретилось? тогда в j будет неизвестно что, а ведь мы его потом используем; я бы присвоил j перед циклом значение n, тогда, если нулевого элемента в массиве нет, дальнейший цикл не выполнится ни разу int sum=0; for(i=j+1;i<n;i++)sum=sum+abs(A); printf("\n sum mod ele-ta=%d\n",sum); fprintf(rez,"\n sum mod ele-ta=%d\n",sum); int*B=new int[n]; int nach=0,kon=n-1; for(i=0;i<n;i++) if(i%2) {B[kon]=A;kon--;} // это проще было записать как if(i%2) B[kon--]=A; {B[nach]=A;nach++;} // else перед открывающей фигурной скобкой забыто; также можно было записать вместо двух операторов один B[nach++]=A; {printf("%4d",B); //оператор цикла перед открывающей фигурной скобкой забыт fprintf(rez,"%4d",B);} getch();} Если не будет получаться, могу просто откорректировать программу, это быстрее, чем отмечать ошибки Интересно, где ты учишься? Начинать изучение программирования с С++ - примерно то же, что начинать обучение вождению с горной дороги. Это язык для профессионалов, если сравнивать с русским, то он ближе к стенографии. Изменено 20 декабря, 2008 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Глупышка Опубликовано 21 декабря, 2008 Жалоба Поделиться Опубликовано 21 декабря, 2008 инетересно где ты учишся я учусь в институте а там есть предмет такой как програмирование аот туда то мне и надо Ссылка на комментарий Поделиться на другие сайты Поделиться
Pathfinder Опубликовано 21 декабря, 2008 Жалоба Поделиться Опубликовано 21 декабря, 2008 Здравствуйте, ;) , помогите, пожалуйста! нужно написать две программки в среде Visual C++, у меня экзамен в январе, а ещё 7 программ нужно написать, чтобы быть допущенным :) 1. Создать класс координат (double). Определить унарный оператор ++ как дружественную функцию.Определить бинарный оператор +, как функцию-член. Сложить координаты с друг другом и с числом. Присвоить координаты(=). 2. Создать класс типа очередь, которая хранит вещественные числа. Перегрузить оператор ++ как функцию член и -- как дружественную функцию. ++ добавляет элемент в очередь, -- вытаскивает элемент из очереди. Перегрузить бинарный оператор + как функцию-член и * как дружественную функцию. + складывает элемент в очереди с числом, * умножает элемент в очереди на число Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 22 декабря, 2008 Жалоба Поделиться Опубликовано 22 декабря, 2008 xekcem: #include "windows.h"#include "iostream.h"main(){STARTUPINFO cif;ZeroMemory(&cif,sizeof(STARTUPINFO)); PROCESS_INFORMATION pi;if(CreateProcess("c:\\windows\\system32\\calc.exe",0,0,0,FALSE,0,0,0,&cif,π)==TRUE) {Sleep(3000); TerminateProcess(pi.hProcess,NO_ERROR);}} Запускает калькулятор и через 3 с закрывает его. Проверял на DEv-C++. Я так понял, что если два процессы запущены, то обмениваться данными между творцом и творением можно только через функцию int main(...) творения (и то только после завершения его работы)??? Или все же есть возможность обмениваться данными через произвольную функцию творения? Заранее благодарен за ответ :blush2: Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти