Code does not multiply. What am I doing wrong? [closed]

3

I'm trying to do multiplication, but it just does not show the result of the calculation, what's wrong?

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

void removerNL(char *c) {
    c[strlen(c) - 1] = 0;
}

int main()
{
    int resultado;

    printf("\nCodigo do Locacao (somente numeros): ");
    char scodigoLoca[5];
    fgets(scodigoLoca, 5, stdin);
    removerNL(scodigoLoca);
    int codigoLoca = atoi(scodigoLoca);

    printf("\nCodigo do Cliente (somente numeros): ");
    char scodigoCliente[5];
    fgets(scodigoCliente, 5, stdin);
    removerNL(scodigoCliente);
    int codigoCliente = atoi(scodigoCliente);

    printf("\nValor do automovel: ");
    char svalor[10];
    fgets(svalor, 10, stdin);
    removerNL(svalor);
    int valor = atoi(svalor);

    printf("\nQuantidade de automoveis: ");
    char squant[5];
    fgets(squant, 5, stdin);
    removerNL(squant);
    int quant = atoi(squant);

    resultado = valor*quant;


    printf("Codigo de locacao: %d\n", codigoLoca);
    printf("Codigo do cliente: %d\n", codigoCliente);
    printf("Valor: %d\n", valor);
    printf("Quantidade: %d\n", quant);
    printf("\nValor total da locacao: ", resultado);

}
    
asked by anonymous 31.10.2017 / 22:34

1 answer

0

Instead of using fgets() combined with atoi() :

char svalor[10];
fgets(svalor, 10, stdin);
removerNL(svalor);
int valor = atoi(svalor);

You can simply use scanf() :

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

Here's an improved version of your code using scanf() :

#include <stdio.h>

int main( void )
{
    int resultado, codigoLoca, codigoCliente, valor, quant;

    printf("\nCodigo do Locacao (somente numeros): ");
    scanf("%d", &codigoLoca);

    printf("\nCodigo do Cliente (somente numeros): ");
    scanf("%d", &codigoCliente);

    printf("\nValor do automovel: ");
    scanf("%d", &valor);

    printf("\nQuantidade de automoveis: ");
    scanf("%d", &quant);

    resultado = valor * quant;

    printf("Codigo de locacao: %d\n", codigoLoca);
    printf("Codigo do cliente: %d\n", codigoCliente);
    printf("Valor: %d\n", valor);
    printf("Quantidade: %d\n", quant);
    printf("\nValor total da locacao: %d\n", resultado);

    return 0;
}

However, if the attempt is to even use the fgets() / atoi() function pair, I suggest using a single buffer . Note that atoi() does the buffer conversion to an integer value without the need to remove new line from the end.

Here is another improved version of your code using fgets() and atoi() :

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

#define MAX_BUF   (10)

int main()
{
    int resultado, codigoLoca, codigoCliente, valor, quant;
    char buf[MAX_BUF];

    printf("\nCodigo do Locacao (somente numeros): ");
    fgets(buf, MAX_BUF, stdin);
    codigoLoca = atoi(buf);

    printf("\nCodigo do Cliente (somente numeros): ");
    fgets(buf, MAX_BUF, stdin );
    codigoCliente = atoi(buf);

    printf("\nValor do automovel: ");
    fgets( buf, MAX_BUF, stdin );
    valor = atoi(buf);

    printf("\nQuantidade de automoveis: ");
    fgets( buf, MAX_BUF, stdin );
    quant = atoi(buf);

    resultado = valor * quant;

    printf("Codigo de locacao: %d\n", codigoLoca);
    printf("Codigo do cliente: %d\n", codigoCliente);
    printf("Valor: %d\n", valor);
    printf("Quantidade: %d\n", quant);
    printf("\nValor total da locacao: %d\n", resultado);

    return 0;
}
    
31.10.2017 / 23:35