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

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

Войти
Регистрация
Восстановить пароль
 
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
#1

Выводит отрицательный ноль - C++

19.12.2012, 22:26. Просмотров 830. Ответов 8
Метки нет (Все метки)

Столкнулся с такой проблемой:
Ввожу с клавиатуры массив чисел действительных
Сортирую их по модулю
А когда вывожу, если изначально вводил ноль, то выводит он -0.

Не знаю в чем ошибка, и что это такое.
Да и как устранить такую проблему.

Помогите пожалуйста.

Воткод(пишу весь, потому что не представляю в чем может быть ошибка):

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    double k,min,j,index,sum,c;
    int N;
    double *a=new double[N];
 
    cout<<"Vvedite kol-vo el-ov v massive"<<endl;
    cin>>N;
    
    
    k=0;
 
    // Первое задание
    for (int i=0; i<N; i++){
    cout<<"a["<<i<<"]=";
    cin>>a[i];
 
    if (a[i]==0) k++;
 
    }
 
    cout<<"Kol-vo nulei v massive a="<<k<<endl;
 
    // Второе задание
    index=0;
    min=a[0];
    for (int i=0; i<N; i++) {
    
        if (a[i]<min) {min=a[i]; index=i;}
    
    }
 
    sum=0;
 
 
    for (int i=index+1; i<N; i++)
        sum=sum+a[i];
    
    if (index+1==N) cout<<"sumi nety"<<endl;
 
    else
        cout<<"Summa elementov, raspolozhenix posle min-ogo elementa ravna="<<sum<<endl<<endl<<endl<<endl;
        
 
    // Третье задание
 
    for (int i=0; i<N; i++){
    for (int j=0; j<N; j++){
        if (abs(a[j])>abs(a[j+1])){
            c=a[j];
            a[j]=a[j+1];
            a[j+1]=c;
 
        }
    }
    }
    
    cout<<"TRRTIE ZADANIE"<<endl<<endl<<endl;
    for (int i=1; i<N+1; i++){
        cout<<fixed;
        cout<<setprecision(2);
        cout<<"a["<<i<<"] = "<<a[i]<<endl;}
    
    system("pause");
    return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2012, 22:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выводит отрицательный ноль (C++):

Почему выводит ноль? - C++
Пожалуйста, помогите с программой. Не могу понять, почему выводит ноль. #include&lt;iostream&gt; using namespace std; double fac(int...

Выводит ноль в конце массива - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int j = 0; char FIO = { 0...

При компиляции объект cout выводит ноль - C++
Подскажите, что изменить в проге, чтоб ноль не выводился? #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; using...

Алгоритм Форда-Фалкерсона, программа выводит ноль - C++
в чем проблема?вроде матрица инициализируется раз выводит первоначальную матрицу это алгоритм форда-фалкерсона. #include &lt;iostream&gt; ...

Написать программу, которая выводит пример на вычитание, запрашивает ответ пользователя, проверяет его и выводит сообщение о правильности - C++
Написать программу, которая выводит пример на вычитание (в пределах 100), запрашивает ответ пользователя, проверяет его и выводит сообщение...

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

8
v.a.l.i.d
416 / 381 / 10
Регистрация: 21.09.2012
Сообщений: 913
19.12.2012, 22:30 #2
Цитата Сообщение от banda Посмотреть сообщение
int N;
* * double *a=new double[N];
Переменная N неизвестно что содержит и тут же создается динамический массив неизвестного размера
1
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
19.12.2012, 22:45  [ТС] #3
v.a.l.i.d, Не понимаю, что ты имеешь ввиду
И причем тут это
0
v.a.l.i.d
416 / 381 / 10
Регистрация: 21.09.2012
Сообщений: 913
19.12.2012, 22:59 #4
Поменять строчки
C++
1
2
3
4
cout<<"Vvedite kol-vo el-ov v massive"<<endl;
cin>>N;
 
double *a=new double[N];
0
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
19.12.2012, 23:09  [ТС] #5
v.a.l.i.d, Расположение этих строчек ни как не отражается на работе программы
0
v.a.l.i.d
416 / 381 / 10
Регистрация: 21.09.2012
Сообщений: 913
19.12.2012, 23:24 #6
Я кажется понял в чем тут дело. Вот простенькая программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    double d1 = -1e-1000;
    cout << d1 << endl;     // -0
 
    double d2 = 1e-1000;
    cout << d2 << endl;     // 0
 
    system("pause");
    return 0;               
}
В первом случае печатает -0 а во втором просто 0. Это получается что число вроде бы не равно нулю, но в памяти компьютера не хватает места чтобы сохранить все эти числа. И он этим минусом показывает что число очень-очень близко к нулю но оно отрицательное.
0
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
19.12.2012, 23:33  [ТС] #7
В теории понятно, но как исправить мою программу? и почему так происходит, если я ввожу с клавиатуры 0.
0
v.a.l.i.d
416 / 381 / 10
Регистрация: 21.09.2012
Сообщений: 913
19.12.2012, 23:42 #8
Вот как исправить это я не знаю
0
banda
1 / 1 / 0
Регистрация: 06.02.2011
Сообщений: 46
20.12.2012, 00:16  [ТС] #9
Знающие и умные, помогите пожалуйста (

Добавлено через 18 минут
Я нашел ошибку, ошибки
Они тут объединились, а именно
Неправильная сортировка+неправильный вывод

Все работает
0
20.12.2012, 00:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2012, 00:16
Привет! Вот еще темы с ответами:

Напишите программу, которая выводит на экран содержимое файла и выводит сумму чисел файла - C++
Напишите программу, которая выводит на экран содержимое файла D:\numbers.txt. и выводит сумму чисел файла. Вынужден снова просить...

че то я ноль (С++) - C++
доброго времени суток всем... вощем суть проблемы... в универе проходили общую программу программирования: Паскаль и Си++ вооот вроде...

ноль в результате - C++
нужно просто вычислить степень #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() {float x, y; clrscr(); ...

Минус ноль - C++
Товарищи, ничего не соображаю. Элементарная программа выводит корни квадратного уравнения. #include &lt;iostream&gt; #include &lt;iomanip&gt; ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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