Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Открыть новую тему     Написать ответ в эту тему

Crazy_Shrike



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вопросы по программированию на C/С++

 
  • Справочники, книги
  • Выбор IDE (среды программирования)
     
    Постарайтесь дать как можно больше информации о возникшей проблеме - это в конце концов в ваших же интересах чтобы вам помогли.

    Решения конкретных задач собираются и обсуждаются в теме Задачи по C/С++ .

    Прежде чем просить помощи в задании...
    Если позарез надо и вы даже готовы заплатить

    Как правильно задавать вопросы, если вы хотите получить ответ.

    Полезные ссылки:
    C++(eng)

  • Всего записей: 241 | Зарегистр. 25-03-2004 | Отправлено: 13:37 06-05-2004 | Исправлено: AZJIO, 19:45 12-05-2014
    gazirovka9sps112

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Дан массив книг s_books books[const_size], нужно в новый динамический массив добавить еще несколько книг используя функцию void add, и в дальнейшем использовать динамический массив для вывода всех книг, и поиска по книгам.  
    функция поиска и вывода всех книг написана. Немогу создать динамический массив.
     
     
    #include <iostream>
    #include <windows.h>
    #include <conio.h>
    using std::cout;
    using std::cin;
    using std::endl;
    struct s_books  
    {
        int data;
        char book_name[40];
        char avtor[30];
        char ganre[30];
        int price;
        int reiting;
        int ID;
    }books;
    void add (s_books *&book, int size)
    {
        
        
    }
     
    void All_kat(s_books *book, int size)
    {
        for(int i=0;i<size;i++)
        {
            cout<<book[i].data<<" "<<book[i].book_name<<" "<<book[i].avtor<<" "<<book[i].ganre<<" "<<book[i].price<<" "<<book[i].reiting<<" "<<book[i].ID<<endl;
        }
    }
    void main()
    {
        SetConsoleOutputCP(1251);
        SetConsoleCP(1251);
        const int const_size=5;
        s_books books[const_size]={1971,"Гидравлика","Башта Т.М.","Гидравлика",45,5,1,
                                    1983,"Черчение","Боголюбов С.К.","Черчение",50,2,2,
                                    1987,"Машиностроительное черчение","Мерзон Э.Д.","Черчение",45,1,3,
                                    1975,"Объемные насосы","Васильцов Э.А.","Гидравлика",45,3,4,
                                    1996,"Хранители Кодекса Люцифера","Дюбель Р.П.","Детектив",70,4,5,
                                    };
                
        while(1)
        {
        cout<<"\n------------------------------------"<<endl;
        cout<<"\n1-Добавить\t2-Все категори\t0-Выход"<<endl;
            cout<<"\nВыберите действие из команд главного меню ";
            int key;
            cin>>key;
            if(key>2){break;}
            if(key==1)
            {
                cout<<"\nВведите данные книги"<<endl;
                add(book,size);
            }
            if(key==2)
            {
                cout<<"\nВсе книги"<<endl;
                All_kat(book, size);
            }
            if(key==0){break;break;}
        }
    }

    Всего записей: 8 | Зарегистр. 13-08-2009 | Отправлено: 12:12 06-12-2009
    T1000m

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Поделитесь, пожалуйста, информацией по теме "Приведение типа указателя базового класса к указателю производного класса и наборот." или ссылкой, где можно посмотреть эту информацию, лучше с примерами.

    Всего записей: 8 | Зарегистр. 15-12-2009 | Отправлено: 00:45 15-12-2009
    derelict



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    T1000m
    Посмотрите например здесь: Указатели на объекты

    Всего записей: 232 | Зарегистр. 11-06-2006 | Отправлено: 01:03 15-12-2009
    Tenzor13

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Все Добрый День!
     
    Вопрос по конструктору:
     
    Если я создаю обычный двумерный массив то при создании я могу сразу его инициализировать например так:
     
    int mass[4][4]={
            {0, 1, 1, 1},
            {1, 0, 0, 0},
            {1, 0, 0, 1},
            {1, 0, 1, 0}
                     }
     
    Вопрос как сделать аналогичную инициализацию при использовании
     
    typedef vector< vector<int> > T;
     
    T mass; // как здесь инициализировать?  
     
     
     
    Заранее счпасибо!

    Всего записей: 16 | Зарегистр. 27-08-2007 | Отправлено: 20:27 16-12-2009
    derelict



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tenzor13
    Самый простой вариант - это поэлементно.

    Всего записей: 232 | Зарегистр. 11-06-2006 | Отправлено: 20:52 16-12-2009
    Tenzor13

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    derelict - спасибо за ответ!
    сейчас я решаю это просто считыванием из файла.
    Но мне действительно интересно - неужели нет прямого способа?  

    Всего записей: 16 | Зарегистр. 27-08-2007 | Отправлено: 20:59 16-12-2009
    derelict



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Tenzor13
    В конструктор вектора можно передать для инициализации:
     - другой вектор
     - массив
     - количество элементов и значение, которое будет установлено для этих элементов
     
    В C++0x можно будет делать так:

    Код:
    vector<int> v = { 1, 2, 3 };

    Всего записей: 232 | Зарегистр. 11-06-2006 | Отправлено: 21:08 16-12-2009
    BabylonKinki

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем привет.у меня было задание написать прогу,на класс CFontDialog из mfc.и привести по 4-5 примера использования методов данного класса.вообщем,все вроде бы нормально,но никак не получается вывод на экран названия набора символов ,выбираемого пользователем.посмотрел в msdn, там отдельно такого класса нет.есть только класс getcurrentfont,который включает как раз то,что мне нужно  - lfCharSet,который по сути должен устанавливать набор символов.Вообщем,проблема с реализацией данного метода.Метод GetCurrentFont позволяет сразу определить все характеристики выбранного щрифта, записав их в структуру LOGFONT:
    typedef struct tagLOGFONT {
      LONG  lfHeight;
      LONG  lfWidth;
      LONG  lfEscapement;
      LONG  lfOrientation;
      LONG  lfWeight;
      BYTE  lfItalic;
      BYTE  lfUnderline;
      BYTE  lfStrikeOut;
      BYTE  lfCharSet; - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      BYTE  lfOutPrecision;
      BYTE  lfClipPrecision;
      BYTE  lfQuality;
      BYTE  lfPitchAndFamily;
      TCHAR lfFaceName[LF_FACESIZE];
    }LOGFONT, *PLOGFONT;
    ////////////////////////////////////////////////////////////////////
    Реализация GetCurrentFont:  
    CFontDialog dlg;
    dlg.m_cf.Flags |= CF_USESTYLE;
    if (dlg.DoModal() == IDOK)
    {
       CString stylename = dlg.GetStyleName();
       TRACE(_T("Style name of the selected font = %s\n"), stylename);
     
    Текст программы:
     
    #include "stdafx.h"
    #include <conio.h>
    #include <cstring>
    #include <afxdlgs.h>
    #include <cstdlib>
    #include "lab1.h"
     
    using namespace std;
     
    int main()
        {  
     
        int nRetCode = 0;
     
        // инициализировать MFC, а также печать и сообщения об ошибках про сбое
        if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
        {
            // TODO. Измените код ошибки соответственно своим потребностям
            _tprintf(_T("Критическая ошибка: сбой при инициализации MFC\n"));
            nRetCode = 1;
        }
        else
        {
        char cfontName [100];  
        char csizeName [100];
    CFontDialog lolfont;
    int iResult=lolfont.DoModal();
    if (iResult == IDOK)
    {
         //get font name
         CString fontName = lolfont.GetFaceName();
         int fontNamesize = sizeof (fontName);
         char *pfontName = fontName.GetBuffer();
         strcpy_s(cfontName, pfontName);
         cout << "Name of this font is: " << "\"" << cfontName << "\""<< endl;
     
         //get size
         int sizeName = lolfont.GetSize();
         cout << "size of this font is: "<< "\"" << sizeName/10 << "\"" << endl;
     
         //get color
         COLORREF colorName = lolfont.GetColor ();
         cout << "color of this font is: " <<  "\"" << colorName << "\"" << endl;
     
         //get bold check
         int bold = lolfont.IsBold();
    if(bold==0)
         cout << "\"" << "bold uncheck" << "\"" << endl;
    else
     cout << "\"" << "bold check" << "\"" << endl;
     
         //get italic check
    int italic = lolfont.IsItalic();
    if(italic==0)
    cout << "\"" << "italic uncheck" << "\"" << endl << endl;
    else
     cout << "\"" << "italic check" << "\"" << endl << endl;
           }
     
    else
    cout << "Cancel is pushed" << endl;
        }
    _getch();
        return nRetCode;
    }
     
     

    Всего записей: 21 | Зарегистр. 25-11-2007 | Отправлено: 23:47 16-12-2009 | Исправлено: BabylonKinki, 23:50 16-12-2009
    CruelCrow

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Доброго времени суток всем форумчанам. Возникла необходимость в программе на C++ получить языконезависимое имя локальной группы "Все" в ОС Windows 2000/XP/Vista/7. То есть, нужна функция, которая бы получала значение SID, равное "S-1-1-0", а возвращала бы "Все", "Everyone" и т.п.
    В API есть стандартная функция LookupAccountSid, но чего-то не выходит у меня ничего с её применением. Пытался уже использовать чужой нагугленый код, но та же беда. Код, поидее, должен быть не длиннее 5-6 строк.
     

    Код:
     
    LPWSTR name = L"  ";
        
        BOOL success =
        LookupAccountSid(
      NULL,
      (PSID)L"S-1-1-0",
      name,
      (LPDWORD)20,
      NULL,
      NULL,
      (PSID_NAME_USE)SidTypeGroup
    );
     

    Всего записей: 109 | Зарегистр. 21-05-2006 | Отправлено: 00:46 17-12-2009
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CruelCrow
    несколько ошибок
    - почему name такой маленький?
    - откуда число 20?
    - SID - ето не строка, а структура (см ConvertSidToStringSid(),  ConvertStringSidToSid ()
     
    здесь пример как юзать
     
    http://msdn.microsoft.com/en-us/library/aa379554(VS.85).aspx

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 01:01 17-12-2009
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Суть такая: нужно многократно возводить вещественное число в степень (2n+1) (n будет меняться, тем самым увеличивая точность вычисления до заданной). В С++ оператора возведения нет. Можно-ли как-то еще возводить в степень, не используя цикл?
    Выражения для возведения, ряд Тейлора для lnx. Пробовал использовать n^m=exp(m*ln(n)) считает только если числа целые, с дробными выходят косяки в виде ответа: "-1.#IND0"
     
    выражение:
    2*( ((x-1)^2n+1)/((2n+1)*(x+1)^2n+1) )
     
    мой вариант кода:
    y1=exp((2*n+1)*log(x-1))/((2*n+1)*exp((2*n+1)*log(x+1)));
    y2=2*y1;

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:31 17-12-2009
    Abs62



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SIgor33
    А чем функция pow не устраивает?

    ----------
    0 программистов ругал сердитый шеф
    Потом уволил одного, и стало их FF

    Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 10:14 17-12-2009
    CruelCrow

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX
    Сделал вот так вот:

    Код:
     
    PSID EveryoneSID = PSID();
    ConvertStringSidToSid(L"S-1-1-0", &EveryoneSID);
    TCHAR name[256] = {0};  
    DWORD dwSize = 256;
     
        BOOL success =  
        LookupAccountSid(  
      NULL,  
      EveryoneSID,  
      name,  
      &dwSize,  
      NULL,  
      NULL,  
      (PSID_NAME_USE)SidTypeGroup  
    );  
     

     
    Только всё равно не работает, через раз - Access violation на 0x00000000

    Всего записей: 109 | Зарегистр. 21-05-2006 | Отправлено: 12:25 17-12-2009 | Исправлено: CruelCrow, 12:27 17-12-2009
    i0ngunn3r

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    У меня небольшая проблема с памятью, строковыми массивами и указателями.
    исходник: http://codepad.org/QbM9Ahag
    задача: через вторую функцию (reverse) с помощью указателей перевернуть строку.
    gdb выдает ошибку:

    Цитата:
    Program received signal EXC_BAD_ACCESS, Could not access memory.
    Reason: KERN_PROTECTION_FAILURE at address: 0x00001ea1
    0x93db6884 in strcpy ()

    как можно решить проблему? надо делать динамический масив?

    Всего записей: 4 | Зарегистр. 28-07-2006 | Отправлено: 14:02 17-12-2009
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    i0ngunn3r
    тебе задали самому такую функцию написать или просто надо перевернуть строку?
    во втором случае воспользуйся _strrev()

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 14:24 17-12-2009
    i0ngunn3r

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    akaGM
    самому надо, да. про strrev знаю, но это было бы слишком просто :\

    Всего записей: 4 | Зарегистр. 28-07-2006 | Отправлено: 14:30 17-12-2009
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    i0ngunn3r
     
    1) проблема с  
    strcpy(*str, buf);
    в том, что destination - *str, ето у нас вот ето -  
    char *a = "abcdefg";
     
    а так нельзя, поскольку а - ето указатеть на строку константу
    как вариант -  
        char *a1 = "abcdefg";
        char a[32];
        strcpy(a, a1);
                reverse(a);
     
    2) зачем аргумент в функцию void reverse(char *str[]) описан так? (такое надо только когда нам надо изменить значение str, а поскольку такого не надо - достаточно char* str
    и передавать в main'е как reverse(a);

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 15:04 17-12-2009
    i0ngunn3r

    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    разобрался, спасибо

    Всего записей: 4 | Зарегистр. 28-07-2006 | Отправлено: 15:25 17-12-2009
    ValidolX

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CruelCrow

    Цитата:
    Только всё равно не работает, через раз - Access violation на 0x00000000

     
    все таки читать надо хотя б хелп на функу, не говоря уже о голой теории....
     
        SID *sid;
        const char* str_sid = "S-1-1-0"; //Everyone SID
        BOOL success = ConvertStringSidToSid(str_sid, (void**)&sid);
        //success = IsValidSid(sid);
     
        #define MAX_NAME 256
        char lpName[MAX_NAME];
        char lpDomain[MAX_NAME];
        DWORD dwSize = MAX_NAME;
     
        SID_NAME_USE SidType;
     
        success = LookupAccountSid(
                        0,
                        sid,
                        lpName,
                        &dwSize,
                        lpDomain,
                        &dwSize,
                        &SidType
        );
         
        printf("String SID for %s: %s\n", str_sid, lpName);
     
        //output: String SID for S-1-1-0: Everyone

    Всего записей: 1713 | Зарегистр. 22-07-2001 | Отправлено: 15:50 17-12-2009
    CruelCrow

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ValidolX
    Спасибо! Буду разбираться.

    Всего записей: 109 | Зарегистр. 21-05-2006 | Отправлено: 16:30 17-12-2009
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на C/С++


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru