Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 25.10.2010, 19:16   #1
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Адрес: Беларусь, г.Минск
Сообщений: 28
Репутация: 10
По умолчанию Результат выполнения программы

Чему равно S?

Код:

#include<stdio.h>
#define N 6

void main()
{
	double Array[N] = {1,2,3,0,-5,6};
	double Vector[N] = {1,1,1,1};
float S = 0;
int i;

for(i = 0; i < N ; i++)
{
S = S + Array[i]*Vector[i];
}
printf("результат равен %f", S);
}


заранее спасибо за ответ
g001501 вне форума   Ответить с цитированием
Старый 25.10.2010, 19:38   #2
netrino
Профессионал
 
Аватар для netrino
 
Регистрация: 15.07.2008
Адрес: г. Киев, Украина
Сообщений: 1,933
Репутация: 736
По умолчанию

А запустить не пробовали?) Наверное 6
netrino вне форума   Ответить с цитированием
Старый 25.10.2010, 20:00   #3
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Адрес: Беларусь, г.Минск
Сообщений: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
А запустить не пробовали?) Наверное 6
У меня не запускается. Пишет: Linking....
А почему 6?
g001501 вне форума   Ответить с цитированием
Старый 25.10.2010, 20:05   #4
netrino
Профессионал
 
Аватар для netrino
 
Регистрация: 15.07.2008
Адрес: г. Киев, Украина
Сообщений: 1,933
Репутация: 736
По умолчанию

Ну так правильно, оно и должно так писать) Или во время компиляции возникают ошибки? Если да, то какие?
Шесть, потому что N (размерность массива) равно 6, в то время, как инициализируются лишь 4 элемента массива Vector, остальные по умолчанию заполняются нулями. Так как элементы массивов Array и Vector перемножаются, то последние три произведения будут равны нулю (так как четвёртый элемент Array тоже равен 0). Ну а в цикле как раз производится подсчёт суммы произведений элементов массива, так как в Vector'е они все равны единице, то конечный результат будет равен сумме первых трёх элементов Array. Это всё очевидно из алгоритма, вы в нём разобрались хотя бы?)

Последний раз редактировалось netrino; 25.10.2010 в 20:08.
netrino вне форума   Ответить с цитированием
Старый 26.10.2010, 21:09   #5
g001501
Пользователь
 
Аватар для g001501
 
Регистрация: 16.09.2010
Адрес: Беларусь, г.Минск
Сообщений: 28
Репутация: 10
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Ну так правильно, оно и должно так писать) Или во время компиляции возникают ошибки? Если да, то какие?
Шесть, потому что N (размерность массива) равно 6, в то время, как инициализируются лишь 4 элемента массива Vector, остальные по умолчанию заполняются нулями. Так как элементы массивов Array и Vector перемножаются, то последние три произведения будут равны нулю (так как четвёртый элемент Array тоже равен 0). Ну а в цикле как раз производится подсчёт суммы произведений элементов массива, так как в Vector'е они все равны единице, то конечный результат будет равен сумме первых трёх элементов Array. Это всё очевидно из алгоритма, вы в нём разобрались хотя бы?)
Я не понимаю такого момента. Если перемножить массив на вектор, то в результате получим массив. Тогда результат должен быть массив, а не число. Или я чего-то не понимаю?
g001501 вне форума   Ответить с цитированием
Старый 26.10.2010, 21:31   #6
netrino
Профессионал
 
Аватар для netrino
 
Регистрация: 15.07.2008
Адрес: г. Киев, Украина
Сообщений: 1,933
Репутация: 736
По умолчанию

Код:

S = S + Array[i]*Vector[i];

Не вектор множится на вектор, а каждый элемент вектора умножается на такой же по счёту элемент другого вектора, и полученное произведение прибавляется к S
netrino вне форума   Ответить с цитированием
Старый 26.10.2010, 21:36   #7
devnir
Пользователь
 
