2016-07-03 23 views
-1

Ich versuche C zu lernen, aber ich habe Schwierigkeiten bei der Manipulation eines bestimmten Codes. Ein Benutzer wählt zwischen Quadrieren einer Zahl und Schrumpfen (Dividieren durch 2). Ich kann die Funktion Schrumpfen erhalten, um erfolgreich ein Ergebnis zurückzugeben, wenn die Eingabe und Ausgabe eine Ganzzahl bleibt. Ich brauche jedoch die Ausgabe als float oder double zurückzugeben und ich kann es nicht zum laufen bringen. Ich bin an dieser Stelle ratlos. Jede Eingabe würde sehr geschätzt werden.C-Teilung Antwort

Feralix

#include <stdio.h> 
int main() 
{ 
/* variable definition: */ 
    int intValue, menuSelect, Results; 
    intValue = 1; 
     // While a positive number 
while (intValue > 0) 
{ 
    printf ("Enter a positive Integer\n: "); 
    scanf("%d", &intValue); 
    if (intValue > 0) 
    { 
    printf ("Enter 1 to calculate Square, 2 to Calculate Shrink \n: "); 
    scanf("%d", &menuSelect); 
    if (menuSelect == 1) 
    { 
     // Call the Square Function 
     Results = Square(intValue); 
     printf("Square of %d is %d\n",intValue,Results); 
    } 
    else if (menuSelect == 2) 
    { 
     // Call the Shrink function 
     Results = Shrink(intValue); 
     printf("Shrink of %d is %f\n",intValue,Results); 
    } 
    else 
     printf("Invalid menu item, only 1 or 2 is accepted\n"); 
    }  
    }  
return 0; 
} 
/* function returning the Square of a number */ 
int Square(int value) 
{ 
    return value*value; 
} 
/* function returning the Shrink of a number */ 
float Shrink(int value) 
{ 
    return value/2.0; 
} 
+0

Sie haben ein paar Probleme. Ich gebe dir ein paar Hinweise. Welche Art von Variable ist Ergebnis? Float oder Int? Wie wird es erklärt? Wie haben Sie es in Ihrer Printf-Anweisung verwendet? –

Antwort

0

Results ist ein int, so dass Sie keine Dezimalstellen verlieren werden, die von Shrink berechnet wurde, wenn Sie zuweisen, was Shrink kehrt zu ihm. Eine mögliche Lösung wäre, Results als float zu deklarieren.

+0

Vielen Dank für die schnelle Antwort. Ich habe eine Stunde damit verbracht, dies zu manipulieren und nach einer Antwort zu suchen. So eine einfache Sache zu übersehen. – Feralix

0

Die Funktion gibt in der Tat einen Schwimmer, Sie müssen nur Ergebnisse varaible als Schwimmer statt int ..

float Results; 
+0

Vielen Dank für die schnelle Antwort. Ich konnte nicht feststellen, was ich falsch gemacht habe und konnte kein Beispiel finden. Der Code läuft jetzt. – Feralix

0

erklären, wie die anderen genannten Ergebnisse als Integer-Typ deklariert ist. Sie müssen den Ergebnistyp ändern.

Auch heads-up: Sie müssen den Format-Bezeichner der Ergebnisse für printf in ändern (menuSelect == 1). Auch Ihr else wird nicht ausgeführt, wenn Sie eine negative Zahl auswählen, damit der Benutzer nicht weiß, dass er keine negativen Zahlen auswählen kann.

+0

Vielen Dank für die schnelle Antwort. Ich habe eine Stunde damit verbracht, dies zu manipulieren und nach einer Antwort zu suchen. So eine einfache Sache zu übersehen. Ich werde auch versuchen, printf zu ändern, es ist ein weiterer Gegenstand, den ich übersehen habe. – Feralix