Search code examples
cmatharea

Trouble with an area program in c


So i have been working on a program that will find the area of a shape and i have been getting multiple errors on my compiler saying that i am comparing a pointer and an integer, however i am not... at least i don't think that i am. The program runs, however when i input my string, it crashes

here is my code

#include <stdio.h>
#include <math.h>
int main(void){

char str_1;

printf("Hello! This program will find the area of selceted figrues!\n");
printf("What is your shape? The only shapes that work are Triangles,\
Rectangles, and Circles\n");

scanf("%c", str_1);
    do {
        printf("That is an invalid input the only shapes that work are Triangles, \
        Rectangles, and Circles\n");
        scanf("%c", str_1);
    } 
    while(str_1 != "circle", "rectangle", "triangle");

    if (str_1 == "circle") {
        printf("What is the radius?\n");
        scanf("%i");
    }
}

Solution

  • You should use char * or char[] for strings and restructure your program flow:

    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <memory.h>
    
    void msg() {
        printf("What is your shape? The only shapes that work are Triangles,\
    Rectangles, and Circles\n");
    }
    
    int main(void) {
        char *str_1 = malloc(32);
        float f, f2, f3;
        printf("Hello! This program will find the area of selected figures!\n");
        msg();
        scanf("%s", str_1);
        for (; ;) {
            if (strcmp(str_1, "circle") && strcmp(str_1, "rectangle") && strcmp(str_1, "triangle")) {
                printf("That is an invalid input the only shapes that work are Triangles, \
            Rectangles, and Circles\n");
                msg();
                scanf("%s", str_1);
            }
            if (!strcmp(str_1, "circle")) {
                printf("What is the radius?\n");
                scanf("%f", &f);
                printf("The area is %f\n", f * M_PI * M_PI);
                msg();
                scanf("%s", str_1);
                continue;
            }
            else if (!strcmp(str_1, "rectangle")) {
                printf("What is the length?\n");
                scanf("%f2", &f2);
                printf("What is the height?\n");
                scanf("%f3", &f3);
                printf("The area is %f\n", f2*f3);
                msg();
                scanf("%s", str_1);
                continue;
            }
        }
        free(str_1); /* unreachable */
    }
    

    Test

    Debug/gnu
    Hello! This program will find the area of selected figures!
    What is your shape? The only shapes that work are Triangles,Rectangles, and Circles
    circle
    What is the radius?
    5
    The area is 49.348022
    What is your shape? The only shapes that work are Triangles,Rectangles, and Circles
    cube
    That is an invalid input the only shapes that work are Triangles,         Rectangles, and Circles
    What is your shape? The only shapes that work are Triangles,Rectangles, and Circles
    rectangle
    What is the length?
    2
    What is the height?
    4
    The area is 8.000000
    What is your shape? The only shapes that work are Triangles,Rectangles, and Circles