Visitantes


Contador
Contador
Tire suas dúvidas nos links abaixo!
Obs: A estrutura do blog não permite colocar a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente

terça-feira, 7 de dezembro de 2010

Diagonal Principal

Quando procuramos em uma matriz 3x3 a sua diagonal principal estamos falando da diagonal que é iniciada do canto superior esquerdo e desce até o canto inferior direito.

A regra para um algoritmo que deve imprimir a diagonal principal é a seguinte, na diagonal principal os elementos tem o mesmo índice tanto em linha quanto em coluna.

Veja o exemplo abaixo:

Obs.: Não esqueça de preencher corretamente as linhas das bibliotecas da linguagem C, "As linhas dos includes".

#include

#include

int main(int argc, char *argv[])

{

int matriz[3][3];

int x,y;

printf("Digite os numeros:\n");

for(x=0;x<3;x++)

{for(y=0;y<3;y++)

{scanf("%d",&matriz[x][y]);}// neste bloco preenchemos a matriz

}

printf("valores da matriz:\n");

for(x=0;x<3;x++)

{printf("\n");

for(y=0;y<3;y++)

{ printf("%d\t",matriz[x][y]); }// neste bloco vamos imprimir a matriz

}

printf("\nDiagonal principal\n");

/*No bloco de comandos abaixo vamos imprimir a matriz novamente mas

com um IF dentro do comando FOR, esse IF compara os valores de

linha e coluna se forem iguais os valores serão impressos na tela */

for(x=0;x<3;x++)

{

for(y=0;y<3;y++)

{ if(x==y)

printf("%d\t",matriz[x][y]);

}

}

printf("\n");

system("PAUSE");

return 0;

}

domingo, 14 de novembro de 2010

Matrizes Bidimensionais

São matrizes linha-coluna, onde o primeiro índice indica a linha e o segundo a coluna. Esse tipo de matriz é considerado o caso mais simples de matrizes multidimensionais. Uma matriz assemelha-se a um engradado de garrafas.

Para preencher ou imprimir uma matriz são necessários dois comandos FOR, uma para linha e outo para coluna, é usado um dentro outro.

A sintaxe para declaração de uma matriz é bem simples, usa-se o tipo de dado o nome da matriz e as quantidades de linhas e colunas.

Exemplo de declaração de matriz : int matriz [2] [2];

// Este algoritmo lê e apresenta uma matriz 3x3 com valores inteiros.

#include
#include
int main()
{
int x,y,matriz[3][3];
for(x=0; x<3; x++)/* For responsavel pelas linhas da matriz*/
{
for(y=0; y<3; y++)/* For responsavel pelas colunas da matriz*/
{
printf("Digite um valor\n");
scanf("%d", &matriz[x][y]);/* Recebe os valores da matriz*/
system("cls");
/* Na linha acima usamos o comando "cls" para apagar da tela os N° digitados*/
}
}
printf("Veja o vetor montado\n\n");
for(x=0; x<3; x++)/* For responsavel pelas linhas da matriz*/
{
for(y=0; y<3; y++)/* For responsavel pelas colunas da matriz*/
{
printf("\t%d", matriz[x][y]); /* \t serve para tabular os valores*/
}/* imprime os valores da matriz*/
printf("\n");
}
system("pause");
return 0;
}

Ponteiros

O ponteiro nada mais é do que uma variável que guarda o endereço de uma outra variável. A declaração de ponteiros é feita da seguinte forma:
tipo *nome_ponteiro;
int *p;
Abaixo temos algumas formas de utilização de ponteiros.

#include
#include

int main ()
{
int numero=0;
int *ponteiro;
ponteiro=№

printf("Aqui o ponteiro recebe o endereço de memoria da variavel numero\n");
printf("O conteudo de ponteiro e %p\n", ponteiro);

system("pause");
/*Esse comando será usado para pausar o programa, para continuar basta pressionar
a tecla enter */
numero=5;
printf("Neste ponto a variavel numero recebe 5\n");
printf("O valor de numero e %d\n", numero);

system("pause");

*ponteiro=322;
printf("Aqui o ponteiro que aponta para variavel numero recebe o valor 322 \n assim ele altera o valor da variavel \n");
printf("O valor de numero agora e %d\n", numero);

system("pause");

numero=99;
printf("O conteudo de ponteiro e %p\n", ponteiro);// aqui o ponteiro guarda um endereço de memoria.
printf("O valor de numero alterado e %d\n", *ponteiro);// quando usamos o * seguido do nome do ponteiro podemos ver o valor da variavel.

system("pause");
return 0;
}

Struct

