Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Код (Text):
    1. bool func(int N) {
    2.   for (int i = 1 ; i < N ; i++) {
    3.     int k = i*i*i - 17*i*N*N + N*N*N;
    4.     if (k % 2 == 0 && k % 3 != 0) return true;
    5.   }
    6.   return false;
    7. }
     
  2. pop_punk

    pop_punk Максим

    Публикаций:
    0
    Регистрация:
    10 дек 2008
    Сообщения:
    3
    Адрес:
    Йошкар-Ола
    scf спасибо =)
    но это ведь наверно не все еще))
     
  3. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    Ну да, еще надо как то вызов этой функции оформить - сложнейшая задача 8(
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
  5. Sov

    Sov New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2007
    Сообщения:
    20
    Помогите плз
    пытаюсь реализовать алгоритм сжатия по хаффману,где то в процедуре декодирования huff_decode есть ошибка обращения к памяти,не могу найти(
    http://slil.ru/26425171
     
  6. Sov

    Sov New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2007
    Сообщения:
    20
    переформулирую вопрос
    почему не работает код
    Код (Text):
    1. #include <conio.h>
    2. #include <windows.h>
    3. #include <vector.h>
    4. #include <stdio.h>
    5.  
    6. unsigned int a(unsigned int n,BYTE **dest)
    7. {
    8.    unsigned int i;
    9.    vector <unsigned short> source_code;
    10.  
    11.    for(i=0;i<n;i++)
    12.        source_code.push_back((BYTE)i);
    13.  
    14.    unsigned int size_n=source_code.size();
    15.    (*dest)=new BYTE(size_n);
    16.    for(i=0;i<size_n;i++)
    17.      (*dest)[i]=source_code[i];
    18.    source_code.clear();
    19.    return 0;
    20. }
    21.  
    22. int main(int argc, char* argv[])
    23. {
    24.  int i;
    25.  BYTE *nmas2;
    26.  unsigned int size2;
    27.  
    28.  
    29.  size2=a(20,&nmas2);
    30.  for(i=0;i<size2;i++,printf("\r\n"))
    31.    printf("%d",nmas2[i]);
    32.  
    33.   delete []nmas2;
    34.   getch();
    35.         return 0;
    36. }
     
  7. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    dest - это у тебя массив указателей на BYTE

    Код (Text):
    1. (*dest)=new BYTE(size_n);
    В этой строчке ты выделяешь из кучи один байт, инициализируешь его значением size_n
    и кладешь указатель на него в первый элемент dest.

    то есть примерно так

    Код (Text):
    1. dest[0] = new Byte;
    далее ты обращаешься к несуществующим элементам массива байт в куче - выделил один а обращаешься к массиву:

    Код (Text):
    1. for(i=0;i<size_n;i++)
    2.      (*dest)[i]=source_code[i]
    ;
     
  8. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    letopisec
    > dest - это у тебя массив указателей на BYTE
    С практической точки зрения, dest - это адрес main.nmas2. Автор кода хочет зарезервировать память в функции a и венрнуть его в main.

    Sov
    Попробуй поменять
    Код (Text):
    1. ...
    2. unsigned int a(unsigned int n,BYTE **dest)
    3. {
    4. ...
    5. // обрати внимание на _форму_ скобок
    6. //--   (*dest)=new BYTE(size_n);
    7.    (*dest)=new BYTE [size_n];
    8. ...
    9.  // иначе цикл в main до нуля
    10. //--   return 0;
    11.    return size_n;
    12. }
    13. ...
     
  9. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    Угу. Кто бы спорил.)
     
  10. Sov

    Sov New Member

    Публикаций:
    0
    Регистрация:
    29 авг 2007
    Сообщения:
    20
    блин
    скобки
    спасибо,похоже у меня крыша уехала пока дебагом занимался)))
     
  11. KingT

    KingT Member

    Публикаций:
    0
    Регистрация:
    12 янв 2006
    Сообщения:
    208
    Почему при добавлении push_back() в vector предыдущий инициализированный итератор указывает на новый элемент?Разве vector не растет в сторону больших адресов?
     
  12. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Подскажите про правильную организацию заголовочных файлов.......
    Создаю в VS2008 Win32 App. Например проект называется test. В проекте создаются файлы:
    test.cpp
    stdafx.cpp
    test.h
    stdafx.h
    targetver.h
    Мне надо использовать 2 класса: class1 и class2. Я создаю class1.h, class2.h, class1.cpp,class2.cpp.
    В class1.h и в class2.h описание самих классов, в соответсвующих cpp - описание методов.
    Как теперь их правильно includ'ить в проект чтобы class1 и class2 можно было использовать в test.cpp?

    Зы. Так же, имеется набор функций, которые необходимо использовать в обоих классах. Допустим я их опишу в funcs.cpp и объявлю в funcs.h, как эти файлы подключить?
     
  13. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    twgt
    Вначале test.cpp напиши:
    #include "class1.h"
    #include "class2.h"

    Политика такова, что компилятору необходимо знать только декларацию функций, классов, методов в месте их вызова. А линкер затем найдёт в каком-нибудь obj реализацию, и свяжет.

    В обоих реализациях этих классов - .cpp напиши:
    #include "functions.h"
     
  14. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Booster
    Благодарю.
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    twgt
    stdafx.h нужно обязательно инклудить в начале всех .cpp.
    Это предкомпилированный заголовочный файл, в него нужно инклудить те заголовочные файлы которые или никогда не изменяются, или изменяются очень редко. Это может существенно уменьшить время компиляции. Хотя его можно и отключить.
     
  16. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Booster
    Спасибо, я решил отключить...пока что :)
     
  17. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Вопрос такой. В одном проекте Visual C++ 6.0 (называется RegisterEdit) создаю cpp и header-файл к нему. В другом модуле пишу "#include <модуль.h>" и из "модуль.cpp" видны все нужные функции, прототипы кот-ых записаны в "модуль.h"-файле).
    А вот в другом проекте (PE_work) это не работает. "Импортирую" функции также, но линкер при постройке говорит что эта функция не видна (что-то вроде - "невстречающаяся ссылка -прототип функции-"). Где в PE_work ошибка? Вроде бы все точно также! Прототип в Header-файле тот же самый, что и заголовок функции в Cpp-файле.
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    AndreyMust19
    Сложно так сказать.
    #include <модуль.h> - для библиотечных файлов.
    #include "модуль.h" - для своих.
    Может не видит директорию где лежит .h. Additonal Include Directories.
     
  19. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    А... совсем забыл!!! я же хотел аттачем документы приложить!
     
  20. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Ну, никто не пробовал понять - в чем причина?