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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.08.2009, 11:41   #11
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от LaptevVV
Тогда и знать не требуется, сколько байтов занимает один элемент.
А где это требуется в исходном варианте?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 29.08.2009, 19:02   #12
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Тут заметил небольшую мелочь. Почему в этой строке кода, указуется sizeof masiv, а не sizeof masiv[] ? Просто немного смущает,что без скобочек квадратных.
Код:
int count = (sizeof masiv)/(sizeof masiv[0]);
Golovastik вне форума
Старый 29.08.2009, 19:10   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Golovastik
Почему в этой строке кода, указуется sizeof masiv, а не sizeof masiv[] ?
Я даже не знаю, как ответить на этот вопрос. Потому что не ставятся квадратные скобки при использовании в выражении имени массива.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 29.08.2009, 21:10   #14
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

В С++ используется синтаксис ассемблера MASM и ему подобных. Т.е. выражение вроде [mass] эквивалентно mass. Потому когда вы указываете просто mass - вы указываете его полную размерность, которая определена в компиляторе ввиде константы. Но если не ошибаюсь то у С++ есть некий runtime элемент который ведает всеми выделениями памяти так что размерность скорее всего берется из его данных. Вот кстати что адрес узнать придется сделать тоже самое что в MASM - addr , а в С++ же как вы знаете &. Вобще такой подход для HLL очень удобен, в отличие от ассемблеров.
PS: 2Sazary: замечательный стих у вас в подписи, главное всегда к месту
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума
Старый 30.08.2009, 00:28   #15
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Последний вопрос,только в этом идентичном коде и всё.
Код:
#include <iostream>
using namespace std;
double paraxod(double b[][4],int n);


int main()
{
setlocale(0,"");
double beans[3][4] = {{1.0, 2.0, 3.0, 4.0},
                      {5.0, 6.0, 7.0, 8.0},
                   {9.0, 10.0, 11.0, 12.0} };
cout<<endl
<<"Урожай = "<<paraxod(beans, sizeof beans/sizeof beans[0]);
cout<<endl;
cin.get();
}

double paraxod(double b[][4], int count)
{
   double sum = 0.0;
   for(int i = 0; i < count; i++)
	   for(int j = 0; j < 4; j++)
       sum += b[i][j];
   return sum;
}
Скажите, до скольки будет происходить подсчёт в цикле фор в этой строке:
Код:
for(int i = 0; i < count; i++)
Ведь,чтоб определить чему равно count,нужно посмотреть на это:
Код:
sizeof beans/sizeof beans[0]
Теперь считаем, 96 байтов/8= 12 Тоесть подсчёт происходит до 12.
А почему-то в самом деле до 4 ?
Golovastik вне форума
Старый 30.08.2009, 00:40   #16
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Golovastik
Теперь считаем, 96 байтов/8= 12
Неправильно считаете.
sizeof beans = 8 * 3 * 4 = 96
sizeof beans[0] = 8 * 4 = 32
sizeof beans/sizeof beans[0] = 96 / 32 = 4
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 30.08.2009, 00:47   #17
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Странно,это наверное в одномерном масиве 8 умножается на общее количество элементов,в данном случае на 12. А в двумерном получается не так,на количество строк и столбцов.
Это понятно теперь sizeof beans = 8 * 3 * 4 = 96, а вот это
sizeof beans[0] = 8 * 4 = 32 почему 8 умножается на столбец, а не на строку?

Последний раз редактировалось Golovastik; 30.08.2009 в 00:51.
Golovastik вне форума
Старый 30.08.2009, 00:52   #18
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

мда.... а человек закончил первый курс, еще и отлично получил по программированию
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума
Старый 30.08.2009, 01:01   #19
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Ответьте пожалуйста на вопрос, чтоб я не лёг спать с нерешенным этим вопросом.
Golovastik вне форума
Старый 30.08.2009, 01:03   #20
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Golovastik
sizeof beans[0] = 8 * 4 = 32 почему 8 умножается на столбец, а не на строку?
Потому что вы получаете размер строки. А в строке 4 элемента. И размер строки = <размер элемента>*<количество элементов>.

Цитата:
Сообщение от Golovastik
Странно,это наверное в одномерном масиве 8 умножается на общее количество элементов,в данном случае на 12. А в двумерном получается не так,на количество строк и столбцов.
А что, по-вашему в двумерном массиве количество элементов считается как-то по-другому?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив Paul_AG Общие вопросы C/C++ 2 04.06.2009 00:53
Массив KREGI Помощь студентам 2 05.03.2009 17:35
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06
массив TheVenny Помощь студентам 1 22.11.2008 01:50
массив! Jodu Помощь студентам 2 11.01.2008 20:59