Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 03:13   #1
sPYfromFranik
Новичок
Джуниор
 
Регистрация: 06.12.2011
Сообщений: 2
Печаль Разжуйте определенную часть написания программы.

Нужно написать программу, в которой вводиться с клавиатуры Название месяца на английском, а выводится у кого из друзей и когда выводится день рождения (текст вообщем).
Сложность состоит в том, что программу нужно написать с помощью 16-ти дополнительных ф-ций, из которых 12-это просто вывод текста для каждого месяца, 1-на ф-ция (должна быть void) для вывода сообщения для ввода названия месяца и сам ввод названия. Остальные 3 ф-ции для определения точных названий. То есть, определения названия должно проходить через switch по первой букве в основной ф-ции и если например введено MAY, нужно в этой (одной из трех) ф-ции проверить следующую букву не введено ли MARCH. Также отдельно две на JANUARY, JUNE, JULY и на APRIL, AUGUST.
В принципе сложного ничего нет, но есть проблема которая все осложняет.
В данной программе нельзя использовать массивы, а нужно использовать enum и идентификаторы. Также чтобы получить значение из ф-ции void нужно дописать знак '&' к чему-то.
И вот я не могу понять как сделать последние пункты. И как потом получить первые буквы для проверки из названия?

Разжуйте плиз ту часть где нужно получить данные и до момента где идет проверка с помощью switch. Дальше уже все понятно...
Заранее спасибо.
sPYfromFranik вне форума Ответить с цитированием
Старый 06.12.2011, 07:57   #2
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Вы можете передать в функцию аргумент по указателю(его адрес) или же по ссылке. Например:
Код:
#include <iostream>
#include <conio.h>
void argument_by_pointer(int* arg)
{
    /*
      Оператор * перед именем переменной это разыменование указателя - обращение по адресу
    */
    *arg = 1;
}
void argument_by_reference(int& arg)
{
    /*
      В данном случае arg отличается от локальной переменной или обычного(не ссылочного и не указательного типа)
      переменной тем, что значение после работы функции изменится. В тоже время разыменование не требуется.
    */
    arg = 2;
}
void argument_by_copy(int arg)
{
    /*
      После работы функции ничего не изменится, в данном случае передается не сам переменная, а ее копия
      созданная для функции, которая исчезнет вместо со всеми локальными переменными функции, после завершения
      ее работы.
    */
    arg = 3;
}

int main( int argc, char** argv )
{
    int value = 0;
    // Оператор & перед именем переменной возвращает указатель на ее - переменную содержащую адрес этой переменной
    argument_by_pointer(&value);
    std::cout << "argument_by_pointer: " << value << std::endl;
    // Адрес переменно извлекается автоматически, компилятором, потому вручную это делать не требуется
    argument_by_reference(value);
    std::cout << "argument_by_reference: " << value << std::endl;
    // А тут адрес передавать и вовсе не нужно, компиляторо просто передает копию переменной
    argument_by_copy(value);
    std::cout << "argument_by_copy: " << value << std::endl;

    // Для закрепления знаний, пример работы с переменной по указателю и по ссылке

    value = 15;
    std::cout << "Value before = " << value << std::endl;
    // Это указатель
    int* pointer = &value;
    *pointer = 10;
    std::cout << "*pointer = " << *pointer << " and value = " << value << std::endl;

    // Это ссылка
    int& reference = value;
    reference = 12;
    std::cout << "reference = " << reference << " and value = " << value << std::endl;

    // А это просто копия
    int copy = value;
    copy = 11;
    std::cout << "copy = " << copy << " and value = " << value << std::endl;
    getch();
}
Почитайте про указатели( который кстати в С++ являются основой массивов ) и про ссылки.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 06.12.2011, 07:57   #3
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Вы можете передать в функцию аргумент по указателю(его адрес) или же по ссылке. Например:
Код:
#include <iostream>
#include <conio.h>
void argument_by_pointer(int* arg)
{
    /*
      Оператор * перед именем переменной это разыменование указателя - обращение по адресу
    */
    *arg = 1;
}
void argument_by_reference(int& arg)
{
    /*
      В данном случае arg отличается от локальной переменной или обычного(не ссылочного и не указательного типа)
      переменной тем, что значение после работы функции изменится. В тоже время разыменование не требуется.
    */
    arg = 2;
}
void argument_by_copy(int arg)
{
    /*
      После работы функции ничего не изменится, в данном случае передается не сам переменная, а ее копия
      созданная для функции, которая исчезнет вместо со всеми локальными переменными функции, после завершения
      ее работы.
    */
    arg = 3;
}

int main( int argc, char** argv )
{
    int value = 0;
    // Оператор & перед именем переменной возвращает указатель на ее - переменную содержащую адрес этой переменной
    argument_by_pointer(&value);
    std::cout << "argument_by_pointer: " << value << std::endl;
    // Адрес переменно извлекается автоматически, компилятором, потому вручную это делать не требуется
    argument_by_reference(value);
    std::cout << "argument_by_reference: " << value << std::endl;
    // А тут адрес передавать и вовсе не нужно, компиляторо просто передает копию переменной
    argument_by_copy(value);
    std::cout << "argument_by_copy: " << value << std::endl;

    // Для закрепления знаний, пример работы с переменной по указателю и по ссылке

    value = 15;
    std::cout << "Value before = " << value << std::endl;
    // Это указатель
    int* pointer = &value;
    *pointer = 10;
    std::cout << "*pointer = " << *pointer << " and value = " << value << std::endl;

    // Это ссылка
    int& reference = value;
    reference = 12;
    std::cout << "reference = " << reference << " and value = " << value << std::endl;

    // А это просто копия
    int copy = value;
    copy = 11;
    std::cout << "copy = " << copy << " and value = " << value << std::endl;
    getch();
}
Почитайте про указатели( который кстати в С++ являются основой массивов ) и про ссылки.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разработать алгоритм программы и ее написания katerina17171 Помощь студентам 3 15.10.2011 07:11
Нужен программист, для написания программы. 496385290 Фриланс 4 28.09.2011 11:33
Написания программы на С,С++ или С# Брон Саша Фриланс 0 25.05.2011 16:03
Отслеживание процесса написания программы Buravsic Софт 17 19.07.2009 15:41