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

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

Войти
Регистрация
Восстановить пароль
 
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
#1

Печатает очень большие числа в колонке "Y"" - C++

16.08.2008, 01:20. Просмотров 911. Ответов 8
Метки нет (Все метки)

Код
#include<stdio.h>
#include<iostream>

void variant_1(){
     double Xn,Xk,dX,y,b,a,c;
     
     printf("Enter Xn, Xk, dX, a, b , c \n");
     scanf("%lf%lf%lf%lf%lf", &Xn, &Xk, &dX, &a, &b, &c);
     printf(" --------------------------------\n");
     printf("|      X        |        Y       |\n");
     double x = Xn;
     while( x <= Xk) {
            
            if ( x < 0 && b!= 0) y = a*x*x + b ;
            else if ( x > 0 && b == 0) y = (x-a)/(x-c);
            else y = x/c;
            if (!(((int)a || (int)b)  &&  ( (int)a || (int)c))==0 )
            printf("|%9.2lf         |%9.2lf          |\n" , x , y);
     else   printf("|%9.2lf         |%9d             |\n" , x ,(int)y );
     
     x+=dX;
     }
     printf(" --------------------------------\n");
     
     }
     
     int main()   {
         
            variant_1();
            system("pause");
            
            return 0;
            
            }
Не могу понять в чём у меня ошибка. Программа печатает , как вы видите, таблицу значений аргумента и функции от этого аргумента. Вводим, например 1 10 1 1 1 1,
тогда выполняется случай y = x/c , и прога печатает какие то гигантские числа ( вместо 1, 2 итд) в правом столбце с хреновой тучей нулей. ВМНГ Тефит Плэйн верни мой мозг Help me!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2008, 01:20     Печатает очень большие числа в колонке "Y""
Посмотрите здесь:
C++ Аргументы функции: что значит "большие" и "небольшие" аргументы?
Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений C++
C++ 2 Программы. На "целые числа и системы счисления" и на "метод деления отрезка пополам"
Проверить, образуют ли числа симметричную последовательность (варианты ответа "Yes" или "No") C++
Два числа, действительное "a" и натуральное "n" вводятся с клавиатуры C++
C++ Удалить все буквы "d", большие и маленькие, в строке S
C++ Составить программу, которая печатает "столбиком" все вхождения в предложение некоторого символа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
16.08.2008, 01:35     Печатает очень большие числа в колонке "Y"" #2

да вроде нормально все...
Миниатюры
Печатает очень большие числа в колонке "Y""  
Просто_Юлия
133 / 45 / 2
Регистрация: 27.05.2008
Сообщений: 245
16.08.2008, 04:01     Печатает очень большие числа в колонке "Y"" #3
А у меня (Borland C++ Builder) получились страшные числа. С кучей нулей и с е+305.
От компилятора зависит, что ли?
--
Пошла в пошаговом режиме
К моменту начала цикла:
с=3.61223574831494E-306

отсюда и большие числа.
А вот почему оно этому равно....
--
Тьфу блин.
Вот так надо:
Код
scanf("%lf%lf%lf%lf%lf%lf", &Xn, &Xk, &dX, &a, &b, &c);
Тогда все нормально
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
16.08.2008, 05:39  [ТС]     Печатает очень большие числа в колонке "Y"" #4
А вот как у меня выполняется. Откомпилил всё по новой тот же самый текст программы что и выше, пипец... Использую DEV C++ 4992. Не знаю... Может нужно подключить ещё какие нибудь заголовочные файлы?
Миниатюры
Печатает очень большие числа в колонке "Y""  
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
16.08.2008, 05:47  [ТС]     Печатает очень большие числа в колонке "Y"" #5
Цитата Сообщение от Просто_Юлия
Тогда все нормально
А что конкретно нормально? У Vourhey вылезают одни баранки, хотя по формуле
y = x/c должны получаться отличные от нуля числа. У меня же ваще чёрт знает что.. Тут что то нетривиальное...
Просто_Юлия
133 / 45 / 2
Регистрация: 27.05.2008
Сообщений: 245
16.08.2008, 14:21     Печатает очень большие числа в колонке "Y"" #6
Я написала, что исправить.
У меня получается 1 2 3 4 ... в итоге.
Иначе у тебя просто не вводится с, в этой переменной хранится всякий мусор - результат будет непредсказуемый.
Если ты советам не следуешь, зачем просишь их дать?
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
16.08.2008, 14:24     Печатает очень большие числа в колонке "Y"" #7
Код
 
#include<stdio.h>
#include<iostream.h>
void variant_1()
{
 double Xn, Xk, dX, y, b, a, c ;
 printf("Enter Xn, Xk, dX, a, b , c \n");
 scanf("%lf%lf%lf%lf%lf%lf", &Xn, &Xk, &dX, &a, &b, &c);  
 printf("+-----------------------+\n");
 printf("|     X     |     Y     |\n");
 double x = Xn;
 while( x <= Xk) 
 {
  if ( x < 0 && b!= 0) 
   y = a * x * x + b;
  else if ( x > 0 && b == 0) 
   y = (x - a) / (x - c);
  else
   y = x / c;
  if (!(((int)a || (int)b)  &&  ( (int)a || (int)c))==0 )
   printf("|%9.2lf  |%9.2lf  |\n" , x , y);
  else   
   printf("|%9.2lf  |%9d  |\n" , x ,(int)y );
  x+=dX;
 }
 printf("+-----------------------+\n");
}
 
void main()
{
 variant_1(); 
}
код тот же вроде я только по своему подключил заголовочные файли
у меня Visual C++ 6.0 и всё работает хорошо
Просто_Юлия
133 / 45 / 2
Регистрация: 27.05.2008
Сообщений: 245
16.08.2008, 14:34     Печатает очень большие числа в колонке "Y"" #8
Автор, так ты-то исправил в том месте, где я сказала!
В твоем коде шесть %lf (как я и говорила), а у Счастливчика - пять!
Естественно, оно работает хорошо. Чего б ему не работать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2008, 14:45     Печатает очень большие числа в колонке "Y""
Еще ссылки по теме:
C++ Дано трехзначное число. Проверить истинность высказывания: "Цыфры даного числа образуют возрастающую или убывающую последовательность"."
При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." C++
C++ Очень нужна работающая программа по "Длинной арифметике вычитания"
C++ Заменить все элементы массива большие чем "a" значением максимального элемента этого массива
C++ Разбить очень длинную строку по символу ";"

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

Или воспользуйтесь поиском по форуму:
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
16.08.2008, 14:45  [ТС]     Печатает очень большие числа в колонке "Y"" #9
Цитата Сообщение от Просто_Юлия
Я написала, что исправить.
У меня получается 1 2 3 4 ... в итоге.
Иначе у тебя просто не вводится с, в этой переменной хранится всякий мусор - результат будет непредсказуемый.
Если ты советам не следуешь, зачем просишь их дать?
Извини, ты писала что:
Цитата Сообщение от Просто_Юлия
Тьфу блин.
Вот так надо:

Код:
scanf("%lf%lf%lf%lf%lf%lf", &Xn, &Xk, &dX, &a, &b, &c);
Тогда все нормально
У меня написана та же самая инструкция в программе в первом посте, что нужно поменять я так и не понял... Укажите бедному слепому...:'(

Добавлено через 7 минут 24 секунды
Всё я понял, спецификатора не хватает. Юля сэнкс.
Yandex
Объявления
16.08.2008, 14:45     Печатает очень большие числа в колонке "Y""
Ответ Создать тему
Опции темы

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