Регистрация: 26.10.2010
Сообщений: 26
Репутация: 10
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Шесть, потому что N (размерность массива) равно 6, в то время, как специализируются лишь 4 элемента массива Vector, остальные по умолчанию заполняются нулями.
Крайне не согласен особенно в моменте где "остальные по умолчанию заполняются нулями."
Пару лет назад я бы сказал то же самое... сейчас же совсем не согласен. Ошибочное мнение что при объявлении переменной она сразу нулится процветает у многих, а многие "преподы" клятвинно избивая себя в грудь, заявляют наивным студентам что так оно и есть....

Все зависит от компилятора и его настроек.
Приведу простой пример:
1. Старый добрый билдер при объявлении переменной INT08U i;
обнулит и. хотя явно о этом никто не говорил.. о том что "и" вообще должно быть нулем.
2. ADS(Arm Devel. Suite) - вродь так эта прелесть называется (в прошлом работал с ней писал прошивки для процессоров с АРМ архитектурой.). так вот именно ADS - пощитает что при таком объявлении i!=0x00, а если быть точнее i = 0xFF

Мораль сей повести такова: не зря во всех умных книжках пишут что то там про "ЯВНОЕ объявление переменных" ведь при объявлении переменной INT08U i; процессор всего навсего выделить память размером 8 бит.. но ему никто не говорит и не заставляет его нулить все эти битики... а что там было до этого - лишь святой "Дзэн" знает.
devnir вне форума   Ответить с цитированием
Старый 26.10.2010, 21:38   #8
Гром
Профессионал
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
Репутация: 473

icq: 482-373-277
По умолчанию

Какие еще перемножения массива и вектора? Что вы называете массивом, а что - вектором? У вас перемножаются элементы массива. Если геометрически - скалярно умножаются два вектора. И не важно, как вы назвали переменные.
Вообще я вас в упор не понимаю - вы удивляетесь, почему переменная типа float является числом, а не массивом???

P.S. devnir, не согласен с вами. Не стоит все стричь под одну гребенку. Согласно Страуструпу (а он вряд ли погрешит против стандарта)
Цитата:
Если инициализатор не задан, то глобальным объектам, объектам из пространства имен и локальным статическим объектам присваивается нулевое значение соответствующего типа. [...] Локальные переменные и объекты, создаваемые в области свободной памяти не инициализируются по умолчанию. [...] Элементы массивов и члены структур инициализируются или нет в зависимости от того, являются ли они статическими. Для типов, определяемых пользователем, может определяться инициализация по умолчанию. [....] Если в списке элементов инициализации недостает элементов, всем остальным элементам [статического] массива присваивается значение 0.
__________________
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 26.10.2010 в 21:52.
Гром вне форума   Ответить с цитированием
Старый 27.10.2010, 08:41   #9
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,842
Репутация: 6832
По умолчанию

Цитата:
У меня не запускается. Пишет: Linking....
и? Дальше что? Компилятор какой?
Цитата:
А почему 6?
Странный вопрос? А почему не 6? Перемножь руками и увидишь. Неинициализированные элементы считай нулями.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 27.10.2010, 11:35   #10
kaljan775
:D
Участник клуба
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Адрес: Казань
Сообщений: 570
Репутация: 31

skype: kaljan775
По умолчанию

но там же могут быть совершенно разные значения, отличные от 0, первай раз возможно будет 0, второй раз, третий раз, точно будет 0, вы уверены ?
__________________
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен результат программы... Катюшенька Помощь студентам 1 17.05.2010 09:53
Определить результат выполнения программы. Joker<777> Паскаль 2 23.04.2010 02:15
Как сделать, чтобы результат выполнения макроса записывался по строкам во всем столбце? kipish_lp Microsoft Office Excel 3 26.11.2009 08:18
Появляется окошко и тут же пропадает, как посмотреть результат выполнения си кода? Urukhay4 Общие вопросы C/C++ 11 18.04.2009 17:37
как отобразить в dbgrid результат выполнения commandText двух adodataset? Гузель БД в Delphi 2 13.08.2008 16:17


23:33.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru