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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 20:21   #1
xitrec1zaraza
Пользователь
 
Регистрация: 27.11.2010
Сообщений: 17
Восклицание Почему? С++

Почему инициализация выхода происходит раньше вывода результатов?
Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

float i[11]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0};
float u[11]={0.22,0.44,0.58,0.71,0.8,0.87,0.93,0.97,1.0,1.02,1.04};
int main()
{
	float i0,r0,u0;
	int k;
	for (;;)
	{
		printf("Enter i0: ");
		scanf("%f",&i0);
		k=0;
		while (i0>i[k])
		{
			k++;
			if (k>10) break;
		}
		if (k>10 || k==0)
			printf("Error: i0 is out of range!\n");
		else
			break;
	}
	k--;
	u0=u[k]+(u[k+1]-u[k])/(i[k+1]-i[k])*(i0-i[k]);
	r0=u0/i0;
	printf("u0=%f r0=%f\n",u0,r0);
	getchar();
	return 0;
}

Последний раз редактировалось Stilet; 15.03.2011 в 07:45.
xitrec1zaraza вне форума Ответить с цитированием
Старый 14.03.2011, 20:37   #2
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

Инициализация выхода происходит раньше вывода результатов - это как я понимаю, что программа вырубается раньше вывода результатов?
Asdprom вне форума Ответить с цитированием
Старый 14.03.2011, 23:12   #3
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

У тебя после функции "scanf" в буфере клавиатуры остается энтер. Поэтому getchar() в конце программы успешно получает этот энтер и успокаивается. Дабы такого не было, можно, конечно, после каждого scanf() ставить отдельно getchar(), но это быдлокодерство. Лучше попросту ожидание выхода из программы делать таким образом:
Код:
system("PAUSE");
Вроде так. Поправьте меня, если что.
Помогли тебе - помоги другому.

Последний раз редактировалось Alt; 14.03.2011 в 23:19.
Alt вне форума Ответить с цитированием
Старый 15.03.2011, 03:33   #4
xitrec1zaraza
Пользователь
 
Регистрация: 27.11.2010
Сообщений: 17
По умолчанию

Спасибо, но уже нашел нестандартный способ...
Просто getchar() преобразовал в getch.
xitrec1zaraza вне форума Ответить с цитированием
Старый 15.03.2011, 13:15   #5
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

когда делаешь scanf в буфере остается символ перевода, чтобы очистить буфер от таких остаточных явлений, есть специальная функция

flushall();

Цитата:
printf("u0=%f r0=%f\n",u0,r0);
flushall();
getchar();
return 0;
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 15.03.2011, 20:02   #6
Asdprom
Форумчанин
 
Регистрация: 05.02.2011
Сообщений: 119
По умолчанию

вместо getch можно _getch()(оно по новее)
Asdprom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему 0? Nikita++ Помощь студентам 4 20.10.2010 19:39
Не создаётся БД почему ? NecRoMat PHP 10 16.04.2010 23:51
Почему? logok Общие вопросы C/C++ 2 12.04.2010 21:59
Почему? Sota О форуме и сайтах клуба 4 26.07.2007 16:26