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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2012, 10:51   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание Корректность ввода на СИ

Здрасте.
Помогите мне с корректностью ввода в проге. Нужно чтоб когда я ввожу буквы, выводилось сообщение ошибки.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
  float x,y; 
  printf("X="); scanf("%f",&x);
  printf("Y="); scanf("%f",&y); 

  float z = (pow(cos(x), 4))+(pow(sin(y), 2))+((1/4)*pow(sin(2*x-1), 2));
  printf("Z=%.5f\n",z);
  
  system("PAUSE");	
  return 0;
}
Заранее спасибо.
glebast вне форума Ответить с цитированием
Старый 14.09.2012, 12:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Вводи строку, потом через atof() пробуй переконвертировать ее в вещественное. Если не сконвертится - значит проси юзера повторить ввод.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2012, 18:05   #3
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание

Цитата:
Сообщение от Stilet Посмотреть сообщение
Вводи строку, потом через atof() пробуй переконвертировать ее в вещественное. Если не сконвертится - значит проси юзера повторить ввод.
Я только первый день начал учить си, можно пожалуйста поподробнее (кодом)
glebast вне форума Ответить с цитированием
Старый 14.09.2012, 19:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я имел ввиду такое:
Код:
	 float a = 0;
	 char s[20];
     printf("a=");
	 for(scanf("%s",&s);a=atof(s)==0;scanf("%s",&s))printf("\nWrong numder. Please repeat \na="); 
	

     float z=(pow(cos(a), 4))+(pow(sin(a), 2))+((1/4)*pow(sin(2*a-1), 2));
     printf("Z=%.5f\n",z); 
     system("pause");

	return 0;
Однако там по-моему тоже не все так гладко (я так вспоминать пытаюсь колледж)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2012, 22:42   #5
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
Вопрос

Цитата:
Сообщение от Stilet Посмотреть сообщение
Однако там по-моему тоже не все так гладко (я так вспоминать пытаюсь колледж)
Там не так все просто. К примеру если сконвертить строку содержащую и цифры и буквы, то получим число. По-моему лучше вводить как строку и сверять каждый ее элемент с буквами. Если букв нет, то - atof().
Повторенье - мать ученья. И прибежище для лентяев.
Artem_Kokos вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректность скобок! Sport Помощь студентам 3 22.03.2012 20:33
Корректность Регулярного выражения Altera Свободное общение 4 18.08.2011 17:44
Корректность вводимых данных маленький монстрик PHP 2 13.06.2011 08:53
Корректность закачки _Den_1984 Работа с сетью в Delphi 0 15.02.2011 13:30
Проверка на корректность строк Ilya_L Microsoft Office Excel 5 22.06.2010 11:23