Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Cubo e quadrado

Como eu faria para que dependendo do parâmetro passado eu exibisse a frase da resposta de maneira diferente? Se b fosse 3, queria que aparecesse ao cubo e se fosse 2, ao quadrado.

#include <stdio.h>
#include <string.h>
void potencia(int a, int b){
    int resultado = 1;
    int i = b;
    for(i; i > 0; i--){
        resultado = resultado * a;
    }
    char subs[10];
    sprintf(subs,"cubo");
    if(b = 3){
        b = subs;
    }
    printf("O número %d elevado a(o) %d é igual a:%d",a,b,resultado);
}
int main(){
    potencia(10,3);
}

Tentei desse modo e aparece a seguinte mensagem na hora de compilar: warning: assignment to 'int' from 'char *' makes integer from pointer without a cast [-Wint-conversion] O que isso significa?

4 respostas

Olá André.

Realmente o if abaixo não faz muito sentido:

if(b = 3){
        b = subs;
    }

Vc está atribuindo 3 a variável b, e como b != 0 ele entra no if e depois atribui o char[] a variável b. Tudo bem estranho, acho q o q vc quer fazer é outra coisa, não!

Att.

Sim, o que eu quero fazer está acima do código

solução!

Opa André, entendi melhor a necessidade. Fiz o ajuste abaixo, espero que lhe atenda:

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

void potencia(int , int);

int main() {
    potencia(2, 2);

    return 0;
}

void potencia(int a, int b)
{
    if (b < 0) {
        printf("Expoente invalido");
        return;
    }

    int resultado = 1;

    for (int i = 0; i < b; i++) {
        resultado *= a;
    }

    char text_exp[8];

    if (b == 2) {
        strncpy(text_exp, "quadrado", 8);
    } else if (b == 3) {
        strncpy(text_exp, "cubo", 4);
    } else {
        snprintf(text_exp, sizeof(text_exp), "%d", b);
    }

    printf("O numero %d elevado ao %s eh igual a %d", a, text_exp, resultado);
}

Att.

É exatamente o que eu queria, Eduardo, obrigado.