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

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


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

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

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

Выпуск № 1117
от 28.09.2008, 14:05

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

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


Вопрос № 144742: Здравствуйте, помогите в написании двух программ желательно с комментами: 1. Программа для обмена двух значений переменных местами с помощью указателей. 2. Программа для обмена двух значений переменных местами с помощью ссылочных параметров...
Вопрос № 144744: Добрый день. Прошу помощи в написании программы на языке С++. Программа для изменения значений массива путём возведения их в квадрат. После этого нужно вывести кубы значений с полученного массива. Всё это делать с помощью двух функций: "...
Вопрос № 144745: Добрый день вам ещё раз. Прошу помощи в написании программы для инверсирования строки. Т.е. сначала вводим строку и передаем адрес строки в функцию sr_inv(), которая и будет осуществлять инверсию. Спасибо. ...

Вопрос № 144.742
Здравствуйте, помогите в написании двух программ желательно с комментами:

1. Программа для обмена двух значений переменных местами с помощью указателей.
2. Программа для обмена двух значений переменных местами с помощью ссылочных параметров. Спасибо.
Отправлен: 23.09.2008, 12:11
Вопрос задал: Compile (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

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

Реализация алгоритмов обеих программ на языке С++ в приложении. Будут вопросы - задавайте в мини-форум.

Приложение:

---------
Не ошибается лишь тот, кто ничего не делает. Не бойтесь ошибаться. Бойтесь повторять ошибки. (Теодор Рузвельт, 1858 - 1919)

Ответ отправил: Николай // МMM (статус: Студент)
Ответ отправлен: 23.09.2008, 12:40

Отвечает: SiRuS
Здравствуйте, Compile!
Реализация в приложении. Никаких проверок не делалось.

Приложение:

Ответ отправил: SiRuS (статус: 5-ый класс)
Ответ отправлен: 23.09.2008, 12:49

Отвечает: Sk0rp
Здравствуйте, Compile!
Предлагаю свои реализации в приложении. Если нужно еще проще, вот пример частной реализации для обмена целых чисел:

void swap(int* one, int* two)
{
int tmp = *two;
*two = *one;
*one = tmp;
}

void swap(int& one, int& two) // будет автоматически скомпилирована для любых 2х одинаковых ссылок
{
int tmp = two;
two = one;
one = tmp;
}


имена функцмй могут совпадать, т.к. набор параметров разный и работает перегрузка функций.

Приложение:

Ответ отправил: Sk0rp (статус: 4-ый класс)
Ответ отправлен: 23.09.2008, 12:51

Отвечает: realbustard
Здравствуйте, Compile!

Передавая указатель, мы передаем адрес объекта и следовательно, функция может манипулировать значением по этому адресу. Синтаксис такой передачи несколько громоздок. И, кроме того нарушается принцип инкапсуляции.

При передаче по ссылке мы передаем именно значения, а не адреса. В функции obmen() эти переменные идентифицируются как ссылки. Такой синтаксис менее громоздок чем предыдущий, кроме того, не нарушается принцип инкапсуляции.

Приложение:

---------
Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)

Ответ отправил: realbustard (статус: 3-ий класс)
Ответ отправлен: 23.09.2008, 15:30


