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

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

Войти
Регистрация
Восстановить пароль
 
 
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
#1

Странное решение - C++

01.09.2009, 16:21. Просмотров 961. Ответов 17
Метки нет (Все метки)

Тут встретился в книжонке с таким выводом 2-мерного массива, вроде простой, но вывод странный. Не дадите комент по странной строке:
Код
nums[t][i] = (t*4)+i+1;
Весь код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main()
{
int t,i, nums[3][4];
for(t = 0; t < 3; t++){
    for(i = 0; i < 4; i++){
    nums[t][i] = (t*4)+i+1;
cout<<endl<<nums[t][i] <<' ';
    }
}
cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2009, 16:21     Странное решение
Посмотрите здесь:

Странное поведение присваивания - C++
class Lexem { public: uint id; uint value; uint line; uint pos; bool operator==(int a){ return a...

странное поведение fstream - C++
ниже представлен черновой код курсача. как из него видно я пытаюсь работать с файлами, но у меня ничего не выходит. а именно: я создаю...

Странное поведение getline - C++
В программе в двух местах используеться getline. В первом случае все супер : string ownerName; getline (cin, ownerName); А во...

Странное предупреждение GCC - C++
В функции есть строчки и компилятор ругается на последнуюю: char *p = NULL; ...

Странное поведение указателей - C++
Здравствуйте, может кто-нибудь объяснить столь странное поведение указателя. Вот код. int main() { const int Width = 3; ...

Странное поведение string - C++
Здравствуйте. Сейчас я пытаюсь скомпилировать под Windows проект, который ранее писался под Linux. Делаю я это с помощью MinGW от...

Странное условие задания - C++
У Дейтлов есть задачка: Программу шифрования я написал. А вот с чем работать программе дешифрования? Например, вводим 1234. С...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
01.09.2009, 16:25     Странное решение #2
ну так, это ж не вывод, а ввод, массив заполняется числами от 1 до 12
а вывод строкой ниже
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 16:30     Странное решение #3
C++
1
nums[t][i] = (t*4)+i+1;
nums[номер_строки][номер_столбца] присваивается (номер_строки*4)+номер_столбца+1;
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 16:32     Странное решение #4
Цитата Сообщение от Syltan Посмотреть сообщение
но вывод странный
В чем странность то?
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
01.09.2009, 16:53  [ТС]     Странное решение #5

nums[t][i]
присваивается (номер_строки*4)+номер_столбца+1;

Получается как-то не логично. Ну начнём считать вручную. За первым разом должно вывестись.
1*4+1+1=6
2*4+2+1=11
3*4+3+1=16
.....................
Что-то я не възжаю, как оно считается,если брать такую формулу решения.
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 16:59     Странное решение #6
Syltan,
C++
1
cout << endl << ((t*sizeof(int))+i) << " " << *(*(nums + t) + i);
если адрес вывести то
C++
1
&(*(*(nums + t) + i))
разница адресов четверка( 4 )
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
01.09.2009, 17:00     Странное решение #7
t принимает значения не от 1 до 3, а от 0 до 2,
i в свою очередь от 0 до 3
и все предельно логично
у элемента nums[0][0] значение 1
nums[0][1] значение 2
nums[0][2] значение 3
nums[0][3] значение 4
nums[1][0] значение 5
и т.д.
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:12     Странное решение #8
Syltan, кстати ошибка в коде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
int t,i, nums[3][4];
for(t = 0; t < 3; t++){
        for(i = 0; i < 4; i++){
        nums[t][i] = (t*4)+i+1;
cout<<endl<<nums[t][i] <<' ';
        }
}
cin.get(); // задержку лучше делать system("pause").
 
return 0; // main типа int, а не void, поэтому он должен что-то возвращать
// 0 - корректное завершение программы и высвобождение ресурсов
}
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 17:14     Странное решение #9
Код
cin.get(); // задержку лучше делать system("pause").
Лучше все-таки cin.get, ибо по стандарту.
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 17:24     Странное решение #10
Цитата Сообщение от Gravity Посмотреть сообщение
ибо по стандарту
а вот это Странное решение по стандарту?
Цитата Сообщение от Syltan Посмотреть сообщение
<<' ';
или << ' ' << ends;
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:27     Странное решение #11
mirso, а что не так? Пробел тоже символ
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 17:32     Странное решение #12
Цитата Сообщение от M128K145 Посмотреть сообщение
Пробел тоже символ
и зачем он там?
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:37     Странное решение #13
это второй вопрос. Но к стандарту это никак не относится. Просто человек только учится и, наверно, плохо понимает как и что работает. Ладно, давайте послушаем, что нам скажет ТС
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
01.09.2009, 17:45  [ТС]     Странное решение #14
C++
1
 (t*4)+i+1;
t*4 - это строка t умножается на 4, потому что в столбце 4 элемента?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2009, 17:50     Странное решение
Еще ссылки по теме:

Странное поведение указателя - C++
Здравствуйте, наткнулся на непонятное мне поведение указателя или точнее менеджера памяти. Есть код: #include &lt;iostream&gt; #include...

Странное поведение cin - C++
Перегружаю оператор ввода следующим образом: #include &lt;iostream&gt; using namespace std; class Vector2D { public: ...

Странное поведение кода - C++
int x; cout &lt;&lt; (x = 1) + (x = 2) + (x = 3); У меня выводит 7 (вместо 6). Почему?!?!

Странное поведение (сдвиг) - C++
Здравствуйте.Прошу помочь с задачкой. Программа , должна &quot;сдвигать&quot; данные в один бит(128), но при вызове функции с разными параметрами,...

Странное поведение компилятора - C++
Всем привет! Я конечно понимаю что нужно выкладывать минимальный код повторяющий мою проблему но он будет достаточно грамосток т.к. в...


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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:50     Странное решение #15
Syltan, нет, простот так захотелось автору книги. если хочеш можеш сделать даже так
Код
(2 * t + 20) * i - 1;
Автор написал для себя такой генератор неслучайных значений
Yandex
Объявления
01.09.2009, 17:50     Странное решение
Ответ Создать тему
Опции темы

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