Внесение изменений с помощью Objective-C - PullRequest
1 голос
/ 11 октября 2010

Я только недавно начал изучать Objective-C (или программирование в этом отношении) и застрял в простой программе.

Я пытаюсь внести изменения в кварталы, центы, никели и пенни, но заметилчто решение, которое я придумал, дало бы случайное значение никам или пенни.

Пример.Изменение на 25 будет означать: «Изменение - 1 квартал, 0 центов, -1881139893 никеля и 4096 пенни»

Ex2.Изменение на 30 будет означать: «1 квартал, 0 центов, 1 никель и 4096 пенсов»

Что я могу добавить / изменить, чтобы исправить это поведение?

Также естьЕсть ли лучшее решение, чем запускать 4 различных оператора if?

Спасибо!

Вот мой код ниже:

int orig, q, d, n, p;

NSLog(@"Give money to make change");
scanf("%i", &orig);

if(orig >= 25) {
    q = orig/25;
    orig -=  q*25;
}
if(orig >= 10 && orig < 25) {
    d = orig/10;
    orig -= d*10;
}
if(orig >= 5 && orig < 10) {
    n = orig/5;
    orig -= n*5;
}
if(orig >= 1 && orig < 5) {
    p = orig;
}

NSLog(@"The change is %i quarter, %i dime, %i nickels, and %i pennis", q, d, n, p);

Ответы [ 2 ]

4 голосов
/ 11 октября 2010

Вы не инициализируете свои переменные, чтобы начать с них, поэтому все они начинаются со случайных значений, затем в вашем коде, в случае, когда нет пенни, вы никогда не устанавливаете p на что-либо, поэтому оно сохраняет свое начальное случайное значение,который вы затем видите в своем выводе.Вы можете исправить это, инициализируя переменные в начале.

int orig=0, q=0, d=0, n=0, p=0;
3 голосов
/ 11 октября 2010

Вместо этого вы должны использовать модуль. Я не хочу портить ваш опыт обучения, поэтому это пример того, как вы можете использовать модуль для вычисления дней, часов, минут и секунд для времени, указанного только в секундах.

int x = 1123123; 
int seconds = x % 60;
x /= 60;
int minutes = x % 60;
x /= 60;
int hours = x % 24;
x /= 24;
int days = x;

Теперь примените это к вашей проблеме:)

...