O exercício pede o que eu faça um código com uma matriz, onde eu peça uma linha qualquer ao usuário, e nela será feito a soma ou média dos elementos contidos.
O problema é na hora da decisão do usuário na hora de escolher entre média ou soma, escrevendo a letra inicial de uma dessa palavras em maiúsculo. O "If" simplesmente não funciona, e eu acho que seja essa minha dificuldade, pois quando tirei o if, a soma funcionou normalmente (com o código atual a soma fica igual a zero no printf final). E sim, eu pesquisei a fundo sobre o tipo char, mas mesmo assim não consegui resposta alguma para a solução do meu problema :/
Segue o código:
Obs: Claramente, o meu código não está terminado (ainda falta pôr a parte da média), a partir do momento em que eu solucionar esse problema principal, creio que conseguirei finalizá-lo sem mais contratempos.
#include <stdio.h>
#include <stdlib.h>
#include <locale>
int main (void){
setlocale (LC_ALL, "Portuguese");
float M [2][2], media;
int lin, x, soma1, soma2;
char op[5];
printf ("Preencha a matriz: \n");
for (int l = 0; l<2; l++) { //linha
for (int c = 0; c<2; c++ ) { //coluna
scanf ("%f", &M[l][c]);
}
}
printf ("Que operação você quer? S ou M?\n"); //Entrada do char, escolha da operação
scanf ("%s", op);
printf ("Em qual linha da matriz a operação deve ser realizada?\n");
scanf ("%d", &x);
for (int l = x; l==x; l++) {
for (int c = 0; c<2; c++ ){
printf ("%f \n", M[l][c]);//só mostrando os numeros da linha (ignore)
if (op=="S") //tenho quase certeza que o problema se encontra aqui
soma1= M[l][c]+soma1;
}
}
printf ("O resultado da soma deu %d", soma1); //e na hora de mostrar a soma, ela sempre aparece como zero
}
Pessoal estou com problemas ao fazer um programa para calcular a media de duas notas. Segue o codigo:
int main(int argc, char *argv[]) {
float nota1,nota2, media;
printf ("Digite a primeira nota");
scanf ("%d", ¬a1);
do {
printf ("digite 1 como nota\n");
scanf ("%d", ¬a1);
} while (nota1==0);
if (nota1 !=0)
{
printf ("digite a nota 2\n");
scanf ("%d", ¬a2);
}
media=(nota1+nota2)/2;
printf ("a media eh %d.2\n ",media);
return 0;
}
Ele compila legal e roda. Só que aparece a mensgem "Digite 1 como nota que só deveria aparecer quando o usuário digitasse 0 (Zero).
a ideia é que o usuario nunca possa registrar zero como nota, no minimo 1.
SELECT
to_char(a.dt_entrada,'yyyy') ano,
COUNT(A.NR_ATENDIMENTO) total_atendimento,
COUNT(A.NR_ATENDIMENTO)/12 media
FROM TASY.ATENDIMENTOS_V A
WHERE decode(upper(:tp_data), 'E', a.dt_entrada, 'A', a.dt_alta) BETWEEN :DT_INICIAL AND TASY.FIM_DIA(:DT_FINAL)
and a.dt_cancelamento is null
and a.cd_setor_atendimento in (126,130, 132, 29)
and to_number(a.cd_estabelecimento) = 1
group by to_char(a.dt_entrada,'yyyy')
order by 1 desc
Com o seguinte retorno:
ano total_atendimento media
2018 21570 1797,5
2017 21369 1780,75
2016 16469 1372,41666666667
2015 10736 894,666666666667
Nela vejo a média de atendimentos em casa ano. Numa consulta de 1 de jan de 2015 até 31 de dez de 2017, tudo funciona normalmente. Mas se eu colocar por exemplo de 1 de jan de 2015 até 30 de set de 2018, tenho um problema. Deveria dividir por 9 e não por 12.
Alguém saberia me indicar como devo realizar esta consulta de forma a calcular os meses que estão no período indicado, com quebra por ano?