можно, но стоит вспомнить про удобство виндовой консили, я как то пробовал скомпилировать прогу компилятором от ms visual c++ 6.0, пришлось кучу опций добавить для компилера и для линковщика, кстати, идея, можно написать и заюзать для этого бат файлик, о, полезно бывает что нить сказать, сам додумываюсь...
а вот, ещё, можно ли как нить прикрутить компилятор с линковщиком от ms v cpp 6 к борлэнду?
Добавлено спустя 58 секунды фу, что то совсем туплю, зачем мне такие мучения... подскажите мне лучше какой нибудь редактор, хороший, с подсветкой синтаксиса, я думаю даже лучше неконсольный, а для сбора батничег буду юзать....
Добавлено спустя 46 секунд ребят, извините, совсем крыша едет, гугл мне в руки...
Добавлено спустя 9 минут, 34 секунды если я фигню написал, лучше удалите мою мессагу...
Member
Статус: Не в сети Регистрация: 01.04.2005 Откуда: Москва-Лубянка
Jelfer Компилер от борланда умеет автоматом линковать, для простых случаев батник состоит из одной строчки «bcc32 x.cpp». Чуть более сложный случай — что-нибудь типа
А вот когда надо прикручивать майкрософтовский компилер, все хуже:
Код:
set VSCommonDir=P:\MICROS~4\Common set MSDevDir=P:\MICROS~4\Common\msdev98 set MSVCDir=P:\MICROS~4\VC98 set DXSDKDir=P:\Direct~1
set PATH=%MSDevDir%\BIN;%MSVCDir%\BIN;%VSCommonDir%\TOOLS\%VcOsDir%;%VSCommonDir%\TOOLS;%PATH% set INCLUDE=%DXSDKDir%\INCLUDE;%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE% set LIB=%DXSDKDir%\LIB;%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB% set VcOsDir= set VSCommonDir=
set CL_CPPS=a.cpp
set LINKER_LIBS=ddraw.lib dinput8.lib winmm.lib comdlg32.lib advapi32.lib kernel32.lib shell32.lib user32.lib ole32.lib gdi32.lib set LINKER_OBJS=a.obj a.res set LINKER_FLAGS=/nologo /subsystem:windows /incremental:yes /debug /machine:I386
Member
Статус: Не в сети Регистрация: 30.01.2006 Откуда: Минск
И что именно не ясно? Стандартная вообщем-то задача. Реализация проста-делай двумерный массив и пускай цикл снизу. Последняя строка совпадает с исходной, а дальше подымайся вверх и выбирай максимум из двух. a[0][0] твой ответ
Member
Статус: Не в сети Регистрация: 12.07.2006 Откуда: Kiev
Помогите с перегрузкой операторов.
В общем, нужно реализовать перегрузку оператора индексирования массива "[]" для класса, с возможностью обращения к членам класса. Т.е. что бы можно выполнить следующие:
Индексироваться, по которому, можно при помощи члена NextEntryDelta структуры SYS_PROC_INFO (NextEntryDelta - сдвиг в памяти). Для более удобной работы (индексировки) с этим массивом создаю класс, ключивыми членами которого есть: указатель на массив SYS_PROC_INFO и ф-ция индексировки (переводит указатель на произвольный элемент массива). Делаем перегрузку оператора "[]"
блин тут у вас такие проблемы мне даже неудобно спрашивать но рискну... есть масив :
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void) {
int Ar[50];
int i;
int nn;
randomize();
for (i=0; i<50; Ar[i++]=random(201)-100 );
printf("Начальный массив:\n");
for (i=0; i<50; printf("%3d\t",Ar[i++]))
putchar('\t');
for (nn=i=0; i<50; i++) {
if (Ar[i]<0) Ar[i]=1;
}
printf("Массив-результат:\n");
for (i=0; i<50; printf("%3d\t",Ar[i++]))
putchar('\t');
return 0;
}
в данном случае он меняет все значения с отрицательным числом на 1 а мне нужно чтоб менял на минимальное неравное 0 в.... ? блин перепробовал все.. что-то
мне не судилось осилить ... плз.. тут и минуты не потребуется вам..
Member
Статус: Не в сети Регистрация: 28.11.2003 Откуда: москва
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(void) {
int Ar[50];
int i;
int nn;
randomize();
for (i=0; i<50; Ar[i++]=random(201)-100 );
printf("Начальный массив:\n");
for (i=0; i<50; printf("%3d\t",Ar[i++]))
putchar('\t');
int min = Ar[0]; for(i=1; i<50; i++) { if(min==0) min = Ar[i]; else min = ( Ar[i]<min && Ar[i]!=0 ) ? Ar[i] : min; } if( min==0 ) printf("Ошибка: все элементы в массиве равны 0\n");
for (i=0; i<50; i++) {
if (Ar[i]<0) Ar[i]=min;
}
printf("Массив-результат:\n");
for (i=0; i<50; printf("%3d\t",Ar[i++]))
putchar('\t');
return 0;
}
Member
Статус: Не в сети Регистрация: 12.07.2005 Откуда: Млечный путь
помогите откомпилить файл, не могу разобраться с stdafx.h. Код пример из книги
Код:
// Определение основных параметров устройств в Windows NT/2000/XP/SR3
#include "stdafx.h"
// путь к разделу в реестре, описывающему установленное оборудование #define HKLM_ENUM_NT "SYSTEM\\CurrentControlSet\\Enum" #define MAX_DEVICES 200 // возможное количество устройств в системе
// дополнительные флаги #define PORT_MEMORY 0x0000 // адрес порта в памяти #define PORT_IO 0x0001 // адрес порта ввода-вывода #define MEMORY_READ_WRITE 0x0000 // память для записи и чтения #define MEMORY_READ_ONLY 0x0001 // память только для чтения #define MEMORY_WRITE_ONLY 0x0002 // память только для записи
// тип канала DMA #define DMA_8 0x0000 #define DMA_16 0x0001 #define DMA_32 0x0002
// типы данных enum DataTypesNT { Port_Type = 1, // адрес порта ввода-вывода IRQ_Type = 2, // номер прерывания Memory_Type = 3, // адрес в памяти DMA_Type = 4, // номер канала DMA BusNumber_Type = 6 // номер шины };
// определяем тип значения для хранения адресов typedef LARGE_INTEGER PHYSICAL_ADDRESS;
// определяем структуры для описания данных
#pragma pack ( 4 )
typedef struct _IDDATA { unsigned char Type; // тип возвращаемых данных unsigned char Share; // общий доступ к данным unsigned short Flags; // дополнительный флаг описания // общая область памяти union { struct // обработка портов ввода-вывода { PHYSICAL_ADDRESS Start; // базовый адрес unsigned long Length; // ширина порта } Port; struct // обработка номера прерывания { unsigned long Level; // уровень доступа unsigned long Number; // номер выделенного прерывания unsigned long Reserved; // резерв } IRQ; struct // обработка адресов в памяти { PHYSICAL_ADDRESS Start; // базовый адрес unsigned long Length; // ширина адресного пространства } Memory; struct { unsigned long Channel; // номер выделенного канала DMA unsigned long Port; // номер порта unsigned long Reserved; // резерв } DMA; struct // обработка номера шины { unsigned long Start; // базовый адрес шины unsigned long Length; // ширина адресного пространства unsigned long Reserved; // резерв } BusNumber; } u; } IDDATA, *PIDDATA;
#pragma pack ( )
typedef struct _DATA_LIST { unsigned short Version; // номер версии unsigned short Revision; // дополнительный номер версии unsigned long Count; // полное количество данных об устройстве IDDATA Id[16]; // массив структур для получения данных } DATA_LIST, *PDATA_LIST;
typedef struct _DATA { unsigned long Count; // количество найденных описателей устройства DATA_LIST_ALL All_List[2]; // массив структур DATA_LIST_ALL } DATA, *PDATA;
// основная структура описателя устройства typedef struct _DeviceParamNT { char DeviceDesc[100]; // текстовое описание устройства char FriendlyName[80]; // дополнительное описание устройства char Class[50]; // имя класса устройства PHYSICAL_ADDRESS Base_Memory[16]; // базовые адреса в памяти PHYSICAL_ADDRESS End_Memory[16]; // завершающие адреса в памяти unsigned short TypeBaseMemory[16]; // тип адреса в памяти PHYSICAL_ADDRESS Base_Port[16]; // базовый порт ввода-вывода PHYSICAL_ADDRESS End_Port[16]; // завершающий порт ввода-вывода unsigned short TypeBasePort[16]; // тип порта ввода-вывода BYTE DMA_Channel[8]; // номер выделенного канала DMA unsigned short TypeDMA[8]; // тип канала DMA BYTE IRQ_Number[16]; // номер выделенного прерывания unsigned int BusNumber[8]; // номер шины для некоторых типов устройств } DEVICEPARAMSNT, *PDEVICEPARAMSNT;
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
?Am(d)ber? Убери #include "stdafx.h", добавь #include "windows.h" . Если не будет собираться, то уже смотри по функциям чего там не хватает ещё(msdn в помощь).
int min = Ar[0];for(i=1; i<50; i++) {if(min==0) min = Ar[i];else min = ( Ar[i]<min && Ar[i]!=0 ) ? Ar[i] : min;}if( min==0 ) printf("Ошибка: все элементы в массиве равны 0\n");
немного не так.. оно должно проанализировать первый (изначальный) масив и вычислить найменьшее позитивное число ... но не 0.. потом заменить все негативные на это найменьшее позитивное... зарание спасибо!
Member
Статус: Не в сети Регистрация: 28.11.2003 Откуда: москва
Qwedor писал(а):
немного не так.. оно должно проанализировать первый (изначальный) масив и вычислить найменьшее позитивное число ... но не 0..
ничего не знаю. у тебя в постановке написано "мне нужно чтоб менял на минимальное неравное 0" я и посчитал наименьшее отличное от нуля. ))))
посмотри на тот кусочек который у меня находит это число. попробуй всётаки понять что я там написал. там надо всего 2 символа поменять.
Member
Статус: Не в сети Регистрация: 02.02.2004 Откуда: Украина.
Может в теме есть что-то, но инет у меня только урывками сейчас, сеть барахлит.
Подскажите что можно придумать, задача взять кубический корень, вроде бы всё правильно, но результат не тот, переменная у всё время равна 1 +сообщение о ошибке . К примеру эксель это прогладывает не задумываясь.
#include<stdio.h>
#include<math.h>
void main ( )
{
FILE *p2;
float x,y,k=0.25,tmp,tmp2,e=2.781;
p2=fopen ("rez43.dan", "w");
x=-5;
do
{
// y=pow(k*cos(x),1/3); (это нужно вычислить)
y=pow(x,1/3); // это для примера, как только возведение в степень 1/3 так результат =1+сообщение о ошибке . К примеру эксель это прогладывает не задумываясь.
fprintf(p2,"rezultat x=%f, y=%f\n",x,y);
x=x+1;
}
while(x<=5);
fclose (p2);
}
В чём подвох, может библиотеку каку-ю заменить нужно?
Member
Статус: Не в сети Регистрация: 02.02.2004 Откуда: Украина.
И обойти никак в отридцательных числах нецелых степенях? Это даже бейсику под силу Альтернатив никаких как я понял?
Добавлено спустя 4 часа, 59 минут, 47 секунд Интересные результаты получились. А эксель жрёт и не давится. Калькулятор виндовой тоже давится, похоже на си написан -8 в 1/3 не возведёт rezultat x=-5.000000, y=0.413918
rezultat x=-4.000000, y=-NAN
rezultat x=-3.000000, y=-NAN
rezultat x=-2.000000, y=-NAN
rezultat x=-1.000000, y=0.513089
rezultat x=0.000000, y=0.629961
rezultat x=1.000000, y=0.513089
rezultat x=2.000000, y=-NAN
rezultat x=3.000000, y=-NAN
rezultat x=4.000000, y=-NAN
rezultat x=5.000000, y=0.413918
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения