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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Lyrik

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    sergeyt
    А инклуд <crtdbg.h> сделан?

    Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 16:15 11-11-2007
    sergeyt

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я не очень в программировании  
    легче просто написать как да что
     
    Добавлено:
    В начале этот инклуд прописан

    Всего записей: 12 | Зарегистр. 20-12-2005 | Отправлено: 16:31 11-11-2007
    TimAlexandr



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Памагите плиз!!! Программа написанная в С++ в линуксе не компилируеться! Но в Windows все работает. Что делать???

    Всего записей: 2 | Зарегистр. 08-11-2007 | Отправлено: 22:14 11-11-2007
    Paul Tergeist

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TimAlexandr
    Телепаты все в отпуске. Покажи код, где не компилируется.

    Всего записей: 22 | Зарегистр. 05-11-2007 | Отправлено: 22:53 11-11-2007
    Mr Nobody



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

    Цитата:
    Но в Windows все работает. Что делать???

    Не тяжело догадаться, работай в Windows. Это показывает, что Линукс эще весьма "сырой"  

    Всего записей: 350 | Зарегистр. 19-09-2007 | Отправлено: 01:05 12-11-2007
    BornLeader

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Код покажи!Какие функции используешь?

    Всего записей: 36 | Зарегистр. 31-10-2007 | Отправлено: 11:25 12-11-2007
    diaz85

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день. есть небольшой вопрос:
     
    r=bind(s, const struct socketaddr far*name, int namelen),
     
    что такое far? name вроде как указатель на стр-ру, а вот far...

    Всего записей: 39 | Зарегистр. 05-11-2007 | Отправлено: 18:30 15-11-2007
    Lyrik

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

    Цитата:
    что такое far?

    дальний указатель, т.е. сегмент:смещение

    Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 18:45 15-11-2007
    BlackBerry

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можно ли в C/C++ определить смещение эленента структуры ?
       struct my_struct { int n;
                           .....                    
                          int k;
                         }
                                   offset (my_struct.k) - ?

    Всего записей: 196 | Зарегистр. 08-09-2004 | Отправлено: 17:50 16-11-2007
    Paul Tergeist

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

    Код:
    #include <cstddef>
    ....
    struct my_struct {
      int n;  
      .....                      
      int k;  
    };
    ....
    size_t o = offsetof(my_struct, my_struct::k);

    Всего записей: 22 | Зарегистр. 05-11-2007 | Отправлено: 21:20 16-11-2007
    kastus777



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    разобрался - надо вместо 1 вводить 01 и.т.д
     
    /*доброго времени суток
     
     
      if (strcmp(bus.punktnaz,gorod)==0){
             if    (strcmp(temp,bus.timeprib)>0)
     
            {printf("\n temp=%s      bus.timeprib=%s\n",temp,bus.timeprib);
     
    }
    }
    перебор по городу и времени прибытия
    по городу нормально работает , а по (strcmp(temp,bus.timeprib)>0)
    выдает какую-то чушь- если задаю temp (0...9) выводит весь список, если двузначное ,то не видет однозначные числа
     
     подскажите как спавиться  
    спасибо
     
     

    Всего записей: 16 | Зарегистр. 11-04-2006 | Отправлено: 00:00 18-11-2007 | Исправлено: kastus777, 00:22 18-11-2007
    alex5161



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всем привет!
     Нуждаюсь в помощи.  
     Проблема в компилировании, точнее в линковании, но из компиляции. Или причина в Вижуал Студии оболочке самой по-себе.
     Всего кода представить немогу - пол-гига в целом.
     Суть в том, что мне нужно програмировать дополнительную часть и подключать как статические библиотеки.
     Когда я подключаю успешно откомпелированную Try2_sttc_lib_6.lnk с функцией displ(..), к существующему коду, линкер жалуется, что  
     
     НЕ МОЖЕТ РАЗРЕШИТЬ EXTERNAL СИМВОЛ _displ.
     
     Тот же код, тем же образом использованный в новосозданной программке (win32 consol application project) компилируется и работает без проблем.
     
     Програмка с функцией displ() компиликованна как static library project  в Try2_sttc_lib_6.lnk.
     Я ведь не ошибаюсь, что компилирование в *.lnk это то же, что и компилирование в об'ектный код, *.obj?
     Далее в существующей программе бобавленно  
       external void displ(char* stn);  
     и использованно уже в main().  
     
     Более точно, в проверочном проэкте использованно в main(), а в существующем проэкте - в winmain(..)
     
     Существующий проэкт написан полностью на Си, а коммпилирован в VC++ ver.6  
     Проделано ли что-то специальное в компиляции для этого, я не знаю. Для меня Вижуал Студия не знакома, я от Юникса, и поэтому не знаю как разобратся со всей компиляцией в VS-v.6
     Проверочный код банален:
    Библиотека:
    //  Try2_sttc_lib_6.cpp
     
    //#include <iostream>
    //using namespace std;
     
    #include <stdio.h>
     
    void displ(char* stn)
    {
        //cout << "\nFrom 'displ' library: " << stn << "\n";
        printf("\nFrom 'displ' library: %s \n", stn );
    }
    Использование:
    // use_lib.cpp :
    //
     
    #include <stdio.h>
     
    extern
    void displ(char*);
     
    int main(int argc, char* argv[])
    {
        displ("using static library");
     
        return 0;
    }

    Всего записей: 1446 | Зарегистр. 26-03-2002 | Отправлено: 02:53 18-11-2007 | Исправлено: alex5161, 06:51 18-11-2007
    Lyrik

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    alex5161
    Такое обычно возникает когда компилирование библиотеки и исходных текстов происходит под разной спецификацией, у тебя видно, что библиотека компилилась как С, а исходные коды как С++, имхо. Решение следующее:

    Код:
    //#include <iostream>  
    //using namespace std;  
     
    #include <stdio.h>  
     
    extern "C" void displ( char* );
     
    void displ(char* stn)  
    {  
        //cout << "\nFrom 'displ' library: " << stn << "\n";  
        printf("\nFrom 'displ' library: %s \n", stn );  
    }


    Код:
    // use_lib.cpp :  
    //  
     
    #include <stdio.h>  
     
    extern "C" void displ( char* );  
     
    int main(int argc, char* argv[])  
    {  
        displ("using static library");  
     
        return 0;  
    }

    После этого все должно работать

    Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 11:37 18-11-2007
    alex5161



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Lyrik -Спасибо, проверил. Поставил "С" в об'явление функции в файле с WinMain(..):
     и получил другую ошибку, и как я понял, на "С":
     
    error C2059: syntax error : 'string'
     
     Из поиска пришел к выводу, что проблемма была в том, что библиотека  компилировалась из фаила '*.cpp'(созданного по-умолчанию), а существующий проект из файлов '*.с'  
     (В моем проверочном проэкте тоже создался файл 'cpp', потому и небыло проблем с external об'явлением.)
     Когда я поменял расширения на *.с библиотека принята существующим проектом без проблем.
     
     Т.е. с этим разобрался. Спасибо Lyrik за пинок в правильном направлении
     
     Теперь другая проблема:
     А можно ли С++ (не только С) код использовать из библиотеки?
     Т.е. писать на С++, компилировать в new_code.lib, и подключать к существующему тем же образом, через extern?
     Или каким другим образом?
     
     Я попробовал использовать cout << (конечно с #include <iostream> using namespace std;) но получил ошибку:
       fatal error C1189: #error :  "eh.h is only for C++!"
     
     Как такое сделать?
     
      - ПОЛУЧИЛОСЬ!!
     Т.е сделал функцию на С++, в файле *.срр , откомпелировал в библиотеку (т.е в MS VS-6 это Win32 Static Library project), и использовал эту функцию из С проэкта.  
     А для этого понадобилось 2 вещи:
     1.  'extern "C" ' перед имплементацией библиотечной функции:
            extern "C" void displ(char* stn) { .... code ... )
     2.  точное совпадание типа компиляции, что подключает соответствующие библиотеки. Иначе конфликты.
            в MSVS-v.6 это в project/setting: C/C++: code generation category; Use-run time library:
     Ну а после этого - как обычно: подключил *.lib к существующему (добавил файл к проэкту) и об'явил екстернал библиотечную функцию. Все - можно пользовать.
     Конечно, исключительно С++ (overloading, template, virtual funcs, что там еще...) использовать если и можно изловчится, но будет геморойно. Ну а так - нечто.

    Всего записей: 1446 | Зарегистр. 26-03-2002 | Отправлено: 23:05 18-11-2007 | Исправлено: alex5161, 22:54 19-11-2007
    soyfuerte

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    добрый день! помогите, пожалуйста,с задачкой... очень прошу  
     
     
    Дан 2-мерный массив целых чисел(М строк, N столбцов, М=5, N=4). Элементы вводят с клавиатуры. Вывести массив на экран в виде таблицы. Определить количество элементов, кратных 3 и не превышающих 100. Посчитать среднее арифметическое в К-ом столбце. Найти первый максимум и его координаты в каждой строке. Вывести на экран. Упорядочить массив максимумов по возрастанию.  
     
    заранее благодарна.

    Всего записей: 12 | Зарегистр. 17-10-2007 | Отправлено: 13:02 21-11-2007
    Lyrik

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

    Цитата:
    что проблемма была в том, что библиотека  компилировалась из фаила '*.cpp'(созданного по-умолчанию), а существующий проект из файлов '*.с'  

    это я и писал

    Цитата:
    компилирование библиотеки и исходных текстов происходит под разной спецификацией, у тебя видно, что библиотека компилилась как С, а исходные коды как С++


    Цитата:
    ПОЛУЧИЛОСЬ!!

    вот и гут!  
    soyfuerte
    В этой теме - вопросы. Что конкретно у тебя не получается?

    Всего записей: 388 | Зарегистр. 04-04-2006 | Отправлено: 15:22 21-11-2007
    distance

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

    Цитата:
    Определить количество элементов, кратных 3 и не превышающих 100

    подсчет можно сделать так:
     

    Код:
    #include <algorithm>
     
        const int M = 5; // rows
        const int N = 4; // columns
     
        int array[M][N];
        
        // заполнение массива
        // ...
        
        int* p = &array[0][0];
        struct Op : public std::unary_function<int, bool>
        {
            result_type operator()(const argument_type& v)
            {
                return ((v % 3 == 0) && (v <= 100));
            }
        };
     
        std::count_if(p, p + M*N, Op());

     
    или, с помощью Boost.Lambda

    Код:
    #include <boost/lambda/lambda.hpp>
     
        namespace lm = boost::lambda;
        std::count_if(p, p + M*N, (lm::_1 % 3 == 0) && (lm::_1 <= 100));

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

    Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 23:13 21-11-2007
    soyfuerte

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Дан 2-мерный массив целых чисел(М строк, N столбцов, М=5, N=4). Элементы вводят с клавиатуры. Вывести массив на экран в виде таблицы. Определить количество элементов, кратных 3 и не превышающих 100. Посчитать среднее арифметическое в К-ом столбце. Найти первый максимум и его координаты в каждой строке. Вывести на экран. Упорядочить массив максимумов по возрастанию.  
     
    вот я вывела на экран....  а как условие создать, чтобы было кратно 3???
     
     
    #include<iostream.h>
    #include<conio.h>
    #include<iomanip.h>
    void main()
    {
    clrscr();
    const int M=5, N=4;
    double d[M][N];//vveli massiv d
    for (int i=0; i<M; i++)
    for (int j=0; j<N; j++)
    {
    cout<<"VVesti element stroca"<<i<<"stolbec"<<j;
    cin>>d[i][j];
    }
    for (i=0; i<M; i++)
        {
        for (int j=0; j<N; j++)
        cout<<setw(5)<<setprecision(5)<<d[i][j];
        cout<<endl;
        }
    getch();
    }

    Всего записей: 12 | Зарегистр. 17-10-2007 | Отправлено: 12:03 22-11-2007
    Qraizer



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Брать у лояльных в блондинкам друзей готовые исходники - это и моя дочь сможет, хоть она и не блондинка во всех смыслах. Прости, но быть так близко от ответа и не найти мозгов самостоятельно его найти - это нонсенс.

    ----------
    Одни с годами умнеют, другие становятся старше.

    Всего записей: 613 | Зарегистр. 08-08-2006 | Отправлено: 21:13 22-11-2007
    alex5161



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    soyfuerte
     Подскажу о кратности: посмотри, что такое оператор %
     Могла бы подумать, что там distance пытался показать, что такое ...(v % 3 == 0) ... и ...  
    (lm::_1 % 3 == 0)...  
     (хотя, конечно, distance, ты, похоже, специализируешься в кодовых изошрениях!)
     
     А вообще возникает вопрос: soyfuerte - а зачем оно тебе, если такое вызывает у тебя трудности? Зачем тебе програмирование?  
     Потому и Qraizer расстраивается, и сотни других, прочитавших, чертыхнувшихся и промолчавших.
     
     Програмирование - это детализация и 'зри в корень' подход.  
     Сказали 'кратно..' - тебе изложить 'что такое кратно', первый максимум - так же, что это?
     Сразу по тексту твоя задача решается так:

    1. Получить массив с ввода
    2. Показать массив на экране (а не во время ввода!)
    3. Пройти по массиву и просчитать элементы кратные 3-м и меньше 100
            элементов = 0;
            Цикл по всем элементам;
                  если текущий элемент кратен 3 и < 100 - увеличить 'элементов';
            Показать 'элементов' на экран
      (остальные подзадачи можно сделать в этом же проходе по массиву, но для начала и простоты лучше сделать отдельные перелистывания массива (что, я думаю, понятно, есть двойной цикл)
    4. Пройти по столбцу К и вычислить среднее арифметическое: наверно вывести на экран? Неуказанно. К - откуда берется? Или запрашивается у пользователя, или входной параметр (и тогда имеется в виду написание функции), или как-то еще (например, генератором случайных чисел). Или уточнить, или указать, какое решение принято.
           сумма_К = 0;
           Цикл по столбцу К
                 добавить текущий элемент к сумме_К ;
           показать (сумма_К деленную на количество элементов в столбце);      
    5. Пройти по массиву и в каждой строке запомнить первый максимум (наверно, первый - для случая, если максимальное значение встречается более одного раза) с координатами (выводить максимум и координаты на экран, запоминать максимум  в новый массив.)  
           об'явить массив максимумов;
           максимум = первому елементу в массиве;
           Цикл по всему массиву (введенному)
                В начале строки : максимум = первому елементу строки;
                                            координаты_максимума = номер_строки, 1;
                      если текуший элемент > максимума:
                            максимуm = текущему элементу
                            координаты_максимума = номер_строки, номер текущего элемента
                В конце строки : сохранить максимум текущей строки в массиве максимумов
                                          Вывести на экран текущий максимум и координаты максимума
    6. Отсортировать массив максимумов по возрастанию (можно писать процедуру самому, или использовать библиотечные функции - надо поискать)  Ну и вывести на экран.
            Самому - например пузырьком:
            Пройтись по массиву максимумов, начиная со второго элемента:
                  если текущий элемент < предыдущего - поменять их местами
            Проделать такой проход на один раз меньше, чем количество элементов в массиве.
            Распечатать отсортированный массив.  

     Ну и все.  
     Осталась только кодировка.  
     
     А вообще лучше не програмировать, если оно тебе не надо. Ни себе, ни людям от этого пользы!
     

    Всего записей: 1446 | Зарегистр. 26-03-2002 | Отправлено: 00:49 23-11-2007
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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