Na linguagem C, uma estrutura “Struct” é uma coleção de variáveis referenciadas por um nome, fornecendo uma maneira conveniente de se ter informações relacionadas agrupadas. Uma de definição de estrutura forma um modelo que pode ser usado para criar variáveis de estruturas. As variáveis que compreendem a estrutura são chamadas membros da estrutura, campos ou elementos da estrutura.
Abaixo temos o exemplo de uma struct:

Struct Pessoa
{
char nome;
int idade ;
char endereco;
};

Typedef

A Linguagem C permite definir explicitamente novos nomes de tipos de dados usando-se a palavra reservada typedef. Não se cria um novo tipo de dado, mas, ao contrário, define-se um novo nome para um tipo existente. Este processo pode auxiliar programas dependentes de máquinas a serem portáveis; somente a declaração typedef tem de ser modificada. Ele também auxilia na documentação do seu código por permitir nomes descritivos para tipos de dados padrões. A forma geral da declaração typedef é da a seguir:
Typedef tipo novo_nome;

Para dar um novo nome a struct Pessoa podeiamos fazer como a linha abaixo:
Typedef struct Pessoa apelido
Veja um exemplo já em linguagem c porém não esqueça que por limitações do blog nas linhas que mostram as bibliotecas stdio.h e stdlib.h você terá de refazer manualmente, evite copiar e colar.


/* Exemplo basico de struct. */

#include
#include

struct funcionario // nome da struct
{
char nome[50]; // membros da struct funcionario
int idade;
char endereco[50];
float salario;
};
/* Na linha abaixo criamos um novo nome para struct funcionario,
colocaremos um apelido "func"
*/
typedef struct funcionario func;

/* Repare que criamos a struct e o novo tipo fora da função main*/

int main( )
{
/* Na linha abaixo vamos declarar uma variavel chamada colaborador,
essa variavel é do tipo "func" tipo criado apartir da struc funcionario*/

func colaborador;

printf(" Digite o nome do Colaborador: \n");
gets(colaborador.nome);
/* Na linha acima usamos a função "gets" para capiturar a string digitada
pelo usuário, para acessar ou incluir o valor em um membro basta colocar após
o nome da variavel o operador ponto " . " e nome do membro ex: colaborador.nome*/

printf("\n Digite a idade do colaborador: \n");
scanf("%d",&colaborador.idade);
/* Na linha acima vamos inserir a idade do colaborador. */

printf("\n Digite o endereco do colaborador: \n");
fflush( stdin );// função para limpar buffer
gets(colaborador.endereco);
/* Agora vamos inserir o endereço do colaborador. */

printf("\n Digite o salario do colaborador: \n");
scanf("%f",&colaborador.salario);
/*Na linha acima vamos inserir o salario do colaborador */

/* Agora vamos imprimir os valores, para imprimir os valores dos registros
tambem chamamos os valores com o nome da variavel seguido do operador ponto "."
e do nome do campo a ser impresso */
printf("\n Nome do colaborador:\n %s",colaborador.nome);
printf("\n Idade do colaborador:\n %d",colaborador.idade);
printf("\n Endereco do colaborador:\n %s",colaborador.endereco);
printf("\n Salario do colaborador:\n R$ %.2f \n",colaborador.salario);


system("PAUSE");
return 0;
}

domingo, 7 de novembro de 2010

Escreva uma função capaz de converter um valor monetário de uma moeda para outra, recebendo como parâmetros o valor a converter e a taxa de conversão.

Obs: A estrutura do blog não permite colocar o a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente.

#include
#include

void converter( float x, float y);

int main(int argc, char *argv[])
{

float v_converter,taxa_conversao; // declaração de variaveis

printf("Digite o valor em dolar para ser convertido:\n");
printf("US$ ");

scanf("%f",&v_converter);

printf("Digite a taxa de conversão:\n");
printf("R$ ");
scanf("%f",&taxa_conversao);

converter( v_converter, taxa_conversao);// chamada de função
system("PAUSE");

return 0;

}

void converter( float x, float y)// função para converter os valores
{

float valor_convertido;
valor_convertido= x*y;
printf("O valor convertido e em reais R$ %.2f \n",valor_convertido);

}

Escreva uma função que seja capaz de retornar o maior valor dentre três valores reais fornecidos como parâmetros.

Obs: A estrutura do blog não permite colocar o a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente.

#include <>
#include <>

float maior(float x, float y, float z);// prototipo da função

int main(int argc, char *argv[])

{

float a,b,c,mostrar; // declaração de variaveis

printf("Digite os numeros\n");

scanf("%f%f%f",&a,&b,&c);

mostrar = maior(a,b,c);// chamada da função, o retorno da função é guardado na variavel mostrar.

printf(" O maior numero e %.2f\n",mostrar);

system("PAUSE");

return 0;

}

float maior(float x, float y, float z){ //função que compara os valores e retorna o maior valor

if(x > y && x > z)
return x;

if(y > x && y > z)
return y;

if (z > x && z > y)
return z;

}

Funções

Uma função é uma unidade de código de programa autônoma desenhada para cumprir uma tarefa particular.
Uma função recebe um certo numero de parâmetros e retorna apenas um valor, deve ficar sempre fora da função main. Assim como declaramos variáveis também declaramos funções, essa declaração é chamada de protótipo e deve ser colocada no inicio do programa antes da função main.

Criando uma função:

Tipo nome (parâmetros)

{

Comandos;

}

Exemplo de uma Função para somar 2 numeros:

Int soma(int num1, int num2)

{
int Total;

Total = num1+num2;

Return Total;

}

Uma função que retorna valor geralmente é chamada fazendo uma atribuição do nome da função a uma variável.

Exemplo:

Resultado = soma(num1,num2);

Cada função deve ter um tipo e retornar um valor, entretanto tem um tipo de função que quebra essa regra, é a função void, essa função nunca retorna valor.

Exemplo de uma função void usada para mostrar o resultado da soma de 2 numeros:

Void Soma(int num1,int num2)

{
int Total;

Total= num1+num2;

printf(“O resultado da some dos números e %d ”,Total);

}

Uma função void é chamada pelo nome e seus parâmetros.

Exemplo:

Soma (num1,num2);

Strings

Obs: A estrutura do blog não permite colocar o a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente.

Strings são vetores de char. As strings são de uso mais comum para os vetores. Devemos apenas ficar atentos para o fato de que as strings têm o seu último elemento como um '\0'. A declaração geral para uma string é:
char nome_da_string [tamanho];
Veremos agora algumas funções básicas para manipulação de strings.

Gets

A função gets() lê uma string do teclado inclusive os espaços. Sua forma geral é:
gets (nome_da_string);
O programa abaixo demonstra o funcionamento da função gets():

#include <>
#include <>

int main ()
{
char string[100];
printf ("Digite o seu nome: ");
gets (string);
printf ("\n\n Ola %s",string);
system("pause");
return(0);
}
Repare que é válido passar para a função printf() o nome da string. Você verá mais adiante porque isto é válido. Como o primeiro argumento da função printf() é uma string também é válido fazer:

printf (string);
isto simplesmente imprimirá a string.


strcpy

Sua forma geral é:
strcpy (string_destino,string_origem);
A função strcpy() copia a string-origem para a string- destino. Seu funcionamento é semelhante ao da rotina apresentada no exemplo anterior. As funções apresentadas nestas seções estão no arquivo cabeçalho string.h. A seguir apresentamos um exemplo de uso da função strcpy():

#include < >
#include < >
int main ()
{
char str1[100],str2[100],str3[100];
printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,str1); /* Copia str1 em str2 */
strcpy (str3,"Voce digitou a string "); /* Copia "Voce digitou a string" em str3 */
printf ("\n\n%s%s",str3,str2);
system("pause");
return(0);
}

strcat

A função strcat() tem a seguinte forma geral:
strcat (string_destino,string_origem);
A string de origem permanecerá inalterada e será anexada ao fim da string de destino. Um exemplo:

#include <>
#include
int main ()
{
char str1[100],str2[100];
printf ("Entre com uma string: ");
gets (str1);
strcpy (str2,"Voce digitou a string ");
strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */
printf ("\n\n%s",str2);
system("pause");
return(0);
}


strlen

Sua forma geral é:
strlen (string);
A função strlen() retorna o comprimento da string fornecida. O terminador nulo não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um a mais que o inteiro retornado por strlen(). Um exemplo do seu uso:

#include < >
#include < >
int main ()
{
int size;
char str[100];
printf ("Entre com uma string: ");
gets (str);
size=strlen (str);
printf ("\n\nA string que voce digitou tem tamanho %d",size);
system("pause");
return(0);
}


strcmp

Sua forma geral é:
strcmp (string1,string2);
A função strcmp() compara a string 1 com a string 2. Se as duas forem idênticas a função retorna zero. Se elas forem diferentes a função retorna não-zero. Um exemplo da sua utilização:
#include < >
#include < >
int main ()
{
char str1[100],str2[100];
printf ("Entre com uma string: ");
gets (str1);
printf ("\n\nEntre com outra string: ");
gets (str2);
if (strcmp(str1,str2))
printf ("\n\nAs duas strings são diferentes.");
else printf ("\n\nAs duas strings são iguais.");
system("pause");
return(0);
}

sábado, 30 de outubro de 2010

Vetores ou matrizes unidimensionais.

Obs: A estrutura do blog não permite colocar o a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente.


Vetor nada mais é do que uma coleção de variáveis do mesmo tipo é referenciado por um nome comum, seus elementos são acessados por índices tendo como primeiro índice o numero 0.

Exemplo de declaração de vetor inteiro com 5 posições.

Tipo nome [ nº de elementos]

Int numero [5];

Exemplo de declaração de vetor inteiro inicializado com 5 elementos.

Int numero [5] = {10,45,12,78,19};

Como popular um vetor?

Para preencher um vetor é preciso ter um laço de repetição onde enquanto a uma determinada condição for atendida um comando de atribuição ou de entrada é executado e assim populando o vetor.

A estrutura mais comum para isso é a estrutura FOR, veja como seria popular um vetor de 5 posições.

Usaremos um contador que deverá ser iniciado do 0 até o numero maximo de posições do seu vetor no nosso caso 5.

For(contador=0;contador<5;contador++) contador="0;contador<5;contador++)">
#include

int main(int argc, char *argv[])
{
int cont;

// Declarção de vetores não inicializados.

int numero [5];

// Declaração de vetores inicializados.

int vetor [5] = {10,45,12,78,19};

/*Exemplo de como preencher um vetor.
Para popular um vetor é necessário percorrer todas as posições existentes nele, para utilizaremos
o laço de repetição for.
*/
printf("Digite os numeros do vetor:\n");

for(cont=0;cont<5;cont++) cont="0;cont<5;cont++)" cont="0;cont<5;cont++)">

Trocar o valor de duas variáveis.

Obs: A estrutura do blog não permite colocar o a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente.


Um exercício de lógica muito comum e que deixa muita gente de cabelo em pé é aquele em que temos de trocar os valores de duas variáveis.

Exemplo:

Temos x=125 e y=547 e depois da troca temos os seguintes valores x =547 e y =125.

Para resolver esse problema é muito simples basta declarar uma variável auxiliar que utilizaremos para fazer as trocas de valores.

Primeiro devemos atribuir a variável auxiliar o valor de x.
Depois atribuímos a variável x o valor de y.
E por fim atribuiremos a y o valor da variável auxiliar.

Veja o exemplo na linguagem c.

#include
#include

int main(int argc, char *argv[])

{
int x = 125, y = 547, aux; // Declaração de variaveis.

printf("O valor de x e %d o valor de y e %d.\n\n",x,y);
// Na linha acima são impressos na tela os valores de x e y antes da troca.

aux = x; // Aqui atribuiremos o valor de x para aux.

x = y; // Agora atribuiremos o valor de y para x.

y = aux; //Agora atribuiremos o valor de aux para y.

printf("O valor de x e %d o valor de y e %d.\n\n",x,y);
// Na linha acima são impressos na tela os valores de x e y depois da troca.

system("PAUSE");

return 0;

}

Ordenação bolha.

Obs: A estrutura do blog não permite colocar o a linha dos includes corretamente, ao passar o código para o compilador favor preencher essa linha corretamente.


Chamado de Demônio das trocas no livro “C completo e total” da editora MAKRON BOOKS LTDA, o método de ordenação bolha é o mais comum de todas as formas de ordenar, isso por ser fácil de implementar, porém é sem duvida a forma de ordenar mais criticada, já que trabalha fazendo varias comparações e quando necessário faz a troca de posições entre dois elementos adjacentes.

Agora que já sabemos um pouco sobre o método bolha vamos colocar em ordem crescente o seguinte vetor:

Vet [6] ={15, 18, 17, 10, 16, 12}

Para essa ordenação devemos sempre comparar dois elementos da esquerda para a direita e se preciso trocá-los de posição até que todos os números estejam em ordem crescente.

Veja agora na linguagem c como ficaria um algoritmo para ordenar esse vetor.

#include
#include

int main(int argc, char *argv[])
{
int aux, i, j; // declaração de uma variável auxiliar e dois contadores.

int vet[6]={15,18,17,10,16,12}; // Declaração do vetor já inicializado.

for(i=0; i<6; i++){ // As dois comandos for são úteis para percorrer o vetor e colocar os indices no vetor

for(j=0; j<6; j++){ // na hora de comparar, os dois devem contar até o numero de elementos do vetor

if(vet[i] < vet[j]) { // Esse if é responsável por comparar os elementos do vetor e troca-los de posição quando necessário.
aux=vet[i]; // Comando que atribui vet na posição i na variável aux.

vet[i]=vet[j]; // Aqui atribuímos vet na posição j no vet com indice i.

vet[j]=aux;} // Agora atribuímos o valor da variável aux em vet na posição j.
}
}

for(i=0;i<6;i++) // Aqui temos uma estrutura de repetição for que irá imprimir o vetor.

{

printf("%d ",vet[i]);
}

system("PAUSE");

return 0;

}