2015-10-06 2 views
-2
#include<stdio.h> 

float length() { 
    float length; 
    printf("Input Length: "); 
    scanf("%f", &length); 
    return length; 
} 

float width(){ 
    float width; 
    printf("Input Width: "); 
    scanf("%f", &width); 
    return width; 
} 

float area(){ 
    float area=length * width; 
    return area; 
} 

float perimeter(){ 
    float perimeter=(length*2) + (width*2); 
    return perimeter; 
} 

int main(){ 
    printf("Area = %f\n", area()); 
    printf("Perimeter = %f\n", perimeter()); 
} 

Invalid Операнд под площадью и периметр skafhasfhsafsakhfsakfhasfkhsafksahfakshfaskfhasfkshfaskfhsfashfkashfasfhasfhasfksahfasfasfasfasfsfsfsfasНедопустимый операнда в двоичный *

+2

Вы можете разместить объявление о '' length' и width'? Если они объявлены как 'float', как вы утверждаете, этот код компилируется. –

+2

Где они объявлены? – immibis

+1

Возможно, вы можете избавиться от нисходящего потока, если вы отредактируете свой вопрос с помощью объявлений. –

ответ

0

Вот быстрое решение:

#include <stdio.h> 

float width(){ 
    float width; 
    printf("Input Width: "); 
    scanf("%f", &width); 
    return width; 
} 

float length(){ 
    float length; 
    printf("Input Length: "); 
    scanf("%f", &length); 
    return length; 
} 

float area() { 
    return length() * width(); 
} 

float perimeter(){ 
    float perimeter=(length()*2) + (width()*2); 
    return perimeter; 
} 

int main(){ 
    printf("Area = %f\n", area()); 
    printf("Perimeter = %f\n", perimeter()); 
} 

но вот как бы я это сделать:

#include <stdio.h> 

float width(){ 
    float width; 
    printf("Input Width: "); 
    scanf("%f", &width); 
    return width; 
} 

float length(){ 
    float length; 
    printf("Input Length: "); 
    scanf("%f", &length); 
    return length; 
} 

float area(float length, float width) { 
    return length * width; 
} 

float perimeter(float length, float width){ 
    return length*2 + width*2; 
} 

int main(){ 
    float l = length(); 
    float w = width(); 
    printf("Area = %f\n", area(l, w)); 
    printf("Perimeter = %f\n", perimeter(l, w)); 
} 
+0

Это «быстрое решение» имеет те же ошибки, что и сообщение OP. – owacoder

+0

UPS Я вставил свой код вместо моего ( –

+0

Ну, да, это даст правильный результат, но требует дублирования ввода пользователем. (Это почти никогда не рекомендуется.) – owacoder

2

length и width в area и perimeter вычисляется как указатели на функции, для которой умножение не определены.

+0

как его отредактировать? Я все еще участвую в этом методе –

+2

Либо сделайте глобальные переменные, которые занимают длину и ширину (просто, но не рекомендуется) или изменяют 'area' и' perimeter', чтобы принимать параметры, определяющие длину и ширину (более сложные, но более удобные для обслуживания) , – owacoder