Обсуждение Программирование на C/C++

с этим я разобрался, всем спасибо.

другой вопрос: чем AnsiString отличается от string? Ну ясно, что это разные классы с разными методами. какой из классов "более полный" (имеет боьше ф-ий), а с каком удобнее работать? и какой файл нужно включить инклюдом, чтобы объявить AnsiString?
 
с этим я разобрался, всем спасибо.

другой вопрос: чем AnsiString отличается от string? Ну ясно, что это разные классы с разными методами. какой из классов "более полный" (имеет боьше ф-ий), а с каком удобнее работать? и какой файл нужно включить инклюдом, чтобы объявить AnsiString?
AnsiString.
Дополнен методами приведений типов. операции отношения ==,!=,>,<,>=,<= ну м.б. еще чем :)
попробуй dstring.h. хотя хз
 

AlexDev

Ословед
//a.h
extern char abc [64];
long makeTable(void);
//(без тел ф-ий)

//a.cpp
#include "a.h"//это тож нужно
#include <string.h>
#include <conio.h>
#include <stdio.h>
long makeTable(void){return 0;}//Тело ф-ции то тож надо описать.
char abc [64];

//unit1.cpp
#include "a.h"
//....
makeTable();

А попробуй сделать в a.h:
char abc[64];
а уже в a.cpp:
extern char abc[64];
 

    Ortega

    очки: 14
    Нет комментариев
Пожалуйста помогите.

vector<string> coll;
copy(
istream_iterator<string>(cin), istream_iterator<string>(),
back_inserter(coll));

sort(coll.begin(), coll.end());
unique_copy( coll.begin(), coll.end(), ostream_iterator<string> ([FONT=Arial,Arial]cout[/FONT], "[FONT=Arial,Arial]\n[/FONT]"));
//==================================================
Подскажите, как поставить условие на конечность считывания из istream в vector, т.е. чтоб считывалось до определенного момента, а не все время.
 

Shell

Ословед
Пожалуйста помогите.
Подскажите, как поставить условие на конечность считывания из istream в vector, т.е. чтоб считывалось до определенного момента, а не все время.
istream_iterator считывает до конца файла
или ctrl-z enter при чтении с клавиатуры
если нужно что-то другое то нужно писать без него, явно циклом
 
В F1 действительно написано, про чтение из файла.
// Collect values from cin until end of file
Но там также написано, что надо обратить внимание на конструктор по умолчанию, чтобы получить конец итератора.
// Note use of default constructor to get ending iterator
Пожалуйста, подскажите какие параметры надо передать конструктору, чтобы было условие, заканчивающее чтение с экрана.
 

Hoobastank

Ословед
Подскажите плиз. У меня вот такая задачка:
№25. Царевна Несмеяна каждому из претендентов на ее руку и сердце задает М вопросов. За очень понравившийся ответ она присуждает 2 балла, за не очень понравившийся - 6 баллов, за очень не понравившийся - 8. Определить самого понравившегося претендента. В файле F1 записаны фамилии претендентов и последовательность М баллов поставленных царевной. В файл F2 записать фамилии претендентов в порядке падения их рейтинга.

А в коде который я выложил ниже это задачка решена, но она не сходится с условиями задачи. А именно, претендентов и количество вопросов там должно быть бесконечно. А в коде только 3 претендента и 4 вопроса. Можно ли иправить с этой манерой (TStringList) или же переделывать по другому. Спс

PS. Задача написана на Turbo C++, но можно и на C++. Unit1 через блокнот.
 

Shell

Ословед
В F1 действительно написано, про чтение из файла.
// Collect values from cin until end of file
Но там также написано, что надо обратить внимание на конструктор по умолчанию, чтобы получить конец итератора.
// Note use of default constructor to get ending iterator
Пожалуйста, подскажите какие параметры надо передать конструктору, чтобы было условие, заканчивающее чтение с экрана.
ending iterator == конец файла
данная программа будет считывать слова до конца файла
если нужно считать последовательность строк, а не слов, то нужно читать так
Код:
string s;
while(getline(cin,s))
  coll.push_back(s);
или пока не считаем строку "END"
Код:
string s;
while(getline(cin,s) && s!="END")
  coll.push_back(s);
 
Помогите пожалуста со следующей задачкой
Как заполнить STL контейнер(например вектор очередь лист) 20ю числами из файла отсортировать убрать дубликаты и вывести
Главное условие: БЕЗ циклов

Можно не писать код меня в принципе интересует сам алгоритм а именно как заполнить и вывести без циклов(варианты последовательного прописывания каждого элемента не устраивают)

Заранее спасибо
 
Помогите пожалуста со следующей задачкой
Как заполнить STL контейнер(например вектор очередь лист) 20ю числами из файла отсортировать убрать дубликаты и вывести
Главное условие: БЕЗ циклов

Можно не писать код меня в принципе интересует сам алгоритм а именно как заполнить и вывести без циклов(варианты последовательного прописывания каждого элемента не устраивают)

Заранее спасибо

Про ввод из файла смотри выше.
На примере класса list можно сделать так:
PHP:
#include <iostream.h>
 #include <list>
 #include <iterator>
//========================================
coll.sort();//сортировка
coll.unique();//удаление дубликатов
copy(coll.begin(),coll.end(),ostream_iterator<int> (cout," "));//вывод
У мя итератор от int, если ты считываешь числа какого-то другого типа (double, float) соответственно замени.
 

    blazer

    очки: 11
    :)
PHP:
#include <iostream>
#include <string.h>
 #include <list>
 #include <iterator>
 #include <fstream>
 #include <algorithm>
using namespace std;
  
       ifstream infile ("input.txt");
void Print( int& coord)
{    
  string temp;
  getline(infile,temp,' ');
  coord=atoi(temp.c_str());
};
//=============================================
int main( )
{ list<int> coll;
coll.resize(20);
for_each(coll.begin(), coll.end(),Print);
coll.sort();
coll.unique();
copy(coll.begin(),coll.end(),ostream_iterator<int> (cout," "));
 
    cin.get();
    return 0;
}
Вариант, конечно, не лучший. Но тут можно обойтись без использования istream_iterator.
 
Может кто-нить простые программки написать?? :shuffle:
1) Программа, которая вычисляет величину дохода по вкладу, если известна процентная ставка (% годовых) и время хранения (дней)
2) Составить программу вычисления функции при заданном Х (функция во вложении)
3) Программу, которая выводит таблицу квадратов первых семи целых положительных нечетных чисел.
4) Программу, которая вычисляет сколько раз введенное с клавиатуры число встречается в массиве
5) Программу, которая удаляет из введенной с клавиатуры строки пробелы

Оченя нада :shuffle:
 

Бретон

Ословед
сколько дней в году?
ф-ла процентов такая: fv = (1+i)^n * pv ? (сложные проценты??)
или простые? fv = (1+i)*n * pv

доход ето конкечная сумма минус начальная или только конечная?

Код:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
//1
double income( double at_start, double  per_cent, double period )
{
       double result = 0;
 
       per_cent = (double) (per_cent / 100);
 
       result = pow( (1 + (double)(per_cent/365) ), period )*at_start - at_start;
 
       return result;
}
 
//2
double  _calculate_function(double arg)
{
       double result = 0;
 
       if ( arg <2 )
         result = -pow(arg,2) - 2*arg - 6;
       if (( arg >= 2) && ( arg !=3 ))
         result = 1/(-pow(arg,2) + 2*arg + 3);
 
       if ( arg == 3 )
         cout << "function not define: null below of fraction!?" << endl;
 
       return result;
}
//3
void  _give_me_square(void)
{
      int quantity = 0;
      int number = 1;
 
     while ( quantity <7 )//ëèøü ñåìü ÷èñåë íóæíî
     {
           if ( number % 2 != 0 )//íå÷¸òíîå ëè?
           {
                cout << pow(number,2) << endl;//âûâîäèì êâàäðàòû
                quantity++;//íàøëè î÷åðåäíîå ÷èñëî
            };
            number++;//ïðîâåðÿåì ñëåäóþùåå ïî ñ÷¸òó ÷ìñëî
     }
 
     cout << endl;
}
//4
int search_quantity(double arr[], int array_length , double wanna_find)
{
    int quantity = 0;
 
    for ( int i =0; i< array_length;i++)//ïðîññìàòðèâàåì ìàññèâ
        if ( arr[i] == wanna_find)//åñëè ñîâïàëî ñ êàêèì òî ýëåìåíòîì ìàññèâà, òî
          quantity++;//çíà÷èò íàøëè î÷åðåäíîå ñîâïàäåíèå
 
    return quantity;
}
 
