2014-09-13 2 views
1

Я пытаюсь сделать противоположное случаю 3. Итак, идея состоит в том, что вы можете сказать: «x количество дней от сидения будет _». Это хорошо работает в моем case 3, поэтому я решил, что то же самое будет работать, если вы захотите решить «x дней до того, как сидел будет _». Теперь мой case 4 работает только до ввода 6, тогда вы вводите отрицательные числа, которые я не толстый, когда делаю это ... И моя программа основана на массиве char dayChar[7][4] {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};, так что вы можете видеть, что case 4 на самом деле не работает. Любые предложения о том, как я могу это сделать, будут работать? Спасибо за тонну.Число строк и модулей C++

case 3: // Add days 
       cout << "Day selected is " << day << endl; 
       cout << "How many days would you like to add?" << endl; 
       cin >> addOrSub; 

       temp = (dayNum + addOrSub); 
       dayNum = (temp % 7); 

       cout << addOrSub << " days from " << day << " will be " << dayChar[dayNum] << endl; 


       break; 

      case 4: // Subtract days 
       cout << "Day selected is " << day << endl; 
       cout << "How many days would you like to subtract?" << endl; 
       cin >> addOrSub; 

       temp = (dayNum - addOrSub); 
       dayNum = (temp % 7); 

       cout << addOrSub << " before " << day << " was " << dayChar[dayNum] << endl; 
+1

Вы можете сначала вычесть кратное 7 из daynum, а затем добавить абсолютное значение количества дней для вычитания. Тогда это будет похоже на случай 3. Другими словами, для случая 4 просто временно сбросьте daynum до более раннего времени, чтобы вы добавляли не вычитание дней. – synaptik

+1

dayNum = ((temp% 7) + 7)% 7; – d0c

+0

@ d0c и синапитк, отличные предложения. Btw d0c. Кажется, я работаю над этим. Я знаю, если это так, вы должны опубликовать это как ответ. :) –

ответ

1

Простое решение сделать: dayNum = ((temp % 7) + 7) % 7;

Поскольку temp % 7 гарантированно будет больше, чем -7, добавление 7 гарантированно дать вам положительное число, эквивалентное исходной (по модулю 7). Полученное число, однако, может быть больше 7, поэтому необходима дополнительная модульная операция.

Смежные вопросы