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

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

  1. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    Камрады помогите есть задание немогу написать на С++

    есть матрица 10х10 в интервале от -50 до 50
    нужно вычесть из каждого числа сумму чисел тока загвоздка в том что нужно использовать стандартную библиотеку шаблонов :dntknw:

    и вторая задача
    счет в банке представляет собой структуру с полями: номер счета код счета фамилия владельца дата открытия
    выполнить поиск по номеру счета владельцу и дате открытия счета
    тож надо используя библиотеку шаблонов

    Это задания Из книги Лаптев Морозов C++ ООп Задачи и упражнения если кто сталкиевался помогите плиз!!!! =(
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    DoubleOn
    тебе что-то конкретно не понятно или ты просишь за тебя всё сделать?
     
  3. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    если не сложно алгорит написать я в С полный ноль
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    DoubleOn
    программа - это алгоритм, написанный на каком-либо языке программирования.
    это и называется cделать всё за тебя :)
    или разбирайся сам или в ветку COMERCE.
     
  5. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    Во спасибо за идею
     
  6. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    Я не могу понять, как найти сумму чисел вектора.

    Отредактировано. Замечание!. Пишите грамотно, уважайте себя и этот форум.
     
  7. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    Камрады возник вопрос

    Код (Text):
    1. #include "stdafx.h"
    2. #include "6zadanie.h"
    3. #include <vector>
    4. #include <iostream>
    5. #include <cstring>
    6. #include <map>
    7. using namespace std;
    8. #ifdef _DEBUG
    9. #define new DEBUG_NEW
    10. #endif
    11.  
    12.  
    13. class word{
    14.     char str[20];
    15.     public:
    16.         word() {strcpy(str, "");}
    17.         word(char *s ) {strcpy(str,s);}
    18.         char *get() {return str;}
    19.     };
    20.    
    21.     bool operator <(word a,word b)
    22.     {
    23.             return strcmp (a.get(),b.get())<0;
    24.     }
    25.  
    26.     class opposite {
    27.         char str[20];
    28.     public :
    29.         opposite() {strcpy(str,"");}
    30.         opposite(char *s ){strcpy(str,s);}
    31.         char *get() {return str;}
    32.     };
    33.  
    34.    
    35.  
    36. int main()
    37. {
    38.    
    39. map <word, opposite>m;
    40. m.insert(pair<word, opposite >
    41.          (word("1"),opposite("tovar1")));
    42. m.insert(pair<word, opposite >
    43.          (word("2"),opposite("tovar2")));
    44. m.insert(pair<word, opposite >
    45.          (word("3"),opposite("tovar3")));
    46. m.insert(pair<word, opposite >
    47.          (word("4"),opposite("tovar4")));
    48. m.insert(pair<word, opposite >
    49.          (word("5"),opposite("tovar5")));
    50. m.insert(pair<word, opposite >
    51.          (word("6"),opposite("tovar6")));
    52.  
    53. char str[80];
    54. cout<<"Nomer Sklada: ";
    55. cin >>str;
    56.  
    57.  
    58. map<word,opposite>::iterator p;
    59.  
    60. p = m.find(word(str));
    61. if (p!=m.end())
    62. cout <<"Kod tovara:\n "<<p->second.get();
    63. else
    64. cout << "Takogo slova  net \n";
    65. cout<<" "<<endl;
    66. return 0;
    67.  
    68. }
    как в эту прогу засунуть еше слова антонимы или как тут они называються

    например при вводе 1 выводилось не только товар 1 но еше следуюшие даннаые
     
  8. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    DoubleOn
    мнээ?

    я ничего не понял. может быть, получше объяснишь суть задачи?

    а в коде выше вообще неясно зачем тебе два идентичных класса с разными именами.
     
  9. DoubleOn

    DoubleOn New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2009
    Сообщения:
    62
    varnie
    Да все все ребят разобрался все сдал.Если нужно могу скинуть.Правда задания немного не те. =(
    Но они однотипны!;)
     
  10. WhiteP

    WhiteP New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2008
    Сообщения:
    7
    Здравствуйте.

    Не могу понять, почему при вызове:

    Код (Text):
    1. void func (void *dst,char fill,size_t size)
    2. {
    3.     char *dest=(char*)dst;
    4.     for (int i=0;i<size;i++)
    5.     {
    6.         *dest=fill;
    7.         ++dest;
    8.     }
    9. }
    и опции /NODEFAULTLIB получается:

    .

    Получается, что все равно вызывается memset?

    Подскажите, пожалуйста.
     
  11. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    http://wasm.ru/forum/viewtopic.php?id=16653
     
  12. WhiteP

    WhiteP New Member

    Публикаций:
    0
    Регистрация:
    16 ноя 2008
    Сообщения:
    7
    letopisec
    Благодарю. Похоже я плохо искал.
     
  13. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    имеется функция:
    Код (Text):
    1. char *get_file(char *filename)
    2. {
    3.     char *result;
    4.     struct stat st;
    5.  
    6.     FILE *fin = fopen(filename, "rb");
    7.     if(!fin) return NULL;
    8.  
    9.     fstat(fileno(fin), &st);
    10.     result = (char*)calloc(st.st_size + 10, 1);
    11.     fread(result, st.st_size,1,fin);
    12.  
    13.     fclose(fin);
    14.     return result;
    15. }
    читаю бинарный файл, в буфере только несколько байтов файла, предполагаю, что чтение происходит до сивола конца строки, как прочитать его целиком?
     
  14. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    xenom0rph
    не проверяешь результат выполнения fstat, fread. не деаллоцируешь выделенную память.
    возможно, поможет.
     
  15. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    структура st заполняется как надо, проверку, можно сделать, но не в этом дело, так как в отладчике вижу, что загружаются первые байты файла, вот "деаллоцируешь выделенную память" не совсем понимаю что это.
     
  16. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    xenom0rph
    хоть это и не относится к твоей проблеме, но все же. я говорил про освобождение выделенной памяти: free(result);
    у тебя почему-то память выделяется, но не освобождается. утечка памяти.
     
  17. gh05t

    gh05t New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    34
    Здравствуйте.
    Такая проблема: компилятор Visual Studio 2008 не компилирует некоторые строки, то есть при отладке пропускает их выполнение, значения переменных, изменяемых в данных строках, остаются прежними, точки останова на них ставить соответстветственно тоже бесполезно. Вот один из примеров:
    Код (Text):
    1. //идет нормальное выполнение программы, инициализация интерфейсов и тд
    2.     parm.vt = VT_BSTR;  //тип - VARIANT
    3.     parm.bstrVal = SysAllocString(L"A1:O15");
    4.  
    5.     dp.cArgs = 1; //тип - DISPPARAMS
    6.     dp.rgvarg = &parm;
    7.  
    8.     AutoWrap(pXlActiveSheet, L"Range", DISPATCH_PROPERTYGET, &dp, &res);
    9.  
    10.     if (!res.pdispVal)
    11.     {
    12.         return 0;
    13.     }
    14.  
    15.     IDispatch *pXlRange;
    16.     pXlRange = res.pdispVal;
    17.  
    18.     VARIANT arr;
    19.     arr.vt = VT_ARRAY | VT_VARIANT; //вот в этой строке бряк не работает
    20.    
    21.     SAFEARRAYBOUND sab[2];
    22.     sab[0].lLbound = 1; sab[0].cElements = 15;
    23.     sab[1].lLbound = 1; sab[1].cElements = 15;
    24.     arr.parray = SafeArrayCreate(VT_VARIANT, 2, sab);
    25.  
    26.     for(int i=1; i<=15; i++)
    27.     {
    28.         for(int j=1; j<=15; j++)
    29.         {
    30. заполнение массива
    31.         }
    32.     }
    33.  
    34.     dp.cArgs = 1;//в этих четырех
    35.     dp.rgvarg = &arr;
    36.     dp.cNamedArgs = 1;
    37.     dp.rgdispidNamedArgs = &dispidNamed;
    38.    
    39.     AutoWrap(pXlRange, L"Value", DISPATCH_PROPERTYPUT, &dp, NULL);
    40. ...освобождение интерфейсов
    Как это исправить, чтобы больше не приходилось редактировать переменные в отладчике вручную, перед каждым вызовом функции?
     
  18. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    gh05t

    Так у тебя наверно релизная сборка включена?
     
  19. gh05t

    gh05t New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2008
    Сообщения:
    34
    Точно... Спасибо за решение проблемы.
    Можно, в двух словах, узнать, почему Release пропускает строки с присвоением значений переменным?
     
  20. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    gh05t

    Дело в том, что в релизе используется куча всяких оптимизаций, и скомпилированый код не всегда можно построчно поставить в соответствие с его исходниками. Например, вызов функции может заинлайниться в одну ассемблерную инструкцию, и с точки зрения отладчика никакой функции там не будет. Поэтому в релизе step-by-step работает не всегда так, как этого хотелось бы.