int main(int argc, char *argv[])
{
    //1
    cout << "write sum at start"<< endl;
    double sum =0;
    cin >> sum;
 
    cout << "write percent"<< endl;
    double per_cent =0;
    cin >> per_cent;
 
    cout << "write period"<< endl;
    double period =0;
    cin >> period;  
 
    double result_income = 0;
 
    result_income = income ( sum, per_cent, period );
    cout<<" result:"<< endl;
    cout<< result_income << endl;
 
 
    //2
    cout <<endl<<" exercize 2 "<<endl;
    cout << endl <<"write number for function" << endl;
    double number = 0;
 
    cin >> number;
 
    double result = 0;
    result = _calculate_function(number);
    cout << endl << "result:" << endl;
    cout << result <<endl;
 
    //3
    cout <<endl<<" exercize 3 "<<endl;
    cout << "result:" << endl;
    _give_me_square();
 
    //4
    cout <<endl<<" exercize 4 "<<endl;
    cout << endl << "length of array" << endl;   
    int length = 0;
    cin >> length;
 
 
    double arr[length];
 
    for ( int i=0; i<length ; i++)
    {
      cout << "write elemet of array"<< endl;
      cin >> arr[i];
    };
 
    double searching_number = 0;
    cout << "what number u wanna find?"<< endl;
    cin >> searching_number;
 
    double result2 =0;
    result2 = search_quantity(arr, length, searching_number);
    cout << endl << "result:" << endl;
    cout << result2 << endl;
 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

5-ую не помню как на c++ ...
 
да не =)
это задачки для первого курса)) Самые простые)) и код примерно должен палучицца максимум строк на 30)

ЗЫ. если можно то сделайте их на языке С а не С++
 

Бретон

Ословед
ну там всего 130 строчек, и написано 4 пункта, типа как раз 30 строчек в среднем на пункт:D вроде правильно работает:D
в году же 365 дней?:D финансы особо не разбирал на лекциях так што там по формуле сложных процентов:blink:

ммм насчёт С проблемы: никогда чисто на нём не писал
чет если просто скомпилить код в С , а не с++ фаиле, то куча ошибок вылезает связаннх то ли с другими именами библиотек, то ли другими пространствами имен :blink: странно

вам точо с++ не подойдет ведь идейно его отличает лишь наличие классов, котрых нет в данной программе?
 
Мне дали задание игрушку написать и я столкнулся с проблемой. У меня дан оюъект который при нажатии кнопки "->" двигается влево, а при нажатии пробела крутиться. По отдельности все работает нормально. Но когда нажимаешь сначало "->" и не отпуская, нажимаю пробел - мой объект прекрашае движение и начинает крутить. Как сделать что бы движение объекта не прекрашалось и он крутился?
 

Arct

Ословед
да не =)
это задачки для первого курса)) Самые простые)) и код примерно должен палучицца максимум строк на 30)

ЗЫ. если можно то сделайте их на языке С а не С++
Тогда уже скажите под какую среду сделать )))
Поди что, под BC 3.1, так любимый преподами?
Вечером время будет, посижу накидаю...
 

Arct

Ословед
Бретон
Извени, а ты сам то компилил то что выложил?
Если мне память не изменяет, при объявлении массива, его длинна это константа, поправь меня если это не так...
Код:
//4
    cout <<endl<<" exercize 4 "<<endl;
    cout << endl << "length of array" << endl;   
    int length = 0;
    cin >> length;
    
    
    double arr[length];// [COLOR=Red]ЭТО ЧТО???[/COLOR]
Дальше что то даже смотреть не хочеца(((
 
Код:
//4
    cout <<endl<<" exercize 4 "<<endl;
    cout << endl << "length of array" << endl;   
    int length = 0;
    cin >> length;
    double arr[length];

//- Динамический массив создай типа 
//double *arr = new double [length]
 
Сверху