| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Указатели на элементы массива |
| Автор: Narim 6.4.2011, 15:11 | ||
| здравствуйте, не выходит с задачей, можете исправить, код сам идет, только вычисляет не правильно, вот условие: задача на языке СИ) Даны натуральное число n, действительные числа x1...,xn. вычислить: x1xn+x2xn-1+...+xnx1
заранее спасибо. ( программа с использованием указателей) Модератор: Не забываем пользоваться кнопочкой "Код" |
| Автор: Vard 6.4.2011, 15:19 | ||||
| вычислить что? ошибка очевидно вот в этой строчке
если идет первая итерация цикла (i=0), то эта строка, если принять во внимание, что n = 4, принимает вид
значение *(ptr+7) не определено |
| Автор: Narim 6.4.2011, 15:29 |
| вычислить это x1xn+x2xn-2+...+xnx1, |
| Автор: borisbn 6.4.2011, 15:34 |
второе слагаемое точно x2xn-2, а не x2xn-1 ? |
| Автор: Vard 6.4.2011, 15:34 | ||||
С учетом этого необходимо отредактировать строчку в вашем цикле:
кажется так Но, как справделиво заметил borisbn, это относится к формуле с x2xn-1 |
| Автор: Narim 6.4.2011, 15:41 |
| Цитата(Narim @ 6.4.2011, 15:11 ) вычислить: x1xn+x2xn-2+...+xnx1 второе слагаемое точно x2xn-2, а не x2xn-1 ? прошу прощение, ошибся, верное условие x2xn-1 |
| Автор: borisbn 6.4.2011, 15:51 | ||||
для учебного проекта (изучение указателей) такое подойдёт
но я бы руки повырывал бы кодеру, который такое сделал бы такое в боевом проекте. Сравни, что понятнее ?
|
| Автор: Vard 6.4.2011, 15:54 | ||
а еще можно не весь массив указателем пробегать, а только половину, думаю за это можно и ноги тоже оторвать |
| Автор: borisbn 6.4.2011, 19:43 |
| Vard, it's a sarcasm, is't it ? Интересно, справится компилятор с такой оптимизацией (пройтись до середины и умножить на 2) ? Вряд ли. Завтра проверю bsa, кнопка код, в данном случае, не особо помогла :( нет ? |
| Автор: JackYF 6.4.2011, 21:50 | ||
Narim,
|
| Автор: volatile 7.4.2011, 01:00 | ||
возможно составитель задачи расчитывал увидеть именно указатели
|
| Автор: Vard 7.4.2011, 17:35 | ||||
Чувааак.... isn't it *
с чем не справился? с тем, чтобы пройти только половину цикла представленного выше, а потом результат умножить на 2? ну и особо рассмотреть средний элемент - если нечетное количество элементов, то не домножать его на 2, алгоритмически грамотно оформив |
| Автор: borisbn 7.4.2011, 17:47 | ||
тьфу, блин, очепятко. Это всё КПК, это не я
ага ну... я так считаю, что от компилятора всегда можно требовать чего-то большего... зато он (компилятор VC) развернул цикл в 4 раза (я исправил n на 400). |
| Автор: Vard 7.4.2011, 17:58 | ||
я имел ввиду что то типа этого, воспользуемся твоим циклом
Add: все, доперло, простите, компилятор лох |
| Автор: borisbn 7.4.2011, 20:54 |
| Vard, вот я и думал/верил/рассчитывал, что компилятор так и сделает |