MAC2166 Introdução à Computação para a Engenharia
# include <stdio.h> int main(){ int nusp, m, n, i, j, soma, cont; printf ("Entre com seu no. USP: "); /* na linha abaixo use o numero USP */ scanf ("%d", &nusp); printf ("nusp = %d\n", nusp); m = nusp % 3 + 2; n = 6 - m; printf("m = %d, n = %d\n", m, n); soma = 0; cont = 1; i = 1; j = 1; while (i <= m){ if (j <= n && cont < 4){ cont = cont + 1; soma = soma + i*n; printf("i = %d, j = %d, soma = %d\n", i, j, soma); j = j + 1; } else { j = 1; i = i + 1; } } /* O ultimo valor a ser impresso e' o da variavel cont */ printf("i = %d, j = %d, cont = %d\n", i, j, cont); return 0; }
A resposta depende do resto da divisão do seu número USP por 3. Teste com o seu
no. USP e compare a resposta.
(0) nusp % 3 == 0. Veja os exemplos abaixo.
Entre com seu no. USP: 1234560
nusp = 1234560
m = 2, n = 4
i = 1, j = 1, soma = 4
i = 1, j = 2, soma = 8
i = 1, j = 3, soma = 12
i = 3, j = 1, cont = 4
Entre com seu no. USP: 12
nusp = 12
m = 2, n = 4
i = 1, j = 1, soma = 4
i = 1, j = 2, soma = 8
i = 1, j = 3, soma = 12
i = 3, j = 1, cont = 4
Entre com seu no. USP: 0
nusp = 0
m = 2, n = 4
i = 1, j = 1, soma = 4
i = 1, j = 2, soma = 8
i = 1, j = 3, soma = 12
i = 3, j = 1, cont = 4
(1) nusp % 3 == 1.
Entre com seu no. USP: 1234561
nusp = 1234561
m = 3, n = 3
i = 1, j = 1, soma = 3
i = 1, j = 2, soma = 6
i = 1, j = 3, soma = 9
i = 4, j = 1, cont = 4
Entre com seu no. USP: 13
nusp = 13
m = 3, n = 3
i = 1, j = 1, soma = 3
i = 1, j = 2, soma = 6
i = 1, j = 3, soma = 9
i = 4, j = 1, cont = 4
Entre com seu no. USP: 1
nusp = 1
m = 3, n = 3
i = 1, j = 1, soma = 3
i = 1, j = 2, soma = 6
i = 1, j = 3, soma = 9
i = 4, j = 1, cont = 4
(2) nusp % 3 == 2.
Entre com seu no. USP: 1234562
nusp = 1234562
m = 4, n = 2
i = 1, j = 1, soma = 2
i = 1, j = 2, soma = 4
i = 2, j = 1, soma = 8
i = 5, j = 1, cont = 4
Entre com seu no. USP: 14
nusp = 14
m = 4, n = 2
i = 1, j = 1, soma = 2
i = 1, j = 2, soma = 4
i = 2, j = 1, soma = 8
i = 5, j = 1, cont = 4
Entre com seu no. USP: 2
nusp = 2
m = 4, n = 2
i = 1, j = 1, soma = 2
i = 1, j = 2, soma = 4
i = 2, j = 1, soma = 8
i = 5, j = 1, cont = 4
Entre com um inteiro: 100 Quadrados pares: 4 16 36 64 100
/* * Solucao 1: Eta solucao bonita, curta e simples. */ #include <stdio.h> int main() { int n, k; printf("Digite valor de n: "); scanf("%d", &n); printf("Quadrados pares:\n"); for (k = 2; k*k <= n; k=k+2) printf("%d\n", k*k); return 0; } /* * Solucao 2: solucao 1 com while no lugar do for */ #include <stdio.h> int main() { int n, k; printf("Digite valor de n: "); scanf("%d", &n); printf("Quadrados pares:\n"); k = 2; while (k*k <= n) { printf("%d\n", k*k); k = k + 2; } return 0; } /* * Solucao 3: solucao arroz com feijao * */ #include <stdio.h> int main() { int n, k; printf("Digite valor de n: "); scanf("%d", &n); printf("Quadrados pares:\n"); k = 1; while (k*k <= n) { if ((k*k)%2 == 0) { printf("%d\n", k*k); } k = k + 1; } return 0; } /* * Solucao 4: identica a solucao 4, com uma variavel * para guardar o candidato a quadrado par. */ #include <stdio.h> int main(){ int n, k; int quadrado; /* guarda k*k */ printf("Digite valor de n: "); scanf("%d", &n); printf("Quadrados pares:\n"); k = 1; quadrado = 1; while (quadrado <= n) { if (quadrado%2 == 0) { printf("%d\n", quadrado); } k = k + 1; quadrado = k*k; } return 0; } /* * Solucao 5: solucao com mais arroz e com mais feijao * */ #include <stdio.h> int main(){ int n, k; int quadrado; printf("Digite valor de n: "); scanf("%d", &n); printf("Quadrados pares:\n"); k = 1; while (k <= n) { quadrado = k*k; if (quadrado%2 == 0 && quadrado <= n) { printf("%d\n", quadrado); } k = k + 1; } return 0; } /* * Solucao 6: identica a solucao 5, imprime uma * mensagem apropriada se n<4. * */ #include <stdio.h> int main(){ int n, k; int quadrado; printf("Digite valor de n: "); scanf("%d", &n); if (n >= 4) { printf("Quadrados pares:\n"); k = 1; while (k <= n) { quadrado = k*k; if (quadrado%2 == 0 && quadrado <= n) { printf("%d\n", quadrado); } k = k + 1; } } else { printf("Nao ha quadrados pares entre 1 e %d.\n",n); } return 0; }
Entre com dois inteiros: 8 12 Fracao irredutivel: 2/3 Entre com dois inteiros: 21 7 Fracao irredutivel: 3/1 Entre com dois inteiros: 2 9 Fracao irredutivel: 2/9 Entre com dois inteiros: 3 3 Fracao irredutivel: 1/1
/* * Solucao 1: Solucao curta e simples. * */ #include <stdio.h> int main(){ int m, n, k, mdc; printf("Entre com dois inteiros: "); scanf("%d %d", &m, &n); /* calcule mdc(m,n) */ mdc = 1; for (k = 2; k <= m; k++) if (m % k == 0 && n % k == 0) mdc = k; printf("Fracao irredutivel: %d/%d\n", m/mdc, n/mdc); return 0; } /* * Solucao 2: identica a solucao 1, com while no lugar de * for. */ #include <stdio.h> int main() { int m, n, k, mdc; printf("Entre com dois inteiros: "); scanf("%d %d", &m, &n); /* calcule mdc(m,n) */ mdc = 1; k = 2; while (k <= m) { if (m % k == 0 && n % k == 0) mdc = k; k++; } printf("Fracao irredutivel: %d/%d\n", m/mdc, n/mdc); return 0; } /* * Solucao 3: nesta solucao o calculo do mdc esta implicito. * */ #include <stdio.h> int main() { int m, n, k; printf("Entre com dois inteiros: "); scanf("%d %d", &m, &n); k = 2; while (k <= m && k <= n) { if (m % k == 0 && n % k == 0) { m = m / k; n = n / k; } else { k++; } } printf("Fracao irredutivel: %d/%d\n", m, n); return 0; } /* * Solucao 4: identica a solucao 3, um pouco mais eficiente. * */ #include <stdio.h> int main() { int m, n, k; int min; printf("Entre com dois inteiros: "); scanf("%d %d", &m, &n); if (m < n) { min = m; } else { min = n; } /* nao ha divisor de m e n maior que min */ k = 2; while (k <= min) { if (m % k == 0 && n % k == 0) { m = m / k; n = n / k; } else { k++; } } printf("Fracao irredutivel: %d/%d\n", m, n); return 0; } /* * Solucao 5: identica a solucao 2. Usa o algoritmo de * Euclides. */ #include <stdio.h> int main() { int m, n, mdc; int numerador, denominador, resto; printf("Entre com dois inteiros: "); scanf("%d %d", &m, &n); /* calcule mdc(m,n) usando o algoritmo de Euclides */ numerador = m; denominador = n; resto = numerador % denominador; while (resto != 0) { numerador = denominador; denominador = resto; resto = numerador % denominador; } mdc = denominador; printf("Fracao irredutivel: %d/%d\n", m/mdc, n/mdc); return 0; } /* * Solucao 6: identica a solucao 5. Usa o do-while no * lugar de while. * OBS: muitas turmas nao viram o do-while: * * do * { * [...lista de comandos...]; * } * while (condicao); * * e' equivalente a * * [...lista de comandos...]; * while (condicao) * { * [...lista de comandos...]; * } */ #include <stdio.h> int main() { int m, n, mdc; int numerador, denominador, resto; printf("Entre com dois inteiros: "); scanf("%d %d", &m, &n); /* calcule mdc(m,n) usando o algoritmo de Euclides */ numerador = m; denominador = n; do { resto = numerador % denominador; numerador = denominador; denominador = resto; } while (resto != 0); mdc = numerador; printf("Fracao irredutivel: %d/%d\n", m/mdc, n/mdc); return 0; }