Linguagem C
Exercício resolvido - Considere o problema: dado n e uma seqüência com n números...
21/10/2013 19:06Considere o problema: dado n e uma seqüência com n números, imprimir a seqüência na ordem inversa a que foi lida. Fazer isso sem usar vetor. Sugestão: faça uma função recursiva imprime, que lê um número, chama a si própria se não chegou ao fim da seqüência e imprime o número lido.
Solução:
//Erick Vivan
#include <stdio.h>
#include <stdlib.h>
void IMPRIME(int n)
{
int termo;
if(n == 1)
{
printf("termo = ");
scanf("%d", &termo);
printf("[%d] ", termo);
}
else
{
printf("termo = ");
scanf("%d", &termo);
IMPRIME(n - 1);
printf("[%d] ", termo);
}
}
main()
{
int n;
printf("Digite a quantidade de termos da sequencia: ");
scanf("%d", &n);
printf("\n");
IMPRIME(n);
printf("\n\n");
system("pause");
}
Exemplo: Passagem por Referência e Passagem por Valor
21/10/2013 18:14//Erick Vivan
#include <stdio.h>
#include <stdlib.h>
void PASSAGEM_POR_REFERENCIA(int *a, int *b)
{
int aux;
aux = *a;
*a = *b;
*b = aux;
}
void PASSAGEM_POR_VALOR(int a, int b)
{
int aux;
aux = a;
a = b;
b = a;
}
main()
{
int opcao, A = 2, B = 5;
printf("Digite: \n\n");
printf("1 - para efetuar passagem por referencia\n");
printf("2 - para efetuar passagem por valor\n\n");
printf("Opcao: ");
scanf("%d", &opcao);
switch(opcao)
{
case 1:
printf("Antes de chamar a funcao:\n");
printf("A = %d \nB = %d\n\n", A, B);
printf("Depois de chamar a funcao:\n");
PASSAGEM_POR_REFERENCIA(&A, &B);
printf("A = %d \nB = %d\n\n", A, B);
break;
case 2:
printf("Antes de chamar a funcao:\n");
printf("A = %d \nB = %d\n\n", A, B);
printf("Depois de chamar a funcao:\n");
PASSAGEM_POR_VALOR(A, B);
printf("A = %d \nB = %d\n\n", A, B);
break;
default:
printf("Opcao invalida!\n\n");
}
system("pause");
}
Exercício resolvido - Procedimento SOMA que recebe duas matrizes...
20/10/2013 18:01Procedimento SOMA que recebe duas matrizes A e B e 2 inteiros n e m. As matrizes tem n linhas por m colunas. Devolve a matriz C que é a soma de A com B.
Solução:
//Erick Vivan
#include <stdio.h>
#include <stdlib.h>
void SOMA(int A[][100], int B[][100], int m, int n)
{
int i, j;
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
A[i][j] = A[i][j] + B[i][j];
}
}
}
main()
{
int A[100][100], B[100][100], m, n, i, j;
printf("Digite:\n\n");
printf("A quantidade de linhas da matriz: ");
scanf("%d", &m);
printf("A quantidade de colunas da matriz: ");
scanf("%d", &n);
printf("\nMatriz A:\n\n");
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
printf("A%d%d = ", i+1, j+1);
scanf("%d", &A[i][j]);
}
}
printf("\n\nMatriz B:\n\n");
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
{
printf("B%d%d = ", i+1, j+1);
scanf("%d", &B[i][j]);
}
}
SOMA(A, B, m, n);
printf("\n\nMatriz A + B:\n\n");
for(i = 0; i < m; i++)
{
for(j = 0; j < n; j++)
printf("[%d] ", A[i][j]);
printf("\n");
}
printf("\n\n");
system("pause");
}
Exercício resolvido - Faça um programa que leia uma string do teclado...
20/10/2013 13:03Faça um programa que leia uma string do teclado e diga se ela é palíndrome. Uma string é palíndrome quando pode ser lida tanto de trás pra frente quanto de frente para trás e possui exatamente a mesma seqüência de caracteres. Ex.: ASA, SUBI NO ONIBUS. Desconsidere os espaços. Defina uma função chamada Palindrome que receba uma string como parâmetro e retorne um boolean no seu programa.
Solução:
//Erick Vivan
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int PALINDROME(char str[], char str2[], int i, int tam);//Protótipo
int ELIMINAR_ESPACO(char str[])
{
char str2[100];
int i, tam, j;
tam = strlen(str);
for(i = 0; i < tam; i++)//Eliminar espaço em branco
{
if(str[i] == ' ')
for(j = i; j < tam; j++)
str[j] = str[j+1];
}
tam = strlen(str);
for(i = 0; i < tam; i++)
str2[i] = str[tam - i - 1];
str2[tam] = '\0';
printf("\nString digitada: %s", str);
printf("\nString invertida: %s\n\n", str2);
return(PALINDROME(str, str2, i, tam));
}
int PALINDROME(char str[], char str2[], int i, int tam)
{
for(i = 0; i < tam; i++)
{
if(str[i] != str2[i])
return(0);
}
return(1);
}
main()
{
char str[100];
int result;
printf(":::Verificacao de palindromos:::\n\n");
printf("Digite algo: ");
gets(str);
result = ELIMINAR_ESPACO(str);
if(result == 0)
printf("\nA string digitada NAO eh um palindromo!\n\n\n");
else
printf("\nA string digitada eh um palindromo!\n\n\n");
system("pause");
}
Ler 5 nomes em cada uma das matrizes de strings A e B...
19/10/2013 22:38Ler 5 nomes em cada uma das matrizes de strings A e B. Construir uma matriz C, que será formada por elementos da matriz A e por elementos da matriz B, intercaladamente.
Solução:
//Erick Vivan
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
char A[9][50], B[9][50], C[17][50];
int i, j = 0, k = 0;
printf("Matriz A:\n\n");
for(i = 0; i < 5; i++)
{
printf("Nome %d: ", i+1);
gets(A[i]);
}
printf("\n\nMatriz B:\n\n");
for(i = 0; i < 5; i++)
{
printf("Nome %d: ", i+1);
gets(B[i]);
}
printf("\n\nMatriz C:\n\n");
for(i = 0; i < 10; i++)
{
if(i%2 == 0)
{
strcpy(C[i], A[j]);
j = j + 1;
}
else
{
strcpy(C[i], B[k]);
k = k + 1;
}
printf("\nNome %d: %s", i+1, C[i]);
}
system("pause");
}
Exercício resolvido - Ler 10 nomes em uma matriz A de Strings. Gerar a matriz...
19/10/2013 21:26Ler 10 nomes em uma matriz A de Strings. Gerar a matriz de string B de tal forma que os elementos (nomes) estejam em ordem inversa da matriz A.
Solução:
//Erick Vivan
#include
#include <stdlib.h>
#include <string.h>
main()
{
char A[10][50], B[10][50];
int i, j, tam;
for(i = 0; i < 3; i++)
{
printf("Nome %d: ", i+1);
gets(A[i]);
tam = strlen(A[i]);//tamanho da string
for(j = 0; j < tam; j++)
{
B[i][j] = A[i][tam - j - 1];
}
B[i][tam] = '\0';
}
for(i = 0; i < 3; i++)
{
printf("\nNome %d: %s\n", i+1, A[i]);
printf("Nome invertido: %s\n\n", B[i]);
}
system("pause");
}
Exercício resolvido - A função que calcula o n-ésimo número harmônico...
17/10/2013 15:44A função que calcula o n-ésimo número harmônico é dada pela seguinte fórmula: H(n) = 1 + ½ + 1/3 + ¼ + ... + 1/n (n >=1). Escreva uma função recursiva que calcula H(n).
Solução:
//Erick Vivan
#include <stdio.h>
#include <stdlib.h>
float num_harmonico(int n)
{
if(n == 1)
return((float)1);
else
return((float)1/n + num_harmonico(n - 1));
}
main()
{
int n;
float H;
printf("Calcular:\nH(n) = 1 + 1/2 + 1/3 + ... + 1/n\n\n");
printf("n = ");
scanf("%d", &n);
H = num_harmonico(n);
printf("H(%d) = %.3f\n\n", n, H);
system("pause");
}