Вопрос № 144.744
Добрый день. Прошу помощи в написании программы на языке С++.
Программа для изменения значений массива путём возведения их в квадрат.
После этого нужно вывести кубы значений с полученного массива.
Всё это делать с помощью двух функций: "quad" - для возведения в квадрат и "cub" - в куб.
Спасибо.
Отправлен: 23.09.2008, 12:12
Вопрос задал: Compile (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

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

Реализиация алгоритма на языке С++ в приложении. Скомпил. в MS Visual Studio 2005. Будут вопросы - задавайте в мини-форум вопроса.

Приложение:

---------
Не ошибается лишь тот, кто ничего не делает. Не бойтесь ошибаться. Бойтесь повторять ошибки. (Теодор Рузвельт, 1858 - 1919)

Ответ отправил: Николай // МMM (статус: Студент)
Ответ отправлен: 23.09.2008, 12:52

Отвечает: Sk0rp
Здравствуйте, Compile!
Реализация в приложении

функции quad (логичнее к стати назвать sqr, т.к. quad - это по названию скорее 4я степень) и cub сделаны в виде шаблонов, что бы можно было использовать с любыми числами, если достаточно только для float, то можно заменить объявления на:
inline float quad(float& val)
и
inline float cub(const float& val)
строчки template <class T> удалить

Приложение:

Ответ отправил: Sk0rp (статус: 4-ый класс)
Ответ отправлен: 23.09.2008, 13:08

Отвечает: realbustard
Здравствуйте, Compile!
Если я правильно вас понял, то элементы массива нужно возвести в квадрат, затем уже эти измененные элементы возвести в куб. Именно это и делает приведенный в приложении код.

Приложение:

---------
Учись так, как-будто собираешься жить вечно; живи так, как-будто завтра умрешь (Отто фон Бисмарк)

Ответ отправил: realbustard (статус: 3-ий класс)
Ответ отправлен: 23.09.2008, 13:42

Отвечает: SiRuS
Здравствуйте, Compile!
Программа !изменяет! массив, возводя в квадрат его элементы.
И потом изменяет !полученный массив!, возводя в куб его элементы.
з.ы. сделана проверка лишь на размещение массива в памяти.

Приложение:

Ответ отправил: SiRuS (статус: 5-ый класс)
Ответ отправлен: 23.09.2008, 14:54


Вопрос № 144.745
Добрый день вам ещё раз. Прошу помощи в написании программы для инверсирования строки. Т.е. сначала вводим строку и передаем адрес строки в функцию sr_inv(), которая и будет осуществлять инверсию. Спасибо.
Отправлен: 23.09.2008, 12:15
Вопрос задал: Compile (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

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

Аналогичные ответы можно посмотреть в отетах на вопрос № 144646. Также в приложении есть вариант решения задачи с помощью функции. Будут впросы - задавайте в мини-форум вопроса.

Вопрос №144646.
Здравствуйте уважаемые эксперты!
Помогите написать программу
Необходимо реализовать зеркальную перестановку символов в введенной строке, например: введенная строка "эксперт" должна после выводиться "трепскэ"
Зарание благодарен за помощь!

Отправил: Цыбизов Сергей Викторович, Посетитель
Дата отправки: 22.09.2008, 11:27
Поступило ответов: 6
Ответ № 1 от Sk0rp, 2-ой класс
Здравствуйте, Цыбизов Сергей Викторович!
Непосредственную перестановку делает функция permutation
это классическая реализация подобной задачи, без использования дополнительной памяти и за оптимальное время.
Код:
#include <string.h>
#include <iostream>

void permutation(char* str)
{
for(char* end = str + strlen(str) - 1; str < end; ++str, --end){
char tmp = *str;
*str = *end;
*end = tmp;
}
}

int _tmain(int argc, _TCHAR* argv[])
{
char buf[128];
std::cin.getline(buf, 127); // читаем строку не длиннее чем выделенный буфер

permutation(buf);
std::cout << buf << std::endl; // выводим что получилось

return 0;
}

Ответ № 2 от Баранов Владимир aka C4tnt, 4-ый класс
Здравствуйте, Цыбизов Сергей Викторович!

int _tmain(int argc, _TCHAR* argv[])
{
char tb[100];

gets(tb); //Ввод строки
_strrev(tb); //Инвертирует строку
printf("%s",tb);// Вывод строки

return 0;
}
Ответ № 3 от shayen, 6-ой класс
Здравствуйте, Цыбизов Сергей Викторович!
В приложении код скомпилированный в VS2005.
Код:
/*Необходимо реализовать зеркальную перестановку символов в введенной
строке,например: введенная строка "эксперт" должна после выводиться
"трепскэ"*/
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
void main()
{
const int len=180;
int height;
char temp;
char string[len];
cout<<"Enter string : ";//Просим пользователя ввести строку
gets(string);
height=strlen(string)-1;//Определяем длину строки без символа её конца
for(int i=0; i<(height/2); i++)//Меняем местами элементы строки
{
temp=string[i];
string[i]=string[heig ht-i];
string[height-i]=temp;
}
//Выводим результат
cout<<string;
getch();
}


Ответ № 4 от realbustard, 1-ый класс
Здравствуйте, Цыбизов Сергей Викторович!
Код программы в приложении.
Код:
//перестановка символов в введенной строке

//Определяет ввод-вывод
#include <iostream>
//Необходим для использования функции gets()
#include <stdio.h>
//Задаем стандартное пространство имен
using namespace std;

//Функция переворота строки
void reverse(char*,char*,int);

int main()
{
//Исходная строка
char str1[100];
//Перевернутая строка
char str2[100];

//Вводим строку
cout<<"BBEDITE CTPOKY ";

//Считываем строку из потока
gets(str1);

//Длина строки
int len;
len=strlen(str1);

//Запускаем функцию переворота
reverse(str1,str2,len);

//Последний символ перевернутой строки должен быть 0
str2[len]='


В избранное