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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1063
от 25.04.2008, 15:35

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

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


Вопрос № 132980: Уважаемые эксперты помогите пожалуйста с программой.Нужно создать меню из 10-ти пунктов: 1.сортировка массива по возрастанию 2.поиск шаблона в строке 3.поиск шаблона в файле 4.сравнение двух файлов 5.игра"угадай число"<b...
Вопрос № 132983: Здраствуйте ! Установил Mandriva есть среда разаботки Qt designer но там нет компилятора подскажите Где взять и как установить . Это мой первый опыт с Unix вообще . . . Хочу разобраться. ...
Вопрос № 132991: Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++: Разработать функцию: Add(constS:string):string,возвращающую строку, в котрой к S приписана она же в перевёрнутом виде. С помощью данной функции для каждой строки из в...
Вопрос № 132993: Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++: Разработать функцию Add(const S1, S2:string):string, дописывающую все гласные латинские буквы из строки S1 в конец S2 и выдающей получившуюся строку в качестве результата...
Вопрос № 132994: Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++: Разработать функцию PreLastSpace(const S:string):integer, определяющую позицию предпоследнего пробела в строке S. С помощью данной функции вывести только такие строки из ...
Вопрос № 132995: Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++: Разработать функцию Is5Latin(constS:string):boolean, определяющую, есть ли в строке S как минимум 5 подряд идущих латинских букв. С помощью данной функции вывести только ...
Вопрос № 133010: Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++: Нужно написать программу, которая рисует на экране кривую Серпинского. Причём порядок этой кривой должен вводиться с клавиатуры во время работы программы. Заране...
Вопрос № 133058: Помогите пожалуста у меня запускаеться программа, но после ввода даных появляеться сообщение: Run-Time Check Failure #3 - The variable 'get_r' is being used without being initialized. Код: median.h #define _Median_H_<br...
Вопрос № 133111: Уважаемые эксперты, подскажите пожалуйста как мне выполнить это задание??? Как сделать то, что написанно в замечании??? Разработать класс SortedArrayOfInt - упорядоченный маасив целых чисел, наследовательный от класса ArrayOfInt. Замечание: с...
Вопрос № 133117: Напишите пожалуйста программу: Дана символьная строка, содержащая скобки 4-х видов {}, [], (), <> и заканчевающаяся точкой. Напишите рекурсивную функцию, проверяющую, содержит ли эта строка правильную скобочную запись, соответствующую след. пра...
Вопрос № 133142: Мне нужно определить размер какого-либо файла на языке Си: для этого мне нужно его открывать и вычислять через fseek и ftell. Среда BC3.1++...

Вопрос № 132.980
Уважаемые эксперты помогите пожалуйста с программой.Нужно создать меню из 10-ти пунктов:
1.сортировка массива по возрастанию
2.поиск шаблона в строке
3.поиск шаблона в файле
4.сравнение двух файлов
5.игра"угадай число"
6.игра"крестики нолики"
7.статистика встречаемых символов в файле
8.обработка матрицы
9.решение квадратного уравнения
10.обработка каталога с условием
В консоли как помощь для пользователя при работе с большой программой которая будет состоят из этих пунктов,чтобы он в случае проблемы мог вызвать любой из пунктов и узнать что конкретно выполняет этот пункт.Заранее спасибо.

Отправлен: 19.04.2008, 16:05
Вопрос задал: Magmatoid (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Dr_Andrew
Здравствуйте, Magmatoid!
Организуйте меню в виде бесконечного цикла с возможностью выхода по return:

for( ; ; )
{
cout<< "1. Отсортировать массив по возрастанию" << endl;
cout<< "2. Запустить поиск шаблона в строке" << endl;
cout<< "3. Запустить поиск шаблона в файле" << endl;
// И т.д. ...
cout<< "11. Выйти из программы" << endl;
cout<< "Введите свой выбор цифрой: " << endl;
short nChoice;
cin >> nChoice;
switch(nChoice)
{
case 1: SortMassive(); break;
case 2: SearchTemplateString(); break;
case 3: SearchTemplateString(); break;
// И т.д. ...
case 11: return 0;
default: cout << "Ошибка ввода. Повторите ввод." << endl;
}
}

Показ пунктов меню организовать в соответствующих функциях SortMassive(); и т.п.
Ответ отправил: Dr_Andrew (статус: 9-ый класс)
Ответ отправлен: 20.04.2008, 22:11


Вопрос № 132.983
Здраствуйте ! Установил Mandriva
есть среда разаботки Qt designer
но там нет компилятора
подскажите Где взять и как установить .
Это мой первый опыт с Unix вообще . . .
Хочу разобраться.
Отправлен: 19.04.2008, 16:46
Вопрос задал: Иванов Петр Николаевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Хватов Сергей
Здравствуйте, Иванов Петр Николаевич!

Во-первых, убедитесь что ваш Qt версии 4 и если это не так, установите её. Версия Qt3 уже устарела, а api там поменялся заметно.

В комплекте любой версии есть обширная и весьма толковая документация, правда на английском.

Но если вкратце, то Qt designer - это не IDE а всего лишь инструмент для разработки и построения элементов GUI - окон, диалогов,.. И он в Qt не единственный такой инструмент.

Результатом работы будут коды на C++ (и то не сразу), которые вы включаете в свой проект. И компилируете обычным компилятором (тут вариантов нет - это gcc) с использованием пары инструментов.

Вы можете использовать IDE в которую включена интеграция с Qt. Я использую Kdevelop
Ответ отправил: Хватов Сергей (статус: Практикант)
Ответ отправлен: 19.04.2008, 17:46
Оценка за ответ: 5

Отвечает: Dr_Andrew
Здравствуйте, Иванов Петр Николаевич!
1. Qt Designer - это не среда разработки, а визуальный проектировщик интерфейса, входящий в состав библиотеки Qt. Он создаёт пользовательские формы в виде xml-кода, который утилита uic, входящая в состав Qt в процессе компиляции преобразует в C++ код. Файлы пользовательских форм сохраняются с расширением *.ui и могут быть просмотрены программой KUIViewer или собственно Qt Designer.
2. Для сборки Qt-проекта используется утилита qmake, входящая в состав библиотеки Qt.
3. Общий алгоритм сборки проекта, созданного в Qt Designer.
а. Запустить Qt Designer. Выбрать в диалоговом окне "New File" - C++ Project. Появится диалоговое окно "Project Settings". В поле Project File ввести полное имя проекта (файл с расширением *.pro). NB! Для каждого проекта заводить отдельную папку, имя папки и имя проекта (без расширения) должны совпадать.
б. Выбрать в меню File - New... Выбрать заготовку одной из форм. Она будет автоматически включена в проект. Визуально спроектировать интерфейс, создать соединения сигналов и слотов. Сохранить форму (файл с расширением *.ui) в папке проекта.
в. Выбрать в меню File - New... Выбрать в диалоговом окне "New File" - C++ Main-File (main.cpp). Сохранить файл в папке проекта. Закрыть Qt Designer.
г. Открыть консоль в папке проекта (удобнее всего в контекстном меню, вызванном в папке проекта, выбрать Действия - Открыть терминал здесь). Набрать в консоли команду: qmake Имя_проекта.pro
Будет сформирован Makefile.
д. Набрать в консоли make
Будет произведена компиляция проекта. При этом автоматически вызывается утилита uic, которая сгенерирует h- и cpp-файлы формы. Последний следует открыть в любом текстовом редакторе (например, Kwrite) и написать в заготовках слотов их реализацию. После чего сохранить изменения и набрать команду make повторно. Если не было сделано ошибок, произойдёт компиляция исполняемого файла приложения с отладочной информацией.
е. Для получения релиза (без отладочной информации) набрать в консоли strip Имя_файла_приложения.
ё. Наслаждаться!
Удачи!
Ответ отправил: Dr_Andrew (статус: 9-ый класс)
Ответ отправлен: 20.04.2008, 00:58
Оценка за ответ: 5
Комментарий оценки:
И предположить не мог что мне будет выделено столько внимания - безмерно благодарен.


Вопрос № 132.991
Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++:

Разработать функцию: Add(constS:string):string,возвращающую строку, в котрой к S приписана
она же в перевёрнутом виде. С помощью данной функции для каждой строки из введённого набора приписать её же в перевёрнутом виде.

Заранее благодарю.
Отправлен: 19.04.2008, 17:43
Вопрос задал: Мыльников Василий Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Мыльников Василий Сергеевич!
Вариант реализации вашей программы смотрите в приложении. Библиотечные функции из string.h не используются. Язык С.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 23.04.2008, 07:34


Вопрос № 132.993
Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++:

Разработать функцию Add(const S1, S2:string):string, дописывающую все гласные латинские буквы из строки S1 в конец S2 и выдающей получившуюся строку в качестве результата. С помощью данной функции в каждую строку из введённого набора дописать все гласные латинские буквы из предыдущей строки. Гласными считаются следующие буквы: aeiouyAEIOUY.

Заранее благодарю.
Отправлен: 19.04.2008, 17:44
Вопрос задал: Мыльников Василий Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Мыльников Василий Сергеевич!
Вариант решения вашей задачи в приложении. Алгоритм простой: циклом пробегаем по строке s2 и если текущая буква гласная (т.е. находим ее в строке гласных букв), то дописываем ее в s1.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 23.04.2008, 08:00


Вопрос № 132.994
Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++:

Разработать функцию PreLastSpace(const S:string):integer, определяющую позицию предпоследнего пробела в строке S. С помощью данной функции вывести только такие строки из введённого набора, в которых предпоследний пробел находится в середине либо после середины строки.

Заранее благодарю.
Отправлен: 19.04.2008, 17:49
Вопрос задал: Мыльников Василий Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Мыльников Василий Сергеевич!
Вариант решения вашей задачи в приложении. Алгоритм функции: идем с конца строки и считаем пробелы, если встречаем второй, то возвращаем его индекс.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 23.04.2008, 08:12


Вопрос № 132.995
Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++:

Разработать функцию Is5Latin(constS:string):boolean, определяющую, есть ли в строке S как минимум 5 подряд идущих латинских букв. С помощью данной функции вывести только такие строки из введённого набора, в которых есть по крайней мере 5 подряд идущих латинских букв.

Заранее благодарю.
Отправлен: 19.04.2008, 17:51
Вопрос задал: Мыльников Василий Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Мыльников Василий Сергеевич!
Вариант решения вашей задачи смотрите в приложении. Алгоритм:
Однопроходный цикл по строке. Если встречается латинская буква, то увеличиваем их счетчик, иначе обнуляем его. Если счетчик достиг 5, то возвращаем 1 (истина).

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 23.04.2008, 08:20


Вопрос № 133.010
Уважаемые эксперты помогите пожайлуста решить следующую задачу по C++:

Нужно написать программу, которая рисует на экране кривую Серпинского. Причём порядок этой кривой должен вводиться с клавиатуры во время работы программы.

Заранее благодарю.
Отправлен: 19.04.2008, 19:05
Вопрос задал: Королёв Александр Павлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Королёв Александр Павлович!
Алгоритм построения кривой Серпинского можете посмотреть здесь. Помимо описания алгоритма также приводится его реализация на нескольких языках программирования, в том числе и на Си.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 22.04.2008, 10:33


Вопрос № 133.058
Помогите пожалуста у меня запускаеться программа, но после ввода даных появляеться сообщение:
Run-Time Check Failure #3 - The variable 'get_r' is being used without being initialized.

Код:

median.h

#define _Median_H_
#ifndef _Median_H_
#endif

#include<math.h>
#include <iostream>
using namespace std;
class Triangle {
double a, b, c; // длины сторон
public:
Triangle (double a, double b, double c) : a(a), b(b), c(c) {}

double perimeter () const { return a+b+c; }

double square () const {
double p = 0.5*perimeter ();
return sqrt(p*(p-a)*(p-b)*(p-c));
}

// радиус вписанной окружности
double get_r () const {
return square () / perimeter() * 2;
}

// радиус описанной окружности
double get_R () const {
return 0.25*a*b*c / square ();
}
};

main.cpp

// main.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

#include "median.h"
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
#include <iostream>
using namespace std;
int main()
{ double a,b,c,get_r,get_R;
cin>>a;
cin>>b;
cin>>c;
cout<<get_r<<endl;
cout<<get_R<<endl;
system("PAUSE");
return 0;

}
Отправлен: 20.04.2008, 00:55
Вопрос задал: LordThief (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Хватов Сергей
Здравствуйте, LordThief!

cout<
get_r - это указатель на функцию (его можно присваивать, чтобы потом косвенно вызывать) а не её значение
Ответ отправил: Хватов Сергей (статус: Практикант)
Ответ отправлен: 20.04.2008, 10:25


Вопрос № 133.111
Уважаемые эксперты, подскажите пожалуйста как мне выполнить это задание??? Как сделать то, что написанно в замечании???
Разработать класс SortedArrayOfInt - упорядоченный маасив целых чисел, наследовательный от класса ArrayOfInt.
Замечание: сортировку массива необходимо производить после любого изменение его состовляющих. Соответственно необходимо перегрузить метод доступа к его компонентам.
Отправлен: 20.04.2008, 10:56
Вопрос задал: Данилин Денис Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: mega
Здравствуйте, Данилин Денис Александрович!

задача мне показалась интересной, в приложении её решение.
не знаю, что подразумевалось под классами ArrayOfInt и SortedArrayOfInt, но если вы разберетесь с алгоритмом, то сможете реализовать его и в ваших классах.

Аналогия следующая:
vector - это ваш ArrayOfInt, у которого два виртуальных метода set и get
array - это ваш SortedArrayOfInt, который наследуется от vector и сортирует его значения (я выбрал быструю сортировку, можно применить любую другую)
cell - это ячейка массива, которая обеспечивает обратную связь с вектором
здесь, после изменения значения массива, cell после сортировки еще обновляет свой индекс в соответствии с её новым положением в массиве.

пример использования:

array a;

a.push(1);
a.push(10);
a.push(4);
a.push(2);

for(size_t i = a.size();i--;){
printf("%i ",(int)a[i]);
}

a[0] = 5;

for(size_t i = a.size();i--;){
printf("%i ",(int)a[i]);
}

a[2] = 20;

for(size_t i = a.size();i--;){
printf("%i ",(int)a[i]);
}

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

Приложение:

Ответ отправил: mega (статус: 4-ый класс)
Ответ отправлен: 20.04.2008, 12:45

Отвечает: Ross
Здравствуйте, Данилин Денис Александрович!

В замечании имеется в виду вот что: вы должны объявить в классе виртуальную функцию доступа к компонентам (мутатор) и переопределить ее в производном классе с учетом автоматической сортировки массива. В моем варианте реализации такими функциями являются set и push.

Приложение:

---------
Доступно только то, что видимо (c) Б. Керниган

Ответ отправил: Ross (статус: Практикант)
Ответ отправлен: 21.04.2008, 20:39


Вопрос № 133.117
Напишите пожалуйста программу: Дана символьная строка, содержащая скобки 4-х видов {}, [], (), <> и заканчевающаяся точкой. Напишите рекурсивную функцию, проверяющую, содержит ли эта строка правильную скобочную запись, соответствующую след. правилам:
1. Каждая открывающая скобка должна иметь парную закрывающуюся.
2. Нельзя закрыть скобку, которая не была открыта.
3. Если открыто более одной скобки, то сначало нужно закрыть последнюю.

В результате работы программа должна напечатать слово "Yes", если входная последовательность правильная и "No" если нет. Исользуйте примеры:
(). - Yes
(. - No
). - No
({<[]>}). - Yes
({<[>]}). - No
((({{[[<>]]}}))){[]<()>}. - Yes
((({{[[<>]]}})))[{]<>()}. - No
Отправлен: 20.04.2008, 11:21
Вопрос задал: Иванов, Андрей, Сергеевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ross
Здравствуйте, Иванов, Андрей, Сергеевич!

Вот решение.
Проверяет правильность расстановки скобок в переданных программе параметрах.

Приложение:

---------
Доступно только то, что видимо (c) Б. Керниган

Ответ отправил: Ross (статус: Практикант)
Ответ отправлен: 20.04.2008, 19:08

Отвечает: Kamerad
Здравствуйте, Иванов, Андрей, Сергеевич!
Вот код программы.

Приложение:

Ответ отправил: Kamerad (статус: 1-ый класс)
Ответ отправлен: 20.04.2008, 19:36

Отвечает: Терсков Сергей
Здравствуйте, Иванов, Андрей, Сергеевич!
Вариант решения вашей задачи с использованием STL смотрите в приложении. Для разбора строки используется стек. Компилятор MS VS 2005.

Приложение:

Ответ отправил: Терсков Сергей (статус: Специалист)
Ответ отправлен: 24.04.2008, 05:19


Вопрос № 133.142
Мне нужно определить размер какого-либо файла на языке Си:
для этого мне нужно его открывать и вычислять через fseek и ftell.
Среда BC3.1++
Отправлен: 20.04.2008, 13:51
Вопрос задал: Warobushek (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Aristos
Здравствуйте, Warobushek!

Программа открывает файл в бинарном виде (чтобы можно было вычислять размер не только текстовых файлов). После этого переводит (с помощью fseek) текущую позицию чтения в конец файла. Теперь с помощью функции ftell можно запросить текущую позицию, которая и будет размером файла.

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

Приложение:

---------
нет ничего невозможного

Ответ отправил: Aristos (статус: 10-ый класс)
Ответ отправлен: 20.04.2008, 14:07
Оценка за ответ: 3
Комментарий оценки:
вопрос не по тому, как сделать это тем методом который я указал, а о том, есть ли другие пути

Отвечает: Виктор Пырлик
Здравствуйте, Warobushek!

---------------------------- help ----------------
Заголовочный файл: < io.h >
Категория: Ввод/вывод
Прототип функции: long filelength(int handle);

Описание
Возвращает размер файла в байтах

Результат
В случае успеха возврощает размер файла в байтах, при ошибке, возвращает -1 и в глобальной переменной errno устанавливается номер ошибки EBADF (Плохой номер файла)
--------------------------------------------
В приложении пример

Приложение:

---------
Если ничего не помогло - надо читать инструкцию

Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Свердловская обл.
Тел.: +7(34386) 53-5-98
ICQ: 490191733
----
Ответ отправлен: 20.04.2008, 19:00
Оценка за ответ: 5
Комментарий оценки:
хоть что-то новое))) жаль, что все-равно нужно открывать файл для определения размера

Отвечает: Kamerad
Здравствуйте, Warobushek!
Функция fseek - устанавливает указатель чтения в требуемую позицию
функция ftell - возвращает текущее положение указателя

Для определения размера попробуйте использовать функцию sizeof().

Приложение:

Ответ отправил: Kamerad (статус: 1-ый класс)
Ответ отправлен: 20.04.2008, 19:15
Оценка за ответ: 3
Комментарий оценки:
log - указатель на структуру. Применяя sizeof, мы получим лишь размер указателя. вопрос не по тому, как сделать это тем методом который я указал, а о том, есть ли другие пути


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

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

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

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

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

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


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


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

∙ Версия системы: 4.91 pre 5.0 RC1 от 13.04.2008

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

В избранное