Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 44 из 87<  1 ... 41  42  43  44  45  46  47 ... 87  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Jelfer что тебе мешает под виндой компилить консольным компилером?

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)



Партнер
 

Member
Статус: Не в сети
Регистрация: 19.03.2006
можно, но стоит вспомнить про удобство виндовой консили, я как то пробовал скомпилировать прогу компилятором от ms visual c++ 6.0, пришлось кучу опций добавить для компилера и для линковщика, кстати, идея, можно написать и заюзать для этого бат файлик, о, полезно бывает что нить сказать, сам додумываюсь...
а вот, ещё, можно ли как нить прикрутить компилятор с линковщиком от ms v cpp 6 к борлэнду?
Добавлено спустя 58 секунды
фу, что то совсем туплю, зачем мне такие мучения... подскажите мне лучше какой нибудь редактор, хороший, с подсветкой синтаксиса, я думаю даже лучше неконсольный, а для сбора батничег буду юзать....
Добавлено спустя 46 секунд
ребят, извините, совсем крыша едет, гугл мне в руки...
Добавлено спустя 9 минут, 34 секунды
если я фигню написал, лучше удалите мою мессагу...


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Jelfer Компилер от борланда умеет автоматом линковать, для простых случаев батник состоит из одной строчки «bcc32 x.cpp». Чуть более сложный случай — что-нибудь типа
Код:
brcc32 x.rc
bcc32 -W -c x1cpp
bcc32 -W -c x2.cpp
ilink32 @x.rsp
, где x.rsp это
Код:
-Tpe -aa -Gn+
-LP:\Borland\CBuilder6\lib;"P:\Borland\CBuilder6\lib\psdk";"P:\Borland\CBuilder6\lib\release";+
C0W32.OBJ+
x,x,,CW32.LIB vcl rtl dxutil ddraw dsound import32,,x


А вот когда надо прикручивать майкрософтовский компилер, все хуже:

Код:
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


brcc32 a.rc

cl /nologo /MLd /W3 /Gm /Zi /c %CL_CPPS%
link %LINKER_LIBS% %LINKER_FLAGS% %LINKER_OBJS%


Раскопал свои древние батники…

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 19.06.2005
Откуда: Ленинград
всем доброго времени суток!
Извиняюсь за вопрос, но никто не сталкивался с реализацией на C задачи о "золотой горе"?
http://ru.wikibooks.org/wiki/%D0%A0%D0% ... 1%88%D0%BE

_________________
Хакер - не преступник. Взлом - для искусства. Смысл - в свободе.
Woot Team CEO


 

Member
Статус: Не в сети
Регистрация: 30.01.2006
Откуда: Минск
И что именно не ясно? Стандартная вообщем-то задача. Реализация проста-делай двумерный массив и пускай цикл снизу. Последняя строка совпадает с исходной, а дальше подымайся вверх и выбирай максимум из двух. a[0][0] твой ответ


 

Member
Статус: Не в сети
Регистрация: 12.07.2006
Откуда: Kiev
Помогите с перегрузкой операторов.

В общем, нужно реализовать перегрузку оператора индексирования массива "[]" для класса, с возможностью обращения к членам класса. Т.е. что бы можно выполнить следующие:
Код:
SOME_CLASS obj;
SOME_CLASS * pobj;
.......
obj[5].some_member;
pobj[67]->some_member;

Осн. проблема в том, что бы приспособить оператор и для корректной работы с объектом и с указателям на объект.

В частности, есть структура
Код:
typedef struct _SYS_PROC_INFO
{
   ULONG            NextEntryDelta;
   ULONG            ThreadCount;
   ULONG            Reserved1[6];
   LARGE_INTEGER      CreateTime;
   LARGE_INTEGER      UserTime;
   LARGE_INTEGER      KernelTime;
   UNICODE_STRING      usNameProc;
   KPRIORITY         BasePriority;
   ULONG            IdProc;
   ULONG            IdProcInheritedFrom;
   ULONG            HandleCount;
   ULONG            Reserved2[2];
   VM_COUNTERS         VmCounters;
#if _WIN32_WINNT >= 0x500
    IO_COUNTERS         IoCounters;
#endif
   SYS_THREAD_INFO   Threads[1];
} SYS_PROC_INFO, * PSYS_PROC_INFO;

вызов ф-ции ZwQuerySystemInformation оставляет в памяти массив структуры SYS_PROC_INFO по адресу pBuff.
Код:
ZwQuerySystemInformation(
    SysProcAndThreadInfo,
    pBuff,
    cbBuff,
    NULL);


Индексироваться, по которому, можно при помощи члена NextEntryDelta структуры SYS_PROC_INFO (NextEntryDelta - сдвиг в памяти).
Для более удобной работы (индексировки) с этим массивом создаю класс, ключивыми членами которого есть: указатель на массив SYS_PROC_INFO и ф-ция индексировки (переводит указатель на произвольный элемент массива). Делаем перегрузку оператора "[]"
Код:
class EXTENDED_RANGE_SYS_PROC_INFO
{
    public:
    ........
    VOID SetISPI(ULONG);
    EXTENDED_RANGE_SYS_PROC_INFO * operator [] (ULONG);
   
    private:
    ..........
    PSYS_PROC_INFO pspiMain;
    .........
};
.......
EXTENDED_RANGE_SYS_PROC_INFO * EXTENDED_RANGE_SYS_PROC_INFO::operator [] (ULONG ispi)
{
    SetISPI(ispi);
    return this;
}


К сожелению, вариант с возвратом this неприемлем т.к. с объектом, данного класса, приходится работать так:
Код:
obj[7]->some_member;

а с указателем и того хуже:
Код:
(*pobj)[5]->some_member;

потому как при использовании его неразыменованым компилятор выдаёт ошибку...

Короче, проблема описана в первых нескольких строках, а это всё как пример.

_________________
документация документации рознь


 

блин тут у вас такие проблемы мне даже неудобно спрашивать но рискну... есть масив :
#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
Статус: Не в сети
Регистрация: 23.12.2004
Откуда: Киев
Qwedor писал(а):
нужно чтоб менял на минимальное неравное 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_LIST_ALL
{
   DWORD Reserved; // резерв
   unsigned long Reserved2; // резерв
   DATA_LIST DataList; // структура DATA_LIST
} DATA_LIST_ALL, *PDATA_LIST_ALL;

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;

// определяем функцию поиска устройств в реестре
void GetDevicesConfig_NT ( );

// массив структур DEVICEPARAMSNT для описания устройств
DEVICEPARAMSNT devices_NT[MAX_DEVICES];

// реализация функции
void GetDevicesConfig_NT ( )
{
   // объявляем переменные
   HKEY phKey = NULL, phKey2 = NULL, phKey3 = NULL, phKey4 = NULL,
                      phKey5 = NULL; // дескрипторы разделов реестра
   // счетчики разделов и размеры значений параметров в реестре
   DWORD dwKey = 0, dwKey2 = 0, dwKey3 = 0, dwSize = 0, cbName = 256;
   // счетчики данных
   unsigned int uPort_index = 0, uIRQ_index = 0, uMemory_index = 0,
                 uDMA_index = 0, uBus_index = 0;
   // счетчик найденных устройств
   unsigned int uIndex = 0;
   // различные пути в реестре
   char section_name[513];
   char new_path[MAX_PATH];
   char new_path2[MAX_PATH];
   char new_path3[MAX_PATH];
   char new_path4[MAX_PATH];
   char new_path5[MAX_PATH];
   // буфер для данных
   char hard_key[150];

   // структура для получения данных об устройстве
   DATA cfg;

   // обнуляем структуру перед использованием
   for ( i = 0; i < 200; i++ )
       ZeroMemory ( &devicesNT[i], sizeof ( DEVICEPARAMSNT ) );

   // открываем раздел реестра для перечисления подразделов
   if ( !RegOpenKeyEx ( HKEY_LOCAL_MACHINE, HKLM_ENUM_NT, 0, KEY_READ,
                        &phKey ) == ERROR_SUCCESS )
         return;
   while ( 1 )
   {
    // определяем размер значения
    cbName = 256;
    // перечисляем подразделы в открытом разделе
    if ( RegEnumKeyEx ( phKey, dwKey, section_name, &cbName, NULL, NULL,
                        NULL, NULL ) == ERROR_NO_MORE_ITEMS )
       break; // выходим из цикла, если все подразделы получены
     // собираем путь для доступа к вложенному разделу
     strcpy ( new_path, "" );
     strcpy ( new_path, HKLM_ENUM_NT );
     strcat ( new_path, "\\" );
     strcat ( new_path, section_name );
     // открываем вложенный раздел
     if ( RegOpenKeyEx ( HKEY_LOCAL_MACHINE, new_path, 0, KEY_READ,
                         &phKey2 ) == ERROR_SUCCESS )
     {
       // сбрасываем счетчик
       dwKey2 = 0;
       while ( 1 )
       {
         // определяем размер значения
         cbName = 256;
         // перечисляем подразделы в открытом разделе
         if ( RegEnumKeyEx ( phKey2, dwKey2, new_path2, &cbName, NULL,
                             NULL, NULL, NULL ) == ERROR_NO_MORE_ITEMS )
              break; // выходим из цикла, если все подразделы получены
         // собираем путь для доступа к вложенному разделу
         strcpy ( new_path3, "" );
         strcpy ( new_path3, new_path );
         strcat ( new_path3, "\\" );
         strcat ( new_path3, new_path2 );
         // открываем вложенный раздел
         if ( RegOpenKeyEx ( HKEY_LOCAL_MACHINE, new_path3, 0, KEY_READ,
                             &phKey3 ) == ERROR_SUCCESS )
         {
           // сбрасываем счетчик
           dwKey3 = 0;
           while ( 1 )
           {
             // определяем размер значения
             cbName = 256;
             if ( RegEnumKeyEx ( phKey3, dwKey3, new_path4, &cbName,
                        NULL, NULL, NULL, NULL ) == ERROR_NO_MORE_ITEMS )
                  break; // выходим из цикла
             // собираем путь для доступа к вложенному разделу
             strcpy ( new_path5, "" );
             strcpy ( new_path5, new_path3 );
             strcat ( new_path5, "\\" );
             strcat ( new_path5, new_path4 );
             // открываем вложенный раздел
             if(RegOpenKeyEx ( HKEY_LOCAL_MACHINE, new_path5, 0,
                               KEY_READ, &phKey4 ) == ERROR_SUCCESS )
             {
               dwSize = 150; // размер данных
               // получаем описание устройства
               RegQueryValueEx ( phKey4, "DeviceDesc", NULL, NULL,
                               ( LPBYTE ) hard_key, &dwSize );
               // сохраняем в основную структуру
               strcpy ( devicesNT[uIndex].DeviceDesc, hard_key );
               strcpy ( hard_key, "" );
               // получаем имя класса устройства
               dwSize = 50;
               RegQueryValueEx ( phKey4, "Class", NULL, NULL,
                               ( LPBYTE ) hard_key, &dwSize );
               strcpy ( devicesNT[uIndex].Class, hard_key );
               strcpy ( hard_key, "" );
               // получаем дополнительное описание устройства
               dwSize = 80;
               RegQueryValueEx ( phKey4, "FriendlyName", NULL, NULL,
                               ( LPBYTE ) hard_key, &dwSize );
               strcpy ( devicesNT[uIndex].FriendlyName , hard_key );
               strcpy ( hard_key, "" );
               // собираем путь для доступа
               // основным параметрам устройства
               strcat ( new_path5, "\\Control" ); // Windows 2000/XP/SR3
               // strcat ( new_path5, "\\LogConf" ); // Windows NT
               // открываем раздел реестра
               if ( RegOpenKeyEx ( HKEY_LOCAL_MACHINE, new_path5, 0,
                                   KEY_READ, &phKey5 ) == ERROR_SUCCESS )
               {
                 dwSize = sizeof ( DATA ); // определяем размер данных
                 // обнуляем структуру данных
                 ZeroMemory ( &cfg, sizeof ( DATA ) );
                 // получаем данные из реестра
                 RegQueryValueEx ( phKey5, "AllocConfig", NULL, NULL,
                                 ( LPBYTE ) &cfg, &dwSize );
                 // определяем количество описателей устройства
                 for ( int i = 0; i < cfg.Count; i++ )
                 {
                   for ( int j = 0; j < cfg.All_List[i].DataList.Count;
                         j++ )
                   {
                     // определяем тип данных
                     switch ( cfg.All_List[i].DataList.Id[j].Type )
                     {
                     case Port_Type: // порт ввода-вывода
                      // получаем базовый порт
                      devicesNT[uIndex].Base_Port[uPort_index] =
                         cfg.All_List[i].DataList.Id[j].u.Port.Start;
                      // получаем завершающий порт
                      devicesNT[uIndex].End_Port[uPort_index].LowPart =
                     cfg.All_List[i].DataList.Id[j].u.Port.Start.LowPart
                     + cfg.All_List[i].DataList.Id[j].u.Port.Length - 1;
                     // получаем тип порта ввода-вывода
                     if ( cfg.All_List[i].DataList.Id[j].Flags &
                          PORT_MEMORY )
                       devicesNT[uIndex].TypeBasePort[uPort_index] =
                          PORT_MEMORY;
                     else if ( cfg.All_List[i].DataList.Id[j].Flags &
                          PORT_IO )
                       devicesNT[uIndex].TypeBasePort[uPort_index] =
                          PORT_IO;
                     // увеличиваем счетчик
                     uPort_index++;
                      break;
                     case IRQ_Type: // номер прерывания
                       devicesNT[uIndex].IRQ_Number[uIRQ_index] =
                           cfg.All_List[i].DataList.Id[j].u.IRQ.Number;
                       uIRQ_index++;
                        break;
                     case Memory_Type: // адреса в памяти
                       // получаем базовый адрес
                       devicesNT[uIndex].Base_Memory[uMemory_index] =
                          cfg.All_List[i].DataList.Id[j].u.Memory.Start;
                       // получаем завершающий адрес
                      devicesNT[uIndex].End_Memory[uMemory_index].LowPart
                  = cfg.All_List[i].DataList.Id[j].u.Memory.Start.LowPart
                  + cfg.All_List[i].DataList.Id[j].u.Memory.Length - 1;
                       // определяем тип памяти
                       if ( cfg.All_List[i].DataList.Id[j].Flags &
                            MEMORY_READ_WRITE )
                         devicesNT[uIndex].TypeBaseMemory[uPort_index] =
                            MEMORY_READ_WRITE;
                       else if ( cfg.All_List[i].DataList.Id[j].Flags &
                            MEMORY_READ_ONLY )
                         devicesNT[uIndex].TypeBaseMemory[uPort_index] =
                            MEMORY_READ_ONLY;
                         devicesNT[uIndex].TypeBaseMemory[uPort_index] =
                            MEMORY_READ_ONLY;
                         devicesNT[uIndex].TypeBaseMemory[uPort_index] =
                            MEMORY_WRITE_ONLY;
                        uMemory_index++;
                        break;
                       case DMA_Type: // номер канала DMA
                        // получаем номер канала
                        devicesNT[uIndex].DMA_Channel[uDMA_index] =
                            cfg.All_List[i].DataList.Id[j].u.DMA.Channel;
                        // определяем тип канала
                        if ( cfg.All_List[i].DataList.Id[j].Flags &
                             DMA_8 )
                         devicesNT[uIndex].TypeDMA[uPort_index] =  DMA_8;
                        else if ( cfg.All_List[i].DataList.Id[j].Flags &
                             DMA_16 )
                        devicesNT[uIndex].TypeDMA[uPort_index] =  DMA_16;
                        else if ( cfg.All_List[i].DataList.Id[j].Flags &
                             DMA_32 )
                        devicesNT[uIndex].TypeDMA[uPort_index] =  DMA_32;
                        uDMA_index++;
                        break;
                       case BusNumber_Type: // тип шины
                        devicesNT[uIndex].BusNumber[uBus_index] =
                        cfg.All_List[i].DataList.Id[j].u.BusNumber.Start;
                        break;
                     }
                   }
                 }
                 // закрываем раздел и обнуляем счетчики
                 if ( phKey5 ) RegCloseKey ( phKey5 );
                 uPort_index = 0;
                 uIRQ_index = 0;
                 uMemory_index = 0;
                 uDMA_index = 0;
                 uBus_index = 0;
               }
               // закрываем вложенный раздел
               if ( phKey4 ) RegCloseKey ( phKey4 );
               // увеличиваем счетчик найденных устройств
               uIndex++;
             }
             // увеличиваем счетчик для поиска следующего подраздела
             dwKey3++;
           }
           // закрываем вложенный раздел
           if ( phKey3 ) RegCloseKey ( phKey3 );
         }
         // увеличиваем счетчик для поиска следующего подраздела
         dwKey2++;
       }
       // закрываем вложенный раздел
       if ( phKey2 ) RegCloseKey ( phKey2 );
     }
    // увеличиваем счетчик для получения следующего подраздела
    dwKey++;
   }
   // закрываем корневой раздел и выходим из функции
   if ( phKey ) RegCloseKey ( phKey );
}

_________________
В этом мире меня подводят доброта и порядочность...


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
?Am(d)ber? Убери #include "stdafx.h", добавь #include "windows.h" . Если не будет собираться, то уже смотри по функциям чего там не хватает ещё(msdn в помощь).


 

Member
Статус: Не в сети
Регистрация: 12.07.2005
Откуда: Млечный путь
mein
после замены на другой хидер, исправил дополнительно синтаксическую ошибку, а потом:
Build
[C++ Warning] Unit1.cpp(244): W8012 Comparing signed and unsigned values
[C++ Warning] Unit1.cpp(246): W8012 Comparing signed and unsigned values
[Linker Error] Unresolved external '__InitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
[Linker Error] Unresolved external '__ExitVCL' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\CP32MTI.LIB|crtlvcl
[Linker Error] Unresolved external '_main' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\C0X32.OBJ

А вообще как я понял, для подробной информации о системе мне нужно использовать WMI. Из билдера для этого обязательно нужна WMI SDK?

_________________
В этом мире меня подводят доброта и порядочность...


 

ModeZt
ModeZt писал(а):
#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;}



немного не так.. оно должно проанализировать первый (изначальный) масив и вычислить найменьшее позитивное число ... но не 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
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Alexsandr

(int) 1 / (int) 3 = (int) 0;

Тебе следует писать

pow(x, 1.0/3.0)

чтобы получился float.

Только с отрицательными числами в нецелых степенях pow все равно работать не будет, придется добавить логику.

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

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


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Alexsandr Это с косинусом уже, я надеюсь?

Alexsandr писал(а):
обойти никак

Говорю же, логику добавь:


Код:
if (k*cos(x) >= 0) y = pow(k*cos(x), 1./3.);
else               y = -(pow(fabs(k*cos(x)), 1./3.));

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


 

Member
Статус: Не в сети
Регистрация: 02.02.2004
Откуда: Украина.
[quote="Anoss"]
Код:
if (k*cos(x) >= 0) y = pow(k*cos(x), 1./3.);
else               y = -(pow(fabs(k*cos(x)), 1./3.));

С косинусом, в принципе логику и решил уже добавить, самый простой вариант. Не ожидал, что мелкософт с калькулятором напортачит, а я ему доверял :(


 

Member
Статус: Не в сети
Регистрация: 01.04.2005
Откуда: Москва-Лубянка
Alexsandr писал(а):
Не ожидал, что мелкософт <…> напортачит, а я ему доверял Sad

хаха :lol:

_________________
AnossovPavel в проекте F@H (TSC!Russia)
退屈な祖父 ¤ παππούς ¤ («клан дедов»)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1730 • Страница 44 из 87<  1 ... 41  42  43  44  45  46  47 ... 87  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


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

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan