Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.02.2010, 13:06   #1
vladislavchick
 
Регистрация: 21.02.2010
Сообщений: 7
По умолчанию Проблемы системы ввода/вывода C (stdio.h, printf(), scanf()...)

Please, help me.

Вот код программы определения минимального и максимального элементов массива из 20 псевдослучайных вещественных чисел в интервале (a, b) (заранее извиняюсь за отсутствие комментариев):
Код:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

int main() {
  srand(time(0));
  double a, b, Y[20];
  unsigned min = 0, max = 0, i, prcsn;
  printf("Input bondaries of the bracket, which random real numbers will belong to: ");
  scanf("%f %f", &a, &b);
  for (i = 0; i < 20; i++)
    Y[i] = a + double(rand()) / RAND_MAX * (b - a);
  for (i = 1; i < 20; i++) {
    if (Y[i] < Y[min]) min = i; else
    if (Y[i] > Y[max]) max = i;
  }
  printf("Input the precision of real values, which will be out output on your screen: ");
  scanf("%u", &prcsn);
  printf("\nY = (%.*f", prcsn, Y[0]);
  for (i = 1; i < 20; i++)
    printf(", %.*f", prcsn, Y[i]);
  printf(")\n\nmin = %u, Ymin = %.*f", min, prcsn, Y[min]);
  printf("\nmax = %u, Ymax = %.*f", max, prcsn, Y[max]);
  getch();
  return 0;
}
Результат на экране: вместо вещественных значений (те, что выводятся в формате "%.*f") - 0.000...0
prcsn раз

Что делать?

P.S.: при использовании iostream.h (cout, cin) все работает. Интересно почему через stdio.h нет.

Последний раз редактировалось vladislavchick; 21.02.2010 в 13:08.
vladislavchick вне форума Ответить с цитированием
Старый 21.02.2010, 13:26   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от vladislavchick Посмотреть сообщение
Что делать?
Добавить в форматах ввода переменных типа double модификатор l:
Код:
scanf("%lf %lf", &a, &b);
Vago вне форума Ответить с цитированием
Старый 21.02.2010, 13:30   #3
vladislavchick
 
Регистрация: 21.02.2010
Сообщений: 7
По умолчанию Спс

Спс - всё заработало.
vladislavchick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с портом ввода вывода Assemblerru Общие вопросы C/C++ 5 25.04.2012 01:33
спецификатор формата вывода функции printf Айат Помощь студентам 3 21.02.2010 13:12
Перенаправление ввода/вывода dudeboy Win Api 0 16.11.2009 11:36
система ввода вывода StudentPolitech Общие вопросы C/C++ 3 02.04.2009 22:22
перехват консольного ввода\вывода Артем5555555 Win Api 14 28.10.2008 23:20