Форум программистов, компьютерный форум CyberForum.ru

Не понятно пару команд в программе. - C++

Восстановить пароль Регистрация
 
vasapetrenko
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 15
25.09.2012, 15:46     Не понятно пару команд в программе. #1
Есть программа, и мне не понятно пару команд, кому не трудно, опишите их принцип работы! Очень нужно! Благодарностью заранее!)
Вот программа:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
    setlocale(LC_ALL, "ukrainian");
    cout<<"Введiть рiк\n";
    int year=0;
    cin>>year;
    char* animalName[12]={"щура","корови","тигра","зайця","дракона","змiї","коня","вiвцi","мавпи","курки","собаки","свинi"};
    cout<<"Рiк "<<year<<" являється роком  "<<animalName[(year-1984)%12];
    getch();
}
Как работают вот эти операторы и команды:char* animalName[12]={"щура",..."свинi"};,

<<animalName[(year-1984)%12];<---И подробней как работает вот это!

и это особенно (year-1984)%12
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2012, 15:46     Не понятно пару команд в программе.
Посмотрите здесь:

не понятно... C++
Не понятно C++
C++ Выполнение консольных команд в программе
Не понятно пару моментов C++
как i двигается понятно но вот не понятно как это делает j ? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
25.09.2012, 15:58     Не понятно пару команд в программе. #2
Цитата Сообщение от vasapetrenko Посмотреть сообщение
и это особенно (year-1984)%12
здесь берется остаток от деления на 12 от (year-1984)
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
25.09.2012, 16:00     Не понятно пару команд в программе. #3
C++
1
2
char* animalName[12]={"щура",..."свинi"}; //массив указателей на строки
animalName[(year-1984)%12]; // (year-1984)%12 в зависимости от значения year будет выбрана строка из массива с индексом от 0 до 12
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
25.09.2012, 16:03     Не понятно пару команд в программе. #4
Цитата Сообщение от yuron_477 Посмотреть сообщение
с индексом от 0 до 12
поправлю... до 11

Добавлено через 25 секунд
всего 12 элементов
vasapetrenko
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 15
25.09.2012, 16:21  [ТС]     Не понятно пару команд в программе. #5
char* <----и можно еще об этом пару слов))
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
26.09.2012, 06:18     Не понятно пару команд в программе. #6
Цитата Сообщение от vasapetrenko Посмотреть сообщение
char*
это указатель на массив символов (на строку)

Добавлено через 3 минуты
C++
1
2
  char* abc = "0123";
   char cde[] = {'0','1','2','3'};
здесь все переменные равны
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
26.09.2012, 06:28     Не понятно пару команд в программе. #7
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
здесь все переменные равны
Ой ли?
в одной строка
в другой набор символов
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.09.2012, 06:52     Не понятно пару команд в программе. #8
ValeryS, Ага, причем первый пример
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
char* abc = "0123";
есть UB, и компиляторы не должны данный код допускать.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.09.2012, 09:22     Не понятно пару команд в программе. #9
Toshkarik, UB это попытка изменения данных в строковом литерале. Хотя конечно хотелось, чтобы компиляторы не пропускали данный код.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.09.2012, 09:41     Не понятно пару команд в программе. #10
ForEveR, UB тут попытка присвоить char * - const char *, то есть заведомое снятие константности с константного объекта, а изменение уже и подавно.
Рыжий Лис
Просто Лис
 Аватар для Рыжий Лис
209 / 164 / 44
Регистрация: 17.05.2012
Сообщений: 611
Записей в блоге: 4
26.09.2012, 16:15     Не понятно пару команд в программе. #11
Цитата Сообщение от ValeryS Посмотреть сообщение
Ой ли?
в одной строка
в другой набор символов
точно. Так правильней:
C++
1
2
const char* abc = "0123";
char cde[] = {'0','1','2','3','\0'};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2012, 16:33     Не понятно пару команд в программе.
Еще ссылки по теме:

Преобразовать строку, удалив из нее каждую пару символов ‘<<’ и повторив каждую пару символов ‘>>’. C++
Создайте функцию, которая пару последовательных чисел Фибоначчи преобразует в следующую пару C++
C++ - Выполнение консольных команд в программе и получение результата их работы C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.09.2012, 16:33     Не понятно пару команд в программе. #12
Рыжий Лис, корректны сами записи, но не
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
здесь все переменные равны
В первом случае указатель на константные данные типа char. Во втором - массив типа char. Между ними достаточно большая разница.
Yandex
Объявления
26.09.2012, 16:33     Не понятно пару команд в программе.
Ответ Создать тему
Опции темы

Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru