terça-feira, 10 de maio de 2011

Calcular orbitais de uma matriz em C

#include<stdio.h>
#include<stdlib.h>
int main(void){
int D[3][3], i, j, k, A[3][3], cont2, v[3], cont, B[3][3], d[3];

    printf("Calcularemos as orbitas de um vetor, mas antes, entre com uma matriz A: \n\n");
    for(i=0;i<3;i=i+1){//Entrada dos valores da Matriz
             for(j=0;j<3;j=j+1){
                  printf("Digite o valor de A[%d][%d]: ", i , j);//Nao coloquei \n pq nao queria um espacamento muito grade, uma vez q eu digito e dou enter ele ja pula linha mesmo sem o \n
                  scanf("%d", &A[i][j]);         
             }
    }
    printf("\nAgora digite um vetor para calcularmos suas orbitas: \n\n");
    for(j=0; j<3; j=j+1){
                  printf("Digite o valor de v[%d]: ", j);
                  scanf("%d", &v[j]);
             }
           for(i=0; i<3; i=i+1){
             for(j=0;j<3;j=j+1){
                                D[i][j]=A[i][j];
                                B[i][j]=0;
                                }
                                }  
    for(cont=0;cont<50;cont++){
      for(i=0; i<3; i=i+1){
                d[i]=0;
                }
            
                               
                               
                                               
             for(i=0; i<3; i=i+1){
             for(j=0;j<3;j=j+1){
                                for (k=0;k<3;k=k+1){
                                B[i][j] = B[i][j] + D[i][k] * A[k][j];
            }
        }
      }
       for(i=0; i<3; i=i+1){
             for(j=0;j<3;j=j+1){
                                D[i][j]=B[i][j];
                               
                                }
                                }
      
       for(i=0; i<3; i=i+1){
             for(j=0;j<3;j=j+1){
                               
                               
                                d[i] = d[i] + B[i][j] * v[j];
           
        }
        }
                  
       
        printf("A^%d * v = (%d,%d,%d)  \n",cont, d[0],d[1],d[2]);
        }
                     
                     
getchar();
getchar();                     
                      }

Calcular fatorial em C

Muito simples:

rintf("Digite o numero que deseja calcular o fatorial:\n");
             scanf("%d",&q);
             res = 1;
             for(i=1;i<=q;i++){
                   res = res * i;
             }
             printf("Fatorial = %d\n\n\n", res);

Programa com menu completo em C - Estacionamento

Eis ai um programa para controle de Estacionamento de Automóveis com as seguintes especificações

Controle de estacionamento
Máximo de 100 carros / Marca (15 caracteres) / Modelo (20 caracteres)
Ano (inteiro) / Cor (15 caracteres)

1- Incluir/Cadastrar.
2- Listar todos os cadastros.
3- Pesquisar por modelo.
4- Sair
5- Mostrar o carro mais velho e mais novo e seus respectivos anos
    de fabricação.
6- Mostrar a soma dos anos de fabricação de todos os carros
7- Mostrar todos os carros com idade inferior a 10 anos.
8- Alterar os dados de um carro qualquer, fornecidos a marca e
    o modelo do mesmo.
9- Mostrar a quantidade de carros cadastrados.
10- Mostrar a soma das idades de todos os carros
11- Mostrar todos os carros em ordem crescente de ano de fabricação
12- Mostrar os carros ordenados do mais novo para o mais velho.
13- Mostrar todos os carros ordenados em ordem alfabética por marca
14- Excluir um carro sendo fornecido seu modelo e marca sem
    desordenar o banco de dados.


http://www.4shared.com/file/GBrfUv6s/Estacionamento_arquivo.html

Ordenação em C - Método da Bolha

O famoso Bubble Sort

///////////////////////////////////////////////
///////////////////////////////////////////////
////////////ROTINA DE ORDENAÇÃO////////////////
///////////////////////////////////////////////
/////////////////////////////////////////////*/
#include<stdio.h>
int main (void)
{
    int i,j, a[5], aux;   
    // lendo o vetor desordenado
    for(j=0;j<5;j++)
    {
        printf("a[%d]:  \n",j);
        scanf("%d",&a[j]);
    }
    // rotina de ordenação - método da bolha
    for(j=0;j<4;j++)    // varredura até quantidade - 1
    {    for(i=0;i<4;i++)    // varredura até quantidade - 1
        {    if(a[i]>a[i+1])
            {    // trocas para ordenação
                aux=a[i];       
                a[i]=a[i+1];   
                a[i+1]=aux;
            }
        }
    }
    for(j=0;j<5;j++) // mostrando o vetor ordenado
    {
        printf("\n a[%d]:  %d",j,a[j]);
    }
    getchar();
    getchar();
}

Algoritimo Estendido de Euclides em C

Algoritimo simples para o cálculo do algoritimo estendido de Euclides em C

#include<stdio.h>
int main(){
    int a, b, q, r2b, r1b, r, op, x2b, x1b, x, y2b, y1b, y, mdcab, linhas;
   for(;;){
            printf("\n           MENU\n\n");
            printf("1 - Calcular MDC\n");
            printf("2 - Sair\n \nOpcao:");
            scanf("%d",&op);
            if(op==1){
    printf("\nEntre com dois numeros inteiros, primeiro o maior, depois o menor:\n");
    scanf("%d",&a);
    scanf("%d",&b);
    r=1;
    x2b=1;
    y2b=0;
    x1b=0;
    y1b=1;
    r2b=a;
    r1b=b;
    linhas=2;
    while(r!=0){
                q=r2b/r1b;
                x=x2b-q*x1b;
                y=y2b-q*y1b;
                r=r2b-r1b*q;
                linhas=linhas+1;
                x2b=x1b;
                x1b=x;
                y2b=y1b;
                y1b=y;
                r2b=r1b;
                r1b=r;
                }
    mdcab=a*x2b+b*y2b;
    printf("\n MDC(%d,%d)=%d\n",a,b,mdcab);
    printf("x=%d\n",x2b);
    printf("y=%d\n",y2b);
    printf("O Algoritmo Extendido de Euclides executou %d linhas",linhas);
}
else if(op==2){
     break;
     }
     else{
          printf("Opcao inexistente");
}
}
}

Ler arquivo em C

Lendo de um arquivo em C e armazenando em um vetor de dados.

FILE *arq;//Declaracao do ponteiro que receberá a abertura do arquivo

//abrindo arquivo de indices
     arq=fopen("dadostd.txt","r");
     if (arq==NULL){
        puts("Arquivo nao pode ser aberto.\n");
        exit(1);
     }
     k=0;
    
     fscanf(arq, "%d \n",&n);
     while (!feof(arq)){//enquanto nao for o fim
          
           k++;
           fscanf(arq, "%f",&x[k]);//Lendo os dados e colocando no vetor x[i]
          
     }
         
     fclose(arq);//fecha o arquivo
    
     printf("n = %d\n\n", n); //Imprimir o valor lido do arquivo para verificação.
     for(i=21;i<=40;i++){
                       fx[i-20]=x[i];//quebrando o vetor x[i] com os valores de fx[i]
                       }
                      
                      
     printf("\n          Leitura dos dados \n\n\n");//Mostrando os valores de x e f(x) na tela
      for(i=1;i<=20;i++){
                       printf("x[%d] = %f        f(x[%d]) = %f\n",i, x[i], i, fx[i]);
                       }

Interpolação Polinomial em C

Um algoritimo fácil para interpolação polinomial linear em C
Cálculo Numérico
Os valores são lidos nos vetores x[i] e fx[i]. Nesse caso, usei com 10 combinações lineares dessas(10 pontos)


     somax = 0;//inicializando os valores dos somatorios.
     somax2 = 0;
     somaf = 0;
     somaxf = 0;
     n=10;
     for(i=1;i<=10;i++){//Somatorios de x, x², f(x) e x*f(x)
                        somax = somax + x[i];
                        somax2 = somax2 + x[i]* x[i];
                        somaf = somaf + fx[i];
                        somaxf = somaxf + x[i]* fx[i];
                        }              
                      
                       //calculo dos valores de a e b da regressão linear.
                       a = (somaf * somax2 - somax * somaxf)/(n * somax2 - somax *somax);
                       b = (n * somaxf - somax * somaf)/(n * somax2 - somax * somax);
                      
                       printf ("\nA curva que melhor ajusta os 10 dados fornecidos eh \ng(x)= %f + %f*x\n\n", a, b);