Linguagem C

Exercício resolvido - Considere o problema: dado n e uma seqüência com n números...

21/10/2013 19:06

Considere 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:01

Procedimento 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:03

Faç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:38

Ler 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:26

Ler 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 <stdio.h>
#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:44

A 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");
}

Itens: 1 - 7 de 26
1 | 2 | 3 | 4 >>