Я пытаюсь добавить какое-то «значение повтора», если вы хотите, чтобы моя консольная программа преобразования шкалы температуры в Objective-C добавила простой цикл.Создание контура программы в первый раз в объекте-c
Теперь, вот код для моего текущего файла main.m:
#import <Cocoa/Cocoa.h>
#import "class.h"
int main(int argc, char *argv[])
{
int result;
int prompt, prompt2, sourceTempText;
double sourceTemp;
printf("Please choose a source temperature scale:\n[1] Fahrenheit\n[2] Celsius\n[3] Kelvin\n[4] Rankine\n\n");
result = scanf("%i", &prompt);
if (result != 1)
printf("I couldn't understand your input, I need only one number!");
else if (result == EOF)
printf("I apologize, I encountered an error when trying to read your input.");
else if (result == 1)
{
printf("\nNow, please enter the temperature you would like to convert:\n\n");
scanf("%lf", &sourceTemp);
Temperature *converter = [[Temperature alloc] init];
switch (prompt)
{
case 1:
//end-user chooses Fahrenheit
[converter setFahrenheitValue:sourceTemp];
sourceTempText = 1;
break;
case 2:
//end-user chooses Celsius
[converter setCelsiusValue:sourceTemp];
sourceTempText = 2;
break;
case 3:
//end-user chooses Kelvin
[converter setKelvinValue:sourceTemp];
sourceTempText = 3;
break;
case 4:
//end-user chooses Rankine
[converter setRankineValue:sourceTemp];
sourceTempText = 4;
break;
}
printf("\nNow, please choose a target temperature scale:\n[1] Fahrenheit\n[2] Celsius\n[3] Kelvin\n[4] Rankine\n\n");
scanf("%i", &prompt2);
char *scales[4] = { "Fahrenheit", "Celsius", "Kelvin", "Rankine" };
switch (prompt2)
{
case 1:
//end-user chooses Fahrenheit
printf("%lf degrees %s is %lf degrees Fahrenheit\n", sourceTemp, scales[prompt-1], [converter fahrenheitValue]);
break;
case 2:
//end-user chooses Celsius
printf("%lf degrees %s is %lf degrees Celsius\n", sourceTemp, scales[prompt-1], [converter celsiusValue]);
break;
case 3:
//end-user chooses Kelvin
printf("%lf degrees %s is %lf degrees Kelvin\n", sourceTemp, scales[prompt-1], [converter kelvinValue]);
break;
case 4:
//end-user chooses Rankine
printf("%lf degrees %s is %lf degrees Rankine\n", sourceTemp, scales[prompt-1], [converter rankineValue]);
break;
}
}
}
КИ, так что я хотел бы предложить пользователь с PRINTF заявлением, с просьбой, если они хотели бы конвертировать другую температуру, как только они сделали свое первое преобразование.
В запросе будет предложено конечному пользователю нажать 0 для выхода из программы или 1 сделать другое преобразование.
Моим первым наклонением было объявить целочисленную переменную, которая была бы установлена на 0 или 1 из scanf, как только конечный пользователь внесет свой выбор.
Тогда, если новая переменная == 1, то она вернется к началу, если нет, то она выйдет из программы.
Довольно просто, да?
Просто интересно, существует ли более эффективный способ петли этой программы или это хороший способ, по крайней мере, с базовыми знаниями, которые у меня есть сейчас.
Эй, круто, спасибо. Я должен был это сделать уже, мне было поручено это сделать, но я забыл xD. В любом случае, есть ли хорошая ссылка, на которую вы могли бы указать мне, чтобы помочь мне понять концепцию хранения различных частей программы в разных функциях? – Qcom
Ну, я бы не знал, это очень простой (почти) любой язык. Основная идея заключается в том, что вы даете ноль или более аргументов и вызывается одно значение; возвращаемое значение. Поэтому вы можете попытаться сделать 'int getOneInt (char * message) {printf ("% s \ n ", message); ... scanf ... и т. д. return i; } ', который затем получит один int от пользователя, а затем вернет его. Поэтому каждый раз, когда вам нужен int, вы просто делаете 'int a = getOneInt (« теперь, пожалуйста, введите исходный масштаб »);' и ваш основной цикл не будет иметь дело с этими проблемами три раза подряд. – mvds
Извините, если вы имеете в виду добавление некоторых более часто используемых методов в мои файлы классов вместо использования повторяющихся экземпляров printf, как вы только что упомянули, то я уже знаю, что вы имеете в виду. Да, я новый для шо ахаха. – Qcom