С программирование элементарная задача - PullRequest
1 голос
/ 03 июля 2011
#include <stdio.h>
#include <math.h>


int main (void)
{
    float inches;
    printf("Enter the number of inches\n");
    scanf("%f\n",&inches);


    float feet;
    float cm;
    float yards;
    float meter;

    feet = 12 * inches;
    cm = 2.54 * inches;
    yards = 36 * inches;
    meter = 39.37 * inches;

    printf("Amount in feet: %f\n", &feet);
    printf("Amount in cm:   %f\n", &cm);
    printf("Amount in yards: %f\n", &yards);
    printf("Amount in meters: %f\n", &meter);




   getchar();

   return 0;

}

Я использую Dev c ++

Является ли проблема, над которой я работаю, в C. В основном введите число в дюймах, а затем количество отпечатков в сантиметрах, ярдах, метрах иноги.Это дает мне 0,0000 или что-то для всех из них или на самом деле время истекло.Я не могу держать экран вверх, и я думал, что это было целью getchar (), но я, должно быть, ошибся.Любая помощь это здорово.Спасибо!

РЕДАКТИРОВАТЬ 1

Как насчет того, чтобы держать dev c ++ на экране вместо закрытия после того, как я вставил материал?Я также должен положить 2 значения, прежде чем он вернется в чем-либо, когда экран всплывает?Почему ??

Ответы [ 4 ]

1 голос
/ 03 июля 2011

Две проблемы:

  1. Обычная проблема с использованием scanf() в том, что он оставляет новую строку после непрочитанного числа и читает следующую операцию чтения (getchar() здесь).
  2. Вы должны передавать не printf() указатели, а действительные значения.
1 голос
/ 03 июля 2011

Вы пытаетесь напечатать адреса ваших поплавков как поплавки, вы просто хотите сказать это:

printf("Amount in feet: %f\n", feet);

Обратите внимание на отсутствие оператора адреса (&) на feet.Вы хотите применить аналогичные изменения к другим printf вызовам.

0 голосов
/ 03 июля 2011

О Я не могу держать экран включенным , это общая проблема для всех, кто пытается запустить консольную программу в графической среде непосредственно из IDE, в частности Dev-C ++.Проблема в том, что нет консоли для ввода / вывода, тогда она предоставляется, но только на время работы программы, и поскольку программы работают быстро, если вы не добавите паузу после последнего ввода и вывода, вы не будетеесть время, чтобы прочитать вывод.

Многие пользователи MS Windows Dev-C ++ добавляют ужасный system("pause").Я всегда предлагаю, чтобы, если Dev-C ++ не мог предоставить консоль для ввода-вывода с опцией «держать ее открытой даже после завершения программы», то лучше открыть оболочку (cmd или powershell на окнах) изапустите вашу программу прямо оттуда.

Что касается проблемы ввода, то при неудачном сканировании возникает несколько проблем с буферизацией, поскольку ввод, который не распознается для данного формата, не отбрасывается и готов к следующему чтению.Например,

scanf("%f", &aFloat);
scanf("%f", &theNextFloat); // in your case you have the extra getchar();

не остановится для второго сканирования, если вы введете 1.25 4.5 в качестве первого ввода, поскольку 4.5 уже доступен для следующего сканирования.В вашем случае это была новая строка, оставленная в буфере, и поскольку getchar нашел ее, ей не нужно ждать ввода.Вместо этого вы можете использовать while( getchar() != EOF ) ;, а затем, чтобы выйти, нажать Ctrl-D.

0 голосов
/ 03 июля 2011

С printf вы не даете ему адрес float значений, вы просто даете ему значения.Удалите & s из вызовов printf.

Вам нужен адрес в scanf, потому что функция изменяет переменные, которые вы передаете, но printf просто нужны значения.На самом деле printf по существу переосмысливает указатели как числа с плавающей точкой, поэтому вы получаете отображаемые значения мусора.

...