Помогите найти ошибку..+сортировка Struct

Тема в разделе "Общие вопросы по С и С++", создана пользователем AlexSaaa, 22 сен 2005.

Статус темы:
Закрыта.
  1. AlexSaaa

    AlexSaaa Гость

    Суть в том, что нужно пройтись по массиву структур и элементы, которые не повторяются скопировать в массив **Д

    Код (Text):
    char **D;
    D=new char*[5];
    for(i=0; i<5; ++i) D[i]=new char [32];


    for(i=0; i<5; ++i){
     
    for (int j=0; j<i; ++j)
     if(strcmp( D[i], arr[j].B)==NULL) break;
    strcpy(D[i], arr[j].B);
    }

    используй тэг [СODE] для оформления исходного текста
     
  2. xaep

    xaep Гость

    Для начала обьяви i
     
  3. AlexSaaa

    AlexSaaa Гость

    i было объявлено выше.. с этим все нормально

    вообще комилятор не выдает сообщений о ошибках..
    вернее шибка есть но она скоре всего логическая а е в коде
    программа работает не так как хотелось бы...
    то есть в массив Д переносится все элементы структуры arr[j].В
    а хотелось бы только те что не повторяются...

    бай зе вей ..там не смайл а элемент В
     
  4. AlexSaaa

    AlexSaaa Гость

    не хотел открывать новую тему .. тут и так только мои темы...

    предыдущий вопрос все еще актуальный..
    но назрел овый вопрос относительна сортировки массива структур



    привожу код
     
  5. Guest

    Guest Гость

    Для: AlexSaaa:
    Вам про отладку не рассказывали еще? Когда программа не работает, надо не вопросы в форуме задавать, а садиться и по шагам смотреть как твой алгоритм работает, если не умеешь на машине - бери листок бумаги.
    В твоем случае, впрочем, отладка мало поможет, только увидеть, что все работает не так как ты думаешь. Наводящие вопросы - Сколько элементов будет в D? Что, по-твоему делает break в цикле? Что мешает Strcpy вызываться для каждого элемента?

    А вот сортировка с первого взгляда нормальная. Разве что присваивание строк вряд ли делает то, что ты хотел.

    В целом - это вас учат прописывать размер массива константой прямо в коде, без define\const?
     
  6. AlexSaaa

    AlexSaaa Гость

    возможно что-то не так понимаю.. но в моем представлении все должно работать нормально... перечитал на всякий многомерные динамические массивы...
    5х32-->5 указателей на char массивы размерм 32...

    когда писал был уверен ,что break обезпечит досрочно прервет цыкл for (int j=0; j<i; ++j)
    позволит перейти к следующей итерации цыкла for(i=0; i<5; ++i)


    не знаю((

    чем можна заменить операцию присваивания?
     
  7. AlexSaaa

    AlexSaaa Гость

    нашел ошибку в первом..думаю как можна исправить
     
  8. AlexSaaa

    AlexSaaa Гость

    нет..не нашел..совсем запутался
     
  9. AlexSaaa

    AlexSaaa Гость



    переписал..но получился полный бред
     
  10. Guest

    Guest Гость

    Ну, гораздо лучше :(
    Идея правильная, и реализация почти :(
    Единственное замечание - поиск повтора в части массива ничего не даст - то, что ты ищешь, может быть и во второй части. Может, ты просто не там ищешь? :)
     
  11. AlexSaaa

    AlexSaaa Гость

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

    и все равно не работает... совсем не работает
     
  12. Guest

    Guest Гость

    А, так повторяющийся элемент надо записывать тоже, но один раз? Я не понял. Тогда почти все правильно - просто у тебя на первой итерации всегда i=j, соответственно ничего в массив не пишется.
     
  13. AlexSaaa

    AlexSaaa Гость

    а тут я не совсем понял...
    чему должно равнятся j?
    можна уточнить....
     
  14. Guest

    Guest Гость

    Ну чему оно должно равняться я не знаю, это зависит от твоей реализации :(
    но в if'e
    Код (Text):
     if(strcmp(arr[i].B, arr[j].B )==0){
     ++idx;
     break;
    }
    При i=j условие всегда верно, так что в наполнение D ты никогда не попадешь.
     
  15. AlexSaaa

    AlexSaaa Гость

    спасибо..сделал...все оказывается так просто)))
     
  16. AlexSaaa

    AlexSaaa Гость

    нужно написать что-то наподобии счетчика слов в тексте..
    решил сделать через структуры..возможно не оптимальный вариант..зато простой..собственный.. и для ньюби .. так вот не могу присвоить елемент строчки(слово) элементу структуры..
    ниже привожу код





    подскажите где здесь ошибка?

    эт не окончательный вариант.. пока хотелось бы заполнить arr.Word первым словом Лайна..потом подумаю как дальше делать
     
  17. AlexSaaa

    AlexSaaa Гость

    млять..єт *:?%%; полный ..мож бросить все это пока не поздно..(((
     
  18. marco manti

    marco manti Гость

    !!! COM !!!
    mmm.obj : error LNK2001: unresolved external symbol _IID_IBasicAudio
    (_IID_IMediaPosition,_CLSID_FilterGraph...)
    Я понимаю что я что-то не включил, но если кто-то сталкивался - ПОМОГИТЕ!!!
    Причем вроде-бы все учел:
    CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
    IID_IGraphBuilder, (void **)&pGB);
    pGB->QueryInterface(IID_IMediaPosition, (void **)&pMP);
    pGB->QueryInterface(IID_IBasicAudio, (void **)&pBA);
    pGB->RenderFile(wFile, NULL);
     
Загрузка...
Похожие Темы - Помогите найти ошибку
  1. OlgaZag
    Ответов:
    1
    Просмотров:
    1.291
  2. OlgaZag
    Ответов:
    0
    Просмотров:
    523
  3. Google313
    Ответов:
    0
    Просмотров:
    999
  4. Marikd
    Ответов:
    2
    Просмотров:
    1.209
  5. ruivit
    Ответов:
    2
    Просмотров:
    1.329
Статус темы:
Закрыта.

Поделиться этой страницей