O programa tem lógica,mas falta algum detalhe

#include <stdio.h>

int main (){

float numero1,numero2,soma,subtracao,multiplicacao,divisao,resultado;

printf("Digite o primeiro numero:\n");
scanf("%f",&numero1);
printf("Digite o segundo numero:\n");
scanf("%f",&numero2);
soma=numero1+numero2;
subtracao=numero1-numero2;
multiplicacao=numero1*numero2;
divisao=numero1/numero2;

printf("Digite o resultado:\n");
scanf("%f",&resultado);
if (resultado==soma){
printf("Seu resultado e:\n",soma);
}
if (resultado==subtracao){
printf("Seu resultado e:\n",subtracao);
}
if (resultado==multiplicacao){
printf("Seu resultado e:\n",multiplicacao);
}
if (resultado==divisao){
printf("Seu resultado e:\n",divisao);




}

O que faço para o programa funcionar?

Acrescente os especificadores nas funções printf.

Por exemplo
printf("Seu resultado e:\n",multiplicacao);

Para ser capaz de imprimir o valor faça:
printf("Seu resultado e: %f\n",multiplicacao);

especificador %f - para escrever/ler numeros.

O programa ficou assim,mas não deu certo ainda:

#include <stdio.h>

int main() {
  float numero1, numero2, soma, subtracao, multiplicacao, divisao, resultado;

  printf("Digite o primeiro número:\n");
  scanf("%f", &numero1);
  printf("Digite o segundo número:\n");
  scanf("%f", &numero2);

  soma = numero1 + numero2;
  subtracao = numero1 - numero2;
  multiplicacao = numero1 * numero2;
  divisao = numero1 / numero2;

  printf("Digite o resultado que você deseja verificar:\n");
  scanf("%f", &resultado);

  // Verifica se o resultado corresponde a soma
  if (resultado == soma) {
    printf("O resultado corresponde à soma.\n%f",soma);
  }

  // Verifica se o resultado corresponde à subtração
  else if (resultado == subtracao) {
    printf("O resultado corresponde à subtração.\n%f",subtracao);
  }

  // Verifica se o resultado corresponde à multiplicação
  else if (resultado == multiplicacao) {
    printf("O resultado corresponde à multiplicação.\n%f",multiplicacao);
  }

  // Verifica se o resultado corresponde à divisão
  else if (resultado == divisao) {
    printf("O resultado corresponde à divisão.\n%f",divisao);
  }

  // Se o resultado não corresponder a nenhuma das operações, imprime uma mensagem de erro
  else {
    printf("O resultado não corresponde a nenhuma das operações.\n");
  }

  return 0;
}

Programa está compilando erradamente,o que faço?

Essa intereção acima solicita o resulto [digite O RESULTADO],

entretanto naquela imagem, tu digitas o nome de operação.

Afinal, e para digitar o resultado ou escolher uma operação?

É para o usuário escolher entre soma,subtração,divisão e mulitplicação,se digitar soma,tem que somar numero1+numero2,e dar o resultado na tela,só isso e mais nada.

Fez um teste de mesa para avaliar o que seu programa está fazendo?
Pelo jeito não…

Você está comparando se o usuário digitou os valores calculados.

Tem que comparar se o usuário digitou "soma", "subtração", "divisão" ou "multiplicação".
:person_shrugging:t2:

Falando sério, faz um teste de mesa, seguindo passo a passo o que seu programa faz.
Vai te ajudar a entender.
E a praticar sua lógica.

Enquanto você não começar a seguir as orientações que a galera te passa, você não vai sair do lugar.

Pôxa, você já está há anos postando praticamente os mesmos exercícios e as mesmas dúvidas, mas ao mesmo tempo parece que se recusa a seguir as orientações.

Se continuar nessa teimosia, daqui há pouco o pessoal simplesmente vai ignorar suas dúvidas.
:person_shrugging:t2:

1 curtida

Vocês tem toda razão,e estão certos,o problema sou eu,que não entendo o que tenho que fazer,realmente a ficha ainda não caiu,me desculpa.Acho que eu sou realmente burro na programação,pois não encaixo o código,eu fiz curso de programação em Pascal com o turbo pascal 7 se não me engano,e depois fui para Delphi 7 da borland,mas rodei na programação em Delphi 7,pois não encaixava o código,esse é o meu problema, eu não encaixo o código da programação,por isso rodei,Entendeu?

1 - Aprender lógica de programação;
2 - Praticar lógica de programação;
3 - Fazer testes de mesa do seu programa;

É porque você está acostumado a só copiar códigos prontos.
Tem que se acostumar a resolver o problema e isso só se desenvolve praticando.

E novamente, deixa a preguiça de lado, pega um papel e caneta e faz um teste de mesa dos seus programas no papel mesmo, pra você entender o que está fazendo e o melhor, para fixar o conhecimento.

Não, você só não quer praticar e aprender do jeito certo você insiste em copiar e colar códigos prontos achando que vai aprender por osmose.

:person_shrugging:t2:

1 curtida

Consegui resolver sem pedir ajuda para o google ou google bard,fiz sozinho,o programa ficou assim:



#include <stdio.h>

int main (){

float numero1,numero2,soma,subtracao,multiplicacao,divisao;
char resultado;


printf("Digite o primeiro numero:\n");
scanf("%f",&numero1);
printf("Digite o segundo numero:\n");
scanf("%f",&numero2);
soma=numero1+numero2;
subtracao=numero1-numero2;
multiplicacao=numero1*numero2;
divisao=numero1/numero2;

printf("Escolha o resultado:\n");
scanf("%s",&resultado);

if (resultado=='+'){
printf("Seu resultado e:%.2f\n",soma);
}
if (resultado=='-'){
printf("Seu resultado e:%.2f\n",subtracao);
}
if (resultado=='/'){
printf("Seu resultado e:%.2f\n",multiplicacao);
}
if (resultado=='*'){
printf("Seu resultado e:%.2f\n",divisao);

}
}

Não consegui colocar acento dentro do codeblocks,tenho que configurar o teclado no fedora 39? ou é alguma configuração que falta dentro do codeblocks?

Porque se eu faço 10 dividido por 10,dá 100(Dá cem),isso está errado,não está?

Porque escreveu, olha lá. Multiplicacao e Divisão nos lugares trocados.

1 curtida

Já corrigi,obrigado pelo toque.

Fez um teste de mesa?

Um detalhe: não precisa fazer todas as contas antes. Vc poderia ler a opção, e só depois faça apenas a conta que foi pedida. Por exemplo:

float numero1, numero2;
printf("Digite o primeiro numero:\n");
scanf("%f", &numero1);
printf("Digite o segundo numero:\n");
scanf("%f", &numero2);

char resultado;
printf("Escolha o resultado:\n");
scanf("%s", &resultado);

// A mensagem é a mesma para todos, então talvez valha a pena fazer isso
// Assim, se a mensagem mudar, vc só precisa trocar uma vez aqui
const char* formato = "Seu resultado é: %.2f\n";
if (resultado == '+') {
    printf(formato, numero1 + numero2);
} else if (resultado == '-') {
    printf(formato, numero1 - numero2);
} else if (resultado == '/') {
    printf(formato, numero1 / numero2);
} else if (resultado == '*') {
    printf(formato, numero1 * numero2);
} else {
    printf("Opção inválida\n");
}

Ou ainda, usando switch no lugar dos if’s:

switch (resultado) {
    case '+':
        printf(formato, numero1 + numero2);
        break;
    case '-':
        printf(formato, numero1 - numero2);
        break;
    case '/':
        printf(formato, numero1 / numero2);
        break;
    case '*':
        printf(formato, numero1 * numero2);
        break;
    default:
        printf("Opção inválida\n");
}

Pessoal,vou deixar o programa como está,porque está funcionando corretamente,e outra no Fedora 39 com KDE eu não conseguia colocar acento dentro do codeblocks,mas no Linux Debian 12.4 com KDE eu consigo colocar acento dentro do codeblocks,e obrigado pelos toques pessoal.

O programa ficou assim:

#include <stdio.h>

int main (){

float numero1,numero2,soma,subtracao,multiplicacao,divisao;
char resultado;


printf("Digite o primeiro numero:\n");
scanf("%f",&numero1);
printf("Digite o segundo numero:\n");
scanf("%f",&numero2);
soma=numero1+numero2;
subtracao=numero1-numero2;
multiplicacao=numero1*numero2;
divisao=numero1/numero2;

printf("Escolha o resultado:\n");
scanf("%s",&resultado);

if (resultado=='+'){
printf("Seu resultado é:%.2f\n",soma);
}
if (resultado=='-'){
printf("Seu resultado é:%.2f\n",subtracao);
}
if (resultado=='*'){
printf("Seu resultado é:%.2f\n",multiplicacao);
}
if (resultado=='/'){
printf("Seu resultado é:%.2f\n",divisao);

}
}

Off-Tópico | Adendo.
Suponho, sendo não para a primeira pergunta, e talvez sim para segunda: porque se compreendo as duas perguntas, sei que quase sempre os estudantes observam suas soluções no console/terminal — e o console ou terminal — que tem um código de caractere diferente da programação.

Em tese, o código de caracteres do programa é mesmo que há no código-fonte, então para exibir acentos gráficos, o código de caracteres do terminal terá ser igual aquele do arquivo-fonte, ou o código de caracteres do arquivo-fonte terá ser igual ao do terminal.

Por exemplo, a combinação mais comum, que falha acentos:
São quase sempre incompatíveis.
Terminal: OEM 850
código-fonte/programa: UTF-8

É precisa escolher e convencionar um código de caracteres igual no programa e terminal!
Sugiro que determine qual está no terminal e configure igualmente no editor do Code::Blocks