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

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

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

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

01.09.2009, 16:21. Просмотров 967. Ответов 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();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2009, 16:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Странное решение (C++):

Странное поведение - C++
Здравствуйте еще раз :) Теперь возникла другая непонятка. Есть класс StringParser, объекты которого умеют разбивать строку на подстроки,...

Странное распараллеливание - C++
Добрый вечер, коллеги. У меня следующая проблема. Преподаватель сказал распараллелить программу, обрабатывающую изображения в папке....

Странное поведение new - C++
Объясните почему оператор new выделяет неверное количество памяти? # include &lt;iostream&gt; using namespace std; char* interpitator( int...

Преобразовать решение используя указатели (дано решение без указателей) - C++
Элемент матрицы назовем седловой точкой, если он является наименьшим в своей своей строке и одновременно наибольшим в своем столбце или,...

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

Странное поведение в коде - C++
Есть два класса: ArrayList&lt;T&gt; и Array&lt;T&gt; (реализация в конце поста). И есть такой код: ArrayList&lt;int&gt; list = { 1, 2, 3 }; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
EnzoMatrix
120 / 120 / 5
Регистрация: 14.03.2009
Сообщений: 462
01.09.2009, 16:25 #2
ну так, это ж не вывод, а ввод, массив заполняется числами от 1 до 12
а вывод строкой ниже
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 16:30 #3
C++
1
nums[t][i] = (t*4)+i+1;
nums[номер_строки][номер_столбца] присваивается (номер_строки*4)+номер_столбца+1;
2
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 16:32 #4
Цитата Сообщение от Syltan Посмотреть сообщение
но вывод странный
В чем странность то?
0
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
.....................
Что-то я не възжаю, как оно считается,если брать такую формулу решения.
0
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 )
1
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
и т.д.
1
M128K145
Эксперт С++
8288 / 3508 / 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 - корректное завершение программы и высвобождение ресурсов
}
0
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 17:14 #9
Код
cin.get(); // задержку лучше делать system("pause").
Лучше все-таки cin.get, ибо по стандарту.
0
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 17:24 #10
Цитата Сообщение от Gravity Посмотреть сообщение
ибо по стандарту
а вот это Странное решение по стандарту?
Цитата Сообщение от Syltan Посмотреть сообщение
<<' ';
или << ' ' << ends;
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:27 #11
mirso, а что не так? Пробел тоже символ
0
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 17:32 #12
Цитата Сообщение от M128K145 Посмотреть сообщение
Пробел тоже символ
и зачем он там?
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:37 #13
это второй вопрос. Но к стандарту это никак не относится. Просто человек только учится и, наверно, плохо понимает как и что работает. Ладно, давайте послушаем, что нам скажет ТС
1
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 элемента?
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 17:50 #15
Syltan, нет, простот так захотелось автору книги. если хочеш можеш сделать даже так
Код
(2 * t + 20) * i - 1;
Автор написал для себя такой генератор неслучайных значений
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2009, 17:50
Привет! Вот еще темы с ответами:

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

странное определение функций - C++
Читал заголовочный файл, так наткнулся на следующее выражение: #define MPI_MAX (MPI_Op)(0x58000001) Что означает такое...

Странное поведение указателя - C++
#include &lt;iostream&gt; #include &lt;cstring&gt; int main(){ char line1=&quot;hello world!&quot;; char line2=&quot;hell word!&quot;; int...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.09.2009, 17:50
Ответ Создать тему
Опции темы

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