Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Лысков Игорь Витальевич
Статус: Специалист
Рейтинг: 268
∙ повысить рейтинг >>
Николай // Programmator
Статус: 10-й класс
Рейтинг: 116
∙ повысить рейтинг >>
Micren
Статус: 8-й класс
Рейтинг: 61
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1212
от 12.01.2009, 10:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 464, Экспертов: 46
В номере:Вопросов: 6, Ответов: 11

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 156802: Определить, сколько раз в строке встречается заданное слово....


Вопрос № 156817: Дана последовательность действительных чисел а1,а2 ..., аn. Заменить все ее члены, большие данного числа Д этим числом (Д). Подсчитать количество замен....
Вопрос № 156824: Даны натуральные числа n и k, n> 1. Напечатать k десятичных знаков числа /n. Программа должна использовать только целые переменные.Желательно решить как можно проще, при помощи функции....
Вопрос № 156834: Здравствуйте! Помогите пожалуйста. Заранее СПАСИБО! Работа со строками. Текстовые файлы. Задание. Составить программу, выполняющую преобразования над текстовыми файлами согласно заданному варианту. Исходный текстовый файл создается при помощи реда...
Вопрос № 156865: Здравствуйте, уважаемые эксперты! Помогите пожалуйста, отсортировать этот вот одномерный массив, чтобы в первой половине были элементы с нечетных позиций, а во второй половине - с четных., без использования спец. функций! # include <iost...
Вопрос № 156872: Вычислить средний балл студентов группы, если известны оценки каждого студента по программированию, периферийным устройствам и базам данных. Распечатать список студентов имеющих средний балл выше среднего....

Вопрос № 156.802
Определить, сколько раз в строке встречается заданное слово.
Отправлен: 06.01.2009, 11:43
Вопрос задал: Ryabichko (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: realbustard
Здравствуйте, Ryabichko!
Задача решена с использованием стандартного контейнера vector.
Будут вопросы по коду, задавайте в минифорум.
Удачи!!!
Код:

#include<iostream> //определяет потоковый ввод-вывод
#include<vector> //Позволяет использовать стандартный контейнер vector
#include<string> //Позволяет использовать стандартный класс string

using namespace std;

struct Pair{
string name; //Слово
double val; //Количество его повторений в строке
};

vector<Pair> pairs; //Вектор из элементов типа Pair
double& value(const string&); //Ф-я для подсчета числа вхождений слов в строку

int main()
{
string buf;
while(cin >> buf) //Считыван ие очередного слова
value(buf)++; //Увеличение счетчика вхождений слова в строку

//Вывод результа подсчета с использованием итераторов
for (vector<Pair>::const_iterator p = pairs.begin() ; p != pairs.end() ; ++p)
cout<<p->name<<": "<<p->val<<" ";

return 0;
}


double& value(const string& s)
{
for (int i = 0 ; i < pairs.size() ; i++)
if (s==pairs[i].name) //Если слово уже есть в векторе,
return pairs[i].val; //увеличиваем значение счетчика на 1

Pair p={s,0}; //Если нет, создаем новый объект
pairs.push_back(p); //и помещаем его в конец вектора
return pairs[pairs.size()-1].val; //увеличиваем значение счетчика на 1
}


---------
Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
Ответ отправил: realbustard (статус: Студент)
Ответ отправлен: 06.01.2009, 12:15

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240416 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Лысков Игорь Витальевич
    Здравствуйте, Ryabichko!
    Ну и я предложу свой вариант решения задачки (в приложении).
    Без ввода, только идею разбора строки на подстроки.

    Приложение:

    ---------
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
    Ответ отправлен: 06.01.2009, 15:52

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240434 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 156.817
    Дана последовательность действительных чисел а1,а2 ..., аn. Заменить все ее члены, большие данного числа Д этим числом (Д). Подсчитать количество замен.
    Отправлен: 06.01.2009, 14:29
    Вопрос задал: Ryabichko (статус: Посетитель)
    Всего ответов: 3
    Мини-форум вопроса >>> (сообщений: 2)

    Отвечает: Николай // Programmator
    Здравствуйте, Ryabichko!

    Комментированый код С++ программы в приложении. Скомпилировано и проверено в среде MS VS Studio 2005.

    Удачи Вам!!!

    Приложение:

    Ответ отправил: Николай // Programmator (статус: 10-й класс)
    Ответ отправлен: 06.01.2009, 15:03

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240431 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Отвечает: Micren
    Здравствуйте, Ryabichko!
    Программа тестировалась MS Visual Studio 2008

    Приложение:

    Ответ отправил: Micren (статус: 8-й класс)
    Ответ отправлен: 06.01.2009, 17:29

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240440 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Emmanuel Goldstein
    Здравствуйте, Ryabichko!

    Код в приложении.

    Tестил в BC++3.0

    Приложение:

    ---------
    Основное правило хакера: "Научился сам, научи другого".

    Ответ отправил: Emmanuel Goldstein (статус: 3-й класс)
    Ответ отправлен: 06.01.2009, 17:38

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240441 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 156.824
    Даны натуральные числа n и k, n> 1. Напечатать k десятичных знаков числа /n. Программа должна использовать только целые переменные.Желательно решить как можно проще, при помощи функции.
    Отправлен: 06.01.2009, 16:12
    Вопрос задал: Ryabichko (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 3)

    Отвечает: Николай // Programmator
    Здравствуйте, Ryabichko!

    Ну если решить попроще и выходя из дополнительной информации из мини-форума, что можно использовать и действительные переменные - комментированый код решения задачи в приложении. Скомпилировано и проверено в среде MS VS 2005. Будут вопросы - пишите в мини-форум.

    Приложение:

    Ответ отправил: Николай // Programmator (статус: 10-й класс)
    Ответ отправлен: 06.01.2009, 17:02

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240438 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 156.834
    Здравствуйте! Помогите пожалуйста. Заранее СПАСИБО! Работа со строками. Текстовые файлы.
    Задание. Составить программу, выполняющую преобразования над текстовыми файлами согласно заданному варианту. Исходный текстовый файл создается при помощи редактора текста и может содержать произвольную последовательность различных символов произвольной длины.
    Подсчитайте количество указанных цепочек в файле, найденных по образцу. Причем в образце символ "+" означает один произвольный символ, а символ "*" – произвольную цепочку длиной не более 5 символов.
    Отправлен: 06.01.2009, 18:41
    Вопрос задал: Павлов Павел (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 5)

    Отвечает: Ilkras
    Здравствуйте, Павлов Павел!
    Можно преобразовать "образец" в regular expression и воспользоваться существующими библиотеками для поиска из кода. Подробней об этом написано в этой статье
    Ответ отправил: Ilkras (статус: Студент)
    Ответ отправлен: 06.01.2009, 20:15

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240447 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 4


    Вопрос № 156.865
    Здравствуйте, уважаемые эксперты!
    Помогите пожалуйста, отсортировать этот вот одномерный массив, чтобы в первой половине были элементы с нечетных позиций, а во второй половине - с четных., без использования спец. функций!

    # include <iostream.h>
    # include <math.h>
    # include <conio.h>
    #pragma argsused
    int main(){
    const int N=10;
    int a[N]={-1,0,5,1,21,0,-10,-7,9,0};
    int n, m, nul_1, nul_2, summa, temp, proizv_, polojit, otriz, middle;
    int*b=a;

    int n_max=0;
    for (n=0; n<N; n++) if (a[n]>a[n_max]) n_max=n;
    cout<<" nomer max= "<<n_max;

    for (n=0; n<N-1; n++) if (a[n]==0) {nul_1=n; break;}
    for (n=0; n<N; n++) if (b[n]==a[n]) nul_2=n;

    cout<<" nul_1= "<<nul_1<<" nul_2= "<<nul_2<<endl;

    for (summa=0, n=nul_1; n<nul_2; n++) summa+=a[n];

    cout<<" Summa elem-v, rasp-h m/u 1-m i 2-m nulevymi elem-mi: ";
    cout<<summa<<" ";


    getch();

    return 0;

    заранее большое спасибо
    Отправлен: 07.01.2009, 03:52
    Вопрос задала: Савченко Ольга Сергеевна (статус: Посетитель)
    Всего ответов: 3
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Лысков Игорь Витальевич
    Здравствуйте, Савченко Ольга Сергеевна!
    Если число элементов массива четное, то требуемую сортировку можно сделать, например, так:
    Код:
    void sortParity(int * pStr, int len)
    {
    int i, j, c, k = (len>>1)-1;

    for (i=0; i<k; i++)
    {
    for (j=0; j<k-i; j++)
    {
    c=pStr[i+(j<<1)+1];
    pStr[i+(j<<1)+1]=pStr[i+(j<<1)+2];
    pStr[i+(j<<1)+2]=c;
    }
    }
    }

    int main(int argc, char* argv[])
    {
    const int N=10;
    int a[N]={-1,0,5,1,21,0,-10,-7,9,0};

    sortParity (a, N);

    return 0;
    }

    ---------
    Удачи!
    Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
    Ответ отправлен: 07.01.2009, 04:42

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240476 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает: Micren
    Здравствуйте, Савченко Ольга Сергеевна!
    Программа тестирована на Microsoft Visual Studio 2008

    Поскольку не ясно нужно ли, после перестановки элементов с четными индексами и нечетными, сортировать каждую из половин. Я написал и это. Если не нужно, то просто опустите эту часть.

    Приложение:

    Ответ отправил: Micren (статус: 8-й класс)
    Ответ отправлен: 07.01.2009, 05:14

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240478 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5


    Отвечает: realbustard
    Здравствуйте, Савченко Ольга Сергеевна!
    Будут вопросы по коду, пишите в личку.
    Компилировано в MS Visual Studio 2005.
    Код:

    //Определяет потоковый ввод/вывод
    #include <iostream>
    //Позволяют использовать ф-ю rand()
    #include <time.h>
    #include <stdlib.h>
    using namespace std;

    void SortFunc(int*,int); //Ф-я перестановки элементов

    int main()
    {
    srand(time(NULL)); //Для генерации случайных чисел
    setlocale(LC_CTYPE, "Russian"); //Поддержка кириллических символов

    int size;
    cout << " Введите размер массива: " ; //Приглашение на ввод размерности массива
    cin >> size;
    cout << endl;

    int* arr = new int[size]; //Выделение памяти для массива

    for (int i = 0 ; i < size ; i++){
    arr[i]=rand()%20-5; //Заполнение массива
    cout<<arr[i]<<" "; //Вывод массива
    }

    SortFunc( arr, size ); //Ф-я перестановки элементов

    delete [] arr;
    return 0;
    }

    void SortFunc(int* arr,int size)
    {

    int* arr1=new int[size]; //Массив для сортированых элементов

    int* pFirst=arr; //указатель на начало исходного массива
    int* pFirst1=arr1; //указатель на начало отсортированого массива

    //Если к==0 копируются положительные элементы
    //если к==1 отрицательные
    for(int k=0;k<2;k++){
    //вначале каждого цикла указатель указывает на
    //первый элемент оригинального массива
    pFirst=&arr[0];
    for(int i=0;i<size;i++,pFirst++){
    //копирование положительных элементов
    if(!k){
    if(!(i%2)){
    *pFirst1=*pFirst;
    pFirst1++;
    }
    }
    //копиро вание отрицательных элементов
    if(k){
    if(i%2){
    *pFirst1=*pFirst;
    pFirst1++;
    }
    }
    }
    }

    cout << endl;

    //Вывод полученного массива
    for(int i=0;i<size;i++)
    cout<<arr1[i]<<' ';

    cout<<endl;

    delete [] arr1; //Очистка памяти

    }

    ---------
    Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)
    Ответ отправил: realbustard (статус: Студент)
    Ответ отправлен: 07.01.2009, 09:43

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240480 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 156.872
    Вычислить средний балл студентов группы, если известны оценки каждого студента по программированию, периферийным устройствам и базам данных. Распечатать список студентов имеющих средний балл выше среднего.
    Отправлен: 07.01.2009, 09:14
    Вопрос задал: Ryabichko (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 1)

    Отвечает: Micren
    Здравствуйте, Ryabichko!

    Программа в приложении.
    Удачи!

    Редактирование. Исправлено по просьбе автора ответа.
    --------
    ∙ Отредактировал: Зенченко Константин Николаевич, Профессор
    ∙ Дата редактирования: 08.01.2009, 22:46 (время московское)

    Приложение:

    Ответ отправил: Micren (статус: 8-й класс)
    Ответ отправлен: 07.01.2009, 13:19

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 240489 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

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


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное