mperusso Postado Março 31, 2016 Denunciar Share Postado Março 31, 2016 Estou começando a aprender C na faculdade e estou fazendo um código que faz uma média de notas, meu problema é o seguinte, a conta é (a+b/2) e o programa está dividindo o b por 2 e somando ao a, por e exemplo 6+6/2 está dando 9 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Março 31, 2016 Denunciar Share Postado Março 31, 2016 (editado) resultado = (a+b)/2; ( e ) da prioridade a a+b, si tiver (((1+2)+3)+4) sempre tem prioridade o que estiver mais adentro, ou seja que se resolveria 1+2, depois 3+3 e por ultimo 6 + 4. Editado Março 31, 2016 por vangodp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mperusso Postado Março 31, 2016 Autor Denunciar Share Postado Março 31, 2016 (editado) valeu pela ajuda, agr tenho um novo problema, Se eu digito numero quebrado na nota A pula direto pro resultado sem fazer a nota b e se eu boto resultado quebrado na nota B da resultado errado. Ignore as variveis que não to utlizando, vou usar elas dps pra incluir presença int main(){ float a,b,m,aa,am; setlocale(LC_ALL,"portuguese"); printf("Digite nota prova A:\n"); scanf("%f", &a); printf("Digite nota prova B:\n"); scanf("%f", &b); if(a+b>=12){ m = (a+b)/ 2; printf("Aprovado com média= %f",m);} else { m= (a + b)/2; printf("reprovado com média= %f",m);} return 0; } Editado Março 31, 2016 por mperusso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mperusso Postado Março 31, 2016 Autor Denunciar Share Postado Março 31, 2016 Consegui já, se botar virgula funciona mas se botar tipo 6.75 não.. qual o comando para proibir de botar ponto? e como faço pra limitar o resultado para por exemplo 3 caracteres ? e porcentagem sair com o %? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Março 31, 2016 Denunciar Share Postado Março 31, 2016 você ta se explicando fatal, não entendo nada. Quando tiver un scanf e for ler um float %f você deve por com ponto, tipo 1.2, por virgula ta errado, C não aceita virgula a menos que seja um string. Sobre o %, se o que você quer é imprimir ele no printf use %% duas vezes, pois um só % é considerado o operador modulo que extrae o resto de uma divisão, tipo 5%3 = 2, o 2 é o resultado que você obtêm de usar o operador modulo. para limitar a um int de no maximo 999 acho que você pode usar scanf("%3d", &numero); mas não sei si da certo isso. en todo caso você pode fazer um laço while que repete a entrada de dados por enquanto que o numero introduzido seja maior de 999. Algo como: int n = 0; while(n>999){ printf("Un numero menor que 999\n"); scanf("%d", &n); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe=progr++ Postado Abril 1, 2016 Denunciar Share Postado Abril 1, 2016 (editado) 21 horas atrás, mperusso disse: valeu pela ajuda, agr tenho um novo problema, Se eu digito numero quebrado na nota A pula direto pro resultado sem fazer a nota b e se eu boto resultado quebrado na nota B da resultado errado. Ignore as variveis que não to utlizando, vou usar elas dps pra incluir presença int main(){ float a,b,m,aa,am; setlocale(LC_ALL,"portuguese"); printf("Digite nota prova A:\n"); scanf("%f", &a); printf("Digite nota prova B:\n"); scanf("%f", &b); m = (a+b)/ 2; if(m>=6){ printf("Aprovado com média= %.2f");} else { printf("reprovado com média= %.2f");} return 0; } // cloca assim porque no else não precisa colocar porque ele já e falso se não der o resultado para aprovado logo sera reprovado,no if (m>=12) vai da errado porque tem q ser >=6 para da certo porque 6 e a media para passar, espero ter ajudado. vlws // ass. Felipe=prog++; Editado Abril 1, 2016 por Felipe=progr++ Achei o erro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Aristóteles Postado Abril 4, 2016 Denunciar Share Postado Abril 4, 2016 Em 3/31/2016 at 16:00, mperusso disse: Consegui já, se botar virgula funciona mas se botar tipo 6.75 não.. qual o comando para proibir de botar ponto? e como faço pra limitar o resultado para por exemplo 3 caracteres ? e porcentagem sair com o %? http://www.cprogressivo.net/2012/11/A-funcao-printf-Caracteres-Especais.html :D #include <stdio.h> #include <stdlib.h> int main () { //utilize a barra invertida e enfatize o caractere digitando duas vezes. printf ("imprimindo o \%%"); return 0; } Em 3/31/2016 at 19:08, vangodp disse: Quando tiver un scanf e for ler um float %f você deve por com ponto, tipo 1.2, por virgula ta errado, C não aceita virgula a menos que seja um string. Quando se usa setlocale (LC_ALL, "Portuguese"), a localidade do computador é mudada para ptbr, por isso a sintaxe dos números reais muda para vírgula 2,2 e não 2.2. Mas isso nem é tão problemático assim. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 printf("pauloricardo"); Postado Abril 6, 2016 Denunciar Share Postado Abril 6, 2016 Eai pessoal, sou novo aqui no forum e também na linguagem em C. estou no 2 semestre do curso de SI, e foi passado uma lista de problemas para ser resolvido cujo enuncioado é esse : --------------------------------------------------------------------------------------------------------------------------- Desenvolva um programa em C que leia dois vetores A e B com 10 elementos cada. Crie um vetor C, que é a junção dos dois outros vetores. Desta forma, C deverá ter o dobro de elementos de A e B. Ao final mostrar os dados do vetor C. ----------------------------------------------------------------------------------------------------------------------------- o que não estou entendendo e: como o vetor C terá o dobro de elementos do A e do B???? segue a linha de codigo: ----------------------------------------------------------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> main() { int A[10],B[10],C[10]; int i; printf("******************************************\n"); printf("Digite os numeros abaixo na posicao A e B.\n"); printf("******************************************\n"); for(i=0;i<10;i++) { printf("\nInsira dez valores inteiros na posicao A: \n"); scanf("%d",&A); } for(i=0;i<10;i++) { printf("\nInsira dez valores inteiros na posicao B: \n"); scanf("%d",&B); } for(i=0;i<10;i++) { C= A + B; printf("\nO vetor C e : %d",C); } return 0; } -------------------------------------------------------------------------------------------------------------------------- Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Abril 6, 2016 Denunciar Share Postado Abril 6, 2016 talvez seja algo tipo vetor a = 1,2,2,3,7,8; vetor b = 2,4,7,8; E o vetor B deva ficar tal como: vetor b = 1,2,2,2,3,4,7,7,8,8 Não lembro muito bem si é isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
mperusso
Estou começando a aprender C na faculdade e estou fazendo um código que faz uma média de notas, meu problema é o seguinte, a conta é (a+b/2) e o
programa está dividindo o b por 2 e somando ao a, por e exemplo 6+6/2 está dando 9
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.