2016-12-01 4 views
0

Roy möchte sein Profilbild auf Facebook ändern. Jetzt hat Facebook einige Einschränkungen bezüglich der Bildgröße, die wir hochladen können. Minimale Abmessung des Bildes kann L x L sein, wobei L die Länge der Seite des Quadrats ist.C Programm zeigt keinen Fehler, zeigt aber keine Ausgabe

Jetzt hat Roy N Fotos von verschiedenen Dimensionen. Dimension eines Fotos wird bezeichnet als W x H wobei W - Breite des Fotos und H - Höhe des Foto

Wenn ein Foto folgenden Ereignisse hochgeladen auftreten:

  1. Wenn eine der Breite oder Höhe ist kleiner als L, der Benutzer wird aufgefordert, einen anderen hochzuladen. Drucken Sie "UPLOAD ANOTER" in diesem Fall. Wenn Breite und Höhe beide groß genug sind und (a) wenn das Foto bereits quadratisch ist, wird es akzeptiert. Drucken Sie in diesem Fall "AKZEPTIERT". (b) Andernfalls wird der Benutzer aufgefordert, ihn zuzuschneiden. Drucken Sie "CROP IT" in diesem Fall.

Code:

#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

Gosh, bitte ausreichend Code ident. Es wird die Dinge für uns und für Sie leichter machen. –

+0

Bitte geben Sie die Eingabewerte an. Und wenn Sie sagen "zeigt keine Ausgabe an", meinen Sie, dass es überhaupt keine Ausgabe gibt oder die Ausgabe, die Sie erwarten, nicht angezeigt wird? Schließlich, anstatt jemand anderen zu bitten, für Sie zu debuggen, wird es für Sie nützlicher sein, wenn Sie lernen, effektiv zu debuggen - speziell lernen, einen Debugger zu benutzen. – kaylum

+0

es läuft Mann. setzen Sie einfach getch() am Ende vor der Rückkehr – jace

Antwort

0

Wenn Ihr Problem ist, dass Sie überhaupt keine Ausgabe sind zu sehen, ist es wahrscheinlich, weil es in einer IDE läuft und das Ausgabefenster zu schließen, bevor Sie sehen können es.Eine vernünftige Verwendung eines getchar() am Ende von main() könnte alles sein, was Sie brauchen, um dies zu beheben, obwohl ich es wahrscheinlich vorziehen würde, es einfach über die Befehlszeile auszuführen.

Auf jedem Fall, da && eine höhere Priorität als ||, Ihre zweite Bedingung hat, ist effektiv:

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

, die mit der Breite, da mit einem Foto eindeutig falsch ist mehr als das, was notwendig war, in einem Antrag führen würde zum Zuschneiden unabhängig der anderen Teilbedingungen.

Sie wären besser dran, die textlichen Spezifikationen genauer zu befolgen, damit Sie sie einfacher überprüfen können. Das würde zur Folge hat so etwas wie (mit leicht vereinfachte Spezifikationen noch die ursprüngliche Absicht zu treffen):

  • Wenn eine der Breite oder Höhe kleiner als L, Benutzer wird aufgefordert, ein anderes zu laden.
  • Ansonsten sind beide groß genug. Wenn das Foto bereits quadratisch ist, wird es akzeptiert.
  • Andernfalls wird der Benutzer aufgefordert, es zuzuschneiden.

Der Code für das ist ein viel einfacher:

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

Es wird Ausgang zeigen, aber das Programm läuft schneller als erwartet. Es wird geschlossen, sobald die Ausgabe angezeigt wird. Es wird nicht warten, bis du es gelesen hast. So verwenden getch(); in conio.h erklärt einen einzigen Tastendruck als Eingabe zu erhalten, nachdem Sie alle Ausgaben gedruckt haben (direkt vor der return Aussage. Es wird das Programm machen warten, bis der Benutzer eine Taste drücken, bevor Sie verlassen.

+0

Es gibt weder ein 'conio.h' noch ein' getch() 'in C, trotz der Vorliebe für indische Bildungseinrichtungen, weiterhin Leute mit toter Technologie zu unterrichten :-) – paxdiablo

-1

hier ist der Screenshot es ohne Fehler auf mich läuft

. HINWEIS:. Dies ist keine Antwort Aber das ist nur der einzige Weg Bild Beispiel zu geben :) keine Notwendigkeit, bis

enter image description here

.

Vielleicht müssen Sie nur getchar(); am Ende des Codes vor der Rückkehr setzen, um den Bildschirm für eine Weile zu pausieren. es verlässt nur sehr schnell

0

Aufgrund operator precedence,

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

äquivalent ist:

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

Was Sie brauchen, zu verwenden ist:

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

Sie können vereinfachen, dass zu:

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

, die weiter vereinfacht werden:

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

gibt es noch einen, egal was es ist gibt eine Ausgabe wenn überhaupt. – jace

+1

@ Jace, bezweifle ich, dass es keine Ausgabe gibt. Ich denke, dass das OP nicht die erwartete Ausgabe bekommt. –

+1

Oder vereinfache es weiter zu 'else if (w> = len && w == h) 'oder, da die vorherige Überprüfung * bereits * etabliert ist, sind' h' und 'w' groß genug,' else if (w = = h) ':-) – paxdiablo