n > 0
e devolve o seu primeiro dígito, seu último dígito
e altera o valor de n removendo seu primeiro e último
dígitos. Exemplos:
valor inicial de n | primeiro dígito | último dígito | valor final de n |
732 | 7 | 2 | 3 |
14738 | 1 | 8 | 473 |
1010 | 1 | 0 | 1 |
78 | 7 | 8 | 0 |
7 | 7 | 7 | 0 |
Dizemos que um número natural n é palíndromo se lido da direita para a esquerda ou da esquerda para a direita é o mesmo número. Exemplos:
Solução:
#include <stdio.h> void RemoveExtremos(int *n, int *pri, int *ult){ int tn,pot = 1; tn = *n; while(tn >= 10){ tn = tn/10; pot *= 10; } *pri = *n / pot; *ult = *n % 10; *n = *n % pot; *n = *n / 10; } int main(){ int n,pri,ult,pal = 1; printf("Digite n: "); scanf("%d", &n); while(n > 0){ RemoveExtremos(&n, &pri, &ult); if(pri != ult) pal = 0; } if(pal) printf("Palíndromo\n"); else printf("Não é palíndromo\n"); return 0; }
m
linhas e n
colunas)
pode ser armazenada em um vetor com mxn elementos,
conforme o seguinte esquema, onde as linhas da matriz
são armazenadas consecutivamente no vetor:
O elemento na posição (i,j)
da
matriz pode ser acessado como o elemento na posição
k
do vetor, onde k = j + i * n;
O mapeamento inverso pode ser obtido usando j = k % n;
e i = k / n;
nativ
atividades
de um aluno presentes em um vetor notas_aluno[]
do tipo float, usando o seguinte protótipo:float media_aluno(float notas_aluno[], int nativ);
Dados dois valores inteiros nalunos
e nativ
,
representando o número de alunos de uma classe e
o número de atividades realizadas, faça um programa que lê
as notas das atividades de todos alunos em um mesmo vetor
(representação linearizada da matriz de notas, com uma linha para cada aluno).
Na sequência, o programa deve calcular a média de cada aluno,
utilizando a função anterior, e contar o número
de alunos aprovados.
Solução:
#include <stdio.h> #define LIM 500 float media_aluno(float notas_aluno[], int nativ){ float soma = 0.0; int i; for(i = 0; i < nativ; i++){ soma += notas_aluno[i]; } return soma/nativ; } int main(){ float notas[LIM], media; int nativ, nalunos; int i,j,k,cont_aprov = 0; printf("Numero de alunos: "); scanf("%d", &nalunos); printf("Numero de atividades: "); scanf("%d", &nativ); if(nativ*nalunos > LIM) return 0; /*lendo as notas das atividades de todos alunos em um mesmo vetor*/ for(i = 0; i < nalunos; i++){ printf("Digite as notas do aluno #%d: ", i+1); for(j = 0; j < nativ; j++){ k = j + i*nativ; scanf("%f", ¬as[k]); } /*calculando a média de cada aluno, utilizando a função anterior*/ for(i = 0; i < nalunos; i++){ media = media_aluno(¬as[i*nativ], nativ); printf("media do aluno #%d: %f\n",i+1, media); if(media >= 5.0) cont_aprov++; } printf("Aprovados: %d\n", cont_aprov); return 0; }