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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ffice
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 9
#1

Что означает %k в данном случае? - C++

14.11.2012, 21:08. Просмотров 650. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <conio.h>
using namespace std;
void main()
{
int i,j,k;
cout<<"razmer massiva:"<<endl;
cin>>k;
int *mas=new int[k];
int *mas1=new int[k];
for (i=0;i<k;i++)
{
cout<<"vvedite element a["<<i<<"]: ";
cin>>mas[i];
}
 
cout <<"Vvesti smeschenie: "; 
cin >>j;
for (int i=0; i<k; i++) 
{
mas1[i] = mas[(i+j)%k];
cout<<mas1[i]<<' ';
}
delete []mas;
delete []mas1;
}
что такое %k??
надо циклически передвинуть элементы массива на n позиций вправо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 21:08     Что означает %k в данном случае?
Посмотрите здесь:

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? C++
C++ как передать структуру в функцию, чтобы после выполнения функции он(массив в данном случае) вернулся измененным?
C++ Как работают вложенные структуры? Что это означает в данном случае?
Что означает pos ^= 1 в данном коде? C++
C++ Пожалуйста объясните в чем состоит перегрузка операторов данном случае?
C++ Что в данном случае означает friend?
C++ Что означает while (1) {. . . }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
14.11.2012, 21:16     Что означает %k в данном случае? #2
деление с остатком на k
ffice
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 9
14.11.2012, 21:29  [ТС]     Что означает %k в данном случае? #3
Цитата Сообщение от David Sylva Посмотреть сообщение
деление с остатком на k
спасибо, но в задании нужно передвинуть массив на n позиций, при сдвиге массива 1 2 3 4 5 на 2 получается результат 3 4 5 1 2, но если убрать %k то 3 4 5 -3368019 1564454441, вот. Преподаватель сказал что нужен %k, а я, если честно, не совсем понимаю зачем он там
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
14.11.2012, 21:45     Что означает %k в данном случае? #4
Ну смотри, дело вот в чём, так определяется индекс массива, который будет присваиваться. Например первая итерация цикла mas1[i] = mas[(i+j) % k];
Получается так mas1[0] = mas[(0+2) % 5];
соответственно (0+2) % 5 получается 2.

Добавлено через 3 минуты

Не по теме:

Преподавателю скажи, что писать void main() не корректно.

ffice
0 / 0 / 0
Регистрация: 14.11.2012
Сообщений: 9
14.11.2012, 22:15  [ТС]     Что означает %k в данном случае? #5
Цитата Сообщение от David Sylva Посмотреть сообщение
Ну смотри, дело вот в чём, так определяется индекс массива, который будет присваиваться. Например первая итерация цикла mas1[i] = mas[(i+j) % k];
Получается так mas1[0] = mas[(0+2) % 5];
соответственно (0+2) % 5 получается 2.

Добавлено через 3 минуты

Не по теме:

Преподавателю скажи, что писать void main() не корректно.




То есть 2 не надо делить на 5?)) Спасибо вам огромное)
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
14.11.2012, 22:20     Что означает %k в данном случае? #6
Как же тебе объяснить? Номер индекса определяется вот таким выражением (i+j) / k, подставляй сюда значения, которые есть в программе для каждого повторения цикла и будут получатся индексы массива.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 23:05     Что означает %k в данном случае?
Еще ссылки по теме:

C++ Что означает %1?
C++ Что означает (//) и (#)?
Как правильно вызвать конструктор вектора в данном случае? C++
Что означает int pos = 0; int value = 5; в данном коде? C++
Почему в данном случае работа с заранее выделенной памятью медленнее чем с динамической? C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6482 / 4948 / 455
Регистрация: 14.02.2011
Сообщений: 16,389
14.11.2012, 23:05     Что означает %k в данном случае? #7
Цитата Сообщение от ffice Посмотреть сообщение
То есть 2 не надо делить на 5?
остаток от деления это то что осталось
int это целочисленный тип и всяких дробей он содержать не может
т.е разделив 3 на 2 получим 1 и если заново умножить результат на 2 то мы не получим 3(потому что в остатке была 1 а мы её потеряли)
вот табличка деления чисел на 3
х/3 / %
0/3 0 0
1/3 0 1
2/3 0 2
3/3 1 0
4/3 1 1
5/3 1 2

иногда это называется "Делить по модулю"
можно проверить этим кратность числу если остаток равен 0 то делитель кратен делимому
например проверить четное число или нет
C++
1
2
3
4
if(x%2==0)
 //четное
else
//нечетное
в жизни это правило(деление по модулю)
используется в определении времени
например в 14 часов мы говорим 2 часа
14%12=2

Добавлено через 6 минут
Цитата Сообщение от ffice Посмотреть сообщение
То есть 2 не надо делить на 5?))
Цитата Сообщение от David Sylva Посмотреть сообщение
(0+2) % 5 получается 2.
тот же результат получится
(5+2) % 5 получается 2.
(10+2) % 5 получается 2.
(0+7) % 5 получается 2.
(5+7) % 5 получается 2.
ну и так далее
остаток никогда не будет превышать 5

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
14%12=2
это хорошо известно ученикам начальной школы, а потом когда научатся десятичным дробям, почему то многие забывают, что такое остаток от деления
Yandex
Объявления
14.11.2012, 23:05     Что означает %k в данном случае?
Ответ Создать тему
Опции темы

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