2016-12-01 3 views
0

Рой хочет изменить свое изображение профиля на Facebook. Теперь у Facebook есть некоторые ограничения по размеру изображения, которое мы можем загрузить. Минимальный размер изображения может быть L x L, где L - длина стороны квадрата.C программа не показывает ошибки, но не показывает вывод

Теперь у Роя есть N фотографий различных размеров. измерения фотографии обозначаются как Ш х где W - ширина фотографии и H - высота фото

Когда любая фотография закачанные может произойти следующие события:

  1. Если какие-либо из ширина или высота меньше L, пользователю предлагается загрузить еще один. Печать «ЗАГРУЗИТЬ ДРУГОЙ» в этом случае.
  2. Если ширина и высота достаточно велики и (a) если фотография уже квадратная, то она принимается. Печать «ПРИНЯТЬ» в этом случае. (b) пользователю будет предложено обрезать его. Распечатайте «CROP IT» в этом случае.

Код:

#include <stdio.h> 
#include <stdlib.h> 

int main (void) 
{ 
    int len; /* len is the length of the side of square */ 
    scanf("%d",&len); 

    int test; 
    scanf("%d",&test); 

    while(test--) 
    { 
     int w,h; 
     /* w - width of the photo and h- Height of the photo */ 

     scanf("%d %d",&w,&h); 

     if(w==len && h==len) 
     { 
      printf("ACCEPTED\n"); 
     } 
     else if(w>len || w==len && h>len || h==len) 
     { 
      printf("CROP IT\n"); 
     } 
     else 
     { 
      printf("UPLOAD ANOTHER\n");/* print */ 
     } 
    } 

    return 0;/* success */ 
} 
+0

Гоша, пожалуйста IDENT адекватно код. Это сделает все для вас и вас. –

+0

Укажите входные значения. И когда вы говорите «не показывает результат», вы имеете в виду, что нет выхода вообще или он не показывает ожидаемый результат? Наконец, вместо того, чтобы просить кого-то другого отлаживать для вас, это будет более полезно для вас, если вы научитесь эффективно отлаживать - в частности, научитесь использовать отладчик. – kaylum

+0

он работает человек. просто положите getch() в конец перед возвратом – jace

ответ

0

Если ваша проблема в том, что вы не видите никакого вывода вообще, это, вероятно, потому, что он работает в IDE и выходное окно закрывается, прежде чем вы можете увидеть Это.Разумное использование getchar() в конце main() может быть все, что вам нужно, чтобы исправить это, хотя я бы предпочел просто запустить его из командной строки.

В любом случае, поскольку && имеет более высокий приоритет, чем ||, ваше второе условие эффективно:

else if ((w > len) || (w == len && h > len) || (h == len)) 

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

Вам будет лучше следовать текстовым спецификациям, чтобы вы могли проверить его более легко. Это повлекло бы за собой что-то вроде (с немного упрощены функции еще встречи первоначальное намерение):

  • Если любой ширины или высоты меньше L, пользователю предлагается загрузить другую.
  • В противном случае оба достаточно большие. Если фотография уже квадратная, она принимается.
  • В противном случае пользователю предлагается обрезать его.

Код, который гораздо проще:

if ((w < len) || (h < len)) { 
    puts ("UPLOAD ANOTHER"); 
} else if (h == w) { // Both large enough otherwise previous 
    puts ("ACCEPTED"); // condition would have been true. 
} else { 
    puts ("CROP IT"); 
} 
-1

Он покажет выход, но программа работает быстрее, чем вы ожидаете. Он будет закрыт, как только отобразится выход. Он не будет ждать, пока вы его прочитаете. Поэтому использовать getch(); заявил в conio.h, чтобы получить один нажатие клавиши в качестве входных данных после того, как вы напечатали все выходные (прямо перед return заявления. Это заставит программу ждать пользователя нажать клавишу перед выходом.

+0

В C нет ни 'conio.h', ни' getch() ', несмотря на склонность индийских учебных заведений продолжать преподавать людям с мертвыми технологиями :-) – paxdiablo

-1

здесь скриншот он работает без ошибок на меня

ПРИМЕЧАНИЕ.. Это не ответ Но это только единственный способ, чтобы дать пример изображения :) нет необходимости до

enter image description here

.

Возможно, вам нужно только положить getchar(); в конце кода перед возвратом, чтобы позволить паузу на некоторое время. это просто выход очень быстро

0

Благодаря operator precedence,

else if(w>len || w==len && h>len || h==len) 

эквивалентно:

else if(w>len || (w==len && h>len) || h==len) 

Что вам нужно использовать это:

else if((w>len || w==len) && (h>len || h==len) && (w == h)) 

Вы можете упростить, что до:

else if(w >= len && h >= len && w == h) 

, который может быть дополнительно упрощено до:

else if(w >= len && w == h) 
+0

есть еще, что бы ни ... даст результат, если когда-либо. – jace

+1

@jace, я сомневаюсь, что нет выхода. Я думаю, что OP не получает ожидаемый результат. –

+1

Или упростите его еще до 'else if (w> = len && w == h)' или, так как предыдущая проверка имеет * уже * установлена ​​как 'h', так и' w' достаточно велика, 'else if (w = = h) ':-) – paxdiablo

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