Проверка значений ввода - C (СИ)
Формулировка задачи:
Всем привет! Снова вопрос, как можно реализовать следующую вещь:
Допустим я ввожу какой либо символ из 3 (в моем случае F,C или K) и перед ним цифру.
1 цель: Если буква отличается от F,C или K, (например введу 42G) то он выдает мне "G is not a valid temperature type. Ending program."
2 цель: Если я ввожу не просто цифры и всего лишь одну букву, а ввожу например целое слово (например 420 Blaze), то он выдает "Invalid formatting. Ending program."
Мои небольшие старания (необходимая часть программы) в ней только 2 цель реализована:
В ней реализована только 2 цель, и если я введу 42 G, он не выведет мне ""G is not a valid temperature type. Ending program."
Может стоит еще один else if добавить? Хоть я пытался что,то выкрутить с помощью этого, не вышло
void temperature() { float numerial = 0; char FirstChoiceTemp = 'o'; printf("Enter the temperature followed by its suffix (F, C, or K): "); scanf(" %f %c",&numerial,&FirstChoiceTemp); if( (FirstChoiceTemp == 'K') || (FirstChoiceTemp == 'k') ){ Kelvin(numerial); //вызываем функцию и передаем значение } else if( (FirstChoiceTemp == 'C') || (FirstChoiceTemp == 'c') ){ Celsii(numerial); } else if( (FirstChoiceTemp == 'F') || (FirstChoiceTemp == 'f') ){ Farenheit(numerial); } else { printf("Invalid formatting. Ending program."); } }
Решение задачи: «Проверка значений ввода»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> void temperature(); int main() { temperature(); return 0; } void temperature() { int len = 0; double numerial; char FirstChoiceTemp[] = ""; printf("Enter the temperature followed by its suffix (F, C, or K): "); if(!scanf("%lf %s",&numerial, FirstChoiceTemp)){ fprintf(stderr, "Error enter!"); exit(2); } len = strlen(FirstChoiceTemp); if(len > 1){ puts("Invalid formatting. Ending program."); exit(1); } else{ FirstChoiceTemp[0] = toupper(FirstChoiceTemp[0]); if(FirstChoiceTemp[0] != 'K' && FirstChoiceTemp[0] != 'F' && FirstChoiceTemp[0] != 'C'){ printf("'%c' is not a valid temperature type. Ending program.", FirstChoiceTemp[0]); exit(1); } } printf("%g %s\n", numerial, FirstChoiceTemp); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с вводом/выводом, строками и числами.
- Объявляем функцию
temperature()
, которая будет выполнять проверку ввода температуры. - В функции
main()
вызываемtemperature()
. - В функции
temperature()
с помощьюscanf()
считываем введенное значение температуры и его суффикс. - Проверяем успешность считывания данных с помощью оператора
if
. Если считывание не удалось, выводим сообщение об ошибке и завершаем программу. - Определяем длину строки суффикса температуры с помощью функции
strlen()
. - Если длина строки суффикса температуры больше 1, выводим сообщение об ошибке и завершаем программу.
- Приводим первый символ суффикса температуры к верхнему регистру с помощью функции
toupper()
. - Проверяем, что первый символ суффикса температуры не является 'K', 'F' или 'C'. Если это так, выводим сообщение об ошибке и завершаем программу.
- Выводим значение температуры и ее суффикс.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д