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

Загадка указателей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Дана геометрическая прогрессия из N членов, 1-й элемент b1 и знаменатель q задаются случайным образом http://www.cyberforum.ru/cpp-beginners/thread1138457.html
дана геометрическая прогрессия из N членов, 1-й элемент b1 и знаменатель q задаются случайным образом. Вывести все члены прогрессии на экран и вычислить сумму элементов прогрессии, больших -4.
C++ Вычислить произведение элементов массива Буду при много благодарен за помощь Вычислить произведение элементов целочисленного массива, находящихся между минимальным и максимальным элементами. Определить номера максимального и ... http://www.cyberforum.ru/cpp-beginners/thread1138453.html
C++ Создание двумерного массива
Год не кодил...всё напрочь забылось. нужно создать матрицу размером n x m, заполнить ее единичками и вывести результат. хоть убей не помню как объявить двумерный массив, учитывая то, что до этого на...
Структура "Покупатель" C++
Помогите решить пожалуйста) Покупатели продуктового магазина пользуются 10% скидкой, если покупка состоит из более чем 5 наименований товаров или суммарная стоимость покупки превышает K рублей....
C++ Записать в перевернутом виде строки файла F в файл G http://www.cyberforum.ru/cpp-beginners/thread1138431.html
Здравствуйте. Не знаю, как заставить работать программу. Буду очень благодарен за помощь Дан текстовый файл F. Записать в перевернутом виде строки файла F в файл G.Порядок строк в файле G должен...
C++ Циклы и их запоминание Вопрос. Может ли с++ запомнит циклы? Пример. Чтоб вычислит наиболее большой общий делитель надо разложить оба числа на простые множители и подчеркнуть те из этих множителей, которые являются... подробнее

Показать сообщение отдельно
bigibug
0 / 0 / 0
Регистрация: 03.04.2014
Сообщений: 3

Загадка указателей - C++

03.04.2014, 23:06. Просмотров 682. Ответов 20
Метки (Все метки)

Здравствуйте =) Привел меня к Вам следующий вопрос.
Поступило задание составить программу для решения квадратного уровнения, используя указатели.
В процессе работы наткнулся на то что, казалось бы, одно и тоже (по смыслу) выдает разные результаты.
Преподаватель работу принял, но разницу не смог обьяснить. А я теперь ночами спать не могу, понять хочу что не так сделал. =) Единственная разница выделена жирным шрифтом.
Подскажите, пожалуйста, почему 2 следующие программы выдают столь различные результаты?
Листинг 1
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
]#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int *p=new int[3],i,j=0;
    double x1,x2,d;
    char *t="abc";
    char *q=t;
    while (*q) 
    {
    cout<<*q++<<"=";
   [B] cin>>*(p+j);j++;[/B]
    for (i=0;i<3;i++) cout<<*(p+i)<<endl;     
    }
    d=pow(p[1],2)-4*p[0]*p[2];
    cout<<"d="<<d<<endl;
    if (d>=0) {x1=(-p[1]+sqrt(d))/2*(p[0]);
               x2=(-p[1]-sqrt(d))/2*(p[0]);
               cout<<"x1="<<x1<<endl<<"x2="<<x2;
        }
    else cout<<"net corney";
    delete [] p;
}

Результат 1
Кликните здесь для просмотра всего текста

a=1
1
0
0
b=5
1
5
0
c=4
1
5
4
d=9
x1=-1
x2=-4

Листинг 2
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int *p=new int[3],i,j=0;
    double x1,x2,d;
    char *t="abc";
    char *q=t;
    while (*q) 
    {
    cout<<*q++<<"=";
   [B] cin>>*p++;[/B]
    for (i=0;i<3;i++) cout<<*(p+i)<<endl;     
    }
    d=pow(p[1],2)-4*p[0]*p[2];
    cout<<"d="<<d<<endl;
    if (d>=0) {x1=(-p[1]+sqrt(d))/2*(p[0]);
               x2=(-p[1]-sqrt(d))/2*(p[0]);
               cout<<"x1="<<x1<<endl<<"x2="<<x2;
        }
    else cout<<"net corney";
    delete [] p;
}

Результат 2
Кликните здесь для просмотра всего текста

a=1
0
0
1035
b=5
0
1035
892547121
c=4
1035
892547121
842086196
d=6ю53828e+17
x1=1.72275e+10
x2=-8.1967e+11
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru