quinta-feira, 30 de junho de 2011

SEQUÊNCIA DE FIBONACCI

A Sequência de Fibonacci consiste em uma sucessão de números, tais que, definindo os dois primeiros números da sequência como 0 e 1, os números seguintes serão obtidos por meio da soma dos seus dois antecessores. Portanto, os números são: 0,1,1,2,3,5,8,13,21,34,55,89,144,233...

Como fazer essa sequência usando linguagem de programação C?
Logo abaixo segue a função interativa de fibonacci:




 //bibliotecas
#include <stdio.h>
#include <conio.h>

int main()
{
int N;//variaveis
unsigned int x = 0, y = 1,z;//inteiros acima de 0
printf("Escolha o numero de casas que quer ver na tela da sequencia \n");
scanf("%d",&N);
printf("A sequencia de Fibonacci ate a casa de numero %d e: \n",N);
for(int i = 0; i < N; i++)//for pra calcular toda a sequencia e fazer a soma do pares
{
z = x+y;
x = y;
y = z;
printf("%d\n",z);

}
getch();
return 0;
}



FAZENDO A MESMA SEQUÊNCIA AGORA USANDO FUNÇÃO RECURSIVA:


int fibo(int n)
{
          if(n ==1 || n == 2)
                return 1;
          else
                return fibo(n-1)+fibo(n-2);
}


nao esqueça de sempre comentar em seus códigos e também separa-lo em modulos!
P.S: não esqueça de dar um up ai!! FLW

terça-feira, 28 de junho de 2011

CONFERINDO UMA MATRIZ SUDOKU

Como conferir se uma matriz de sudoku esta certa?
Bem, matriz Sudoku é aquela onde o mesmo número não se repete na mesma linha e nem na mesma coluna!

RESOLVENDO:


#include<stdio.h>
#include<conio.h>

int mat[9][9];
int num=9;
void preencher();
int conflinha();
int confcol();
int main()
{
preencher();//preenche a matriz
if(conflinha() ==1 && confcol() ==1)//se o retorno da funcao for igual a 1.... a matriz esta correta
printf("\n**PARABENS**");
else//senao...
printf("\nERRADO");


getch();//pause para ler, equivalente ao system("pause")
return 1;
}

void preencher()//preenche linha por linha
{
int i, j,x;
for(i=0; i<num; i++)
for(j=0; j<num; j++)
{
printf("\nPosicao [%d][%d]: ", i+1, j+1);
scanf("%d",& x);
if(x<0 || x>9){//como aceita-se apenas numero naturais, entre 0 e 9....
printf("Apenas numeros naturais, entre 0 e 9");
j--;
continue;}
else
mat[i][j]=x;

}
}
int conflinha()//confere linha por linha
{
int x=0,j,soma=0, i=0;
while(i<num)//o laco while vai ate a ultima linha
{
for(j=0; j<num;j++)
if(mat[i][x] == mat[i][j] && x!=j)//confere o elemento com os demais da linha
soma+=1;
x++;
if(x==num)//muda de coluna
{
i++;
x=0;
}

}
if(soma==0)//como inicio-se soma =0, se for diferente e que tem elementos iguais, senao... ok
return 1;
else
return 0;
}

int confcol()//faz o mesmo que a funcao conflinha faz, so que confere colunas
{
int x=0,j,soma=0, i=0;
while(i<num)
{
for(j=0; j<num;j++)
if(mat[x][i] == mat[i][j] && j!=x)
soma+=1;
x++;
if(x==num)
{
i++;
x=0;
}

}
if(soma==0)
return 1;
else
return 0;

}


Comentem!!!

terça-feira, 14 de junho de 2011

CALCULANDO O SENO USANDO A SÉRIE DE TAYLOR

sin(x)= x+ (-1x^3/3!)+ (1x^5/5!)+...... (1x^(2n+1)/(2n+1)!)


onde x é o valor do ângulo em radianos. Considerar pi = 3.141593
e n é a precisao!

O usuario ira informar o angulo em graus, ou seja voce deve passar esse angulo para radianos...

RESOLVENDO:



#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>

#define Pi 3.141593
int conf(float graus);
float pasrad(float *graus);
float expo(int n);
float fatorial(int *fat);
float calculox(float x, int *epx);

int main()
{
int cond=0,epx=2, fat=2, n=1;
double cf, aux;
float x,graus, cx,sin;
printf("\nEntre com o valor do angulo\n");
scanf("%f",&graus);
x=pasrad(&graus);
sin=x;
do
{


cf=fatorial(&fat);
aux=expo(n);
cx=calculox(x,&epx);
sin+=((aux*cx)/cf);

n++;
cond++;
}while(cond!=4);
sin=sin*(conf(graus));
printf("\nO valor do seno e: %f \n", sin);
getch();
return 1;
}

float pasrad(float *graus)//passa de graus para radianos
{
int aux;
if(*graus>360){//caso tenha dado mais de uma volta no circulo, calcula-se onde parou-se
*graus=*graus/360;
aux=*graus;//pego somente a parte inteira do numero de voltas
*graus=*graus-aux;
*graus*=360;//calcula a quantidade a mais que girou o circulo
}
if(*graus >90 &&*graus <=180)
*graus=180-*graus;
else if(*graus >180 &&*graus <=270)
*graus=*graus-180;
else if(*graus >270 &&*graus <=360)
*graus=360-*graus;
float rad;
rad=(*graus*Pi)/180;
return rad;

}
float expo(int n)//calcula o sinal do termo
{

int fator=1, i=0;
while(i!=n){
fator*=-1;
i++;
}
return fator;

}

float fatorial(int *fat)//calcula fatorial do denominador da serie
{

int cf=1,i,cont;
cont=*fat+1;
for(i=1;i<=cont;i++)
cf*=i;
*fat=(2*(*fat));
return cf;
}

float calculox(float x, int *epx)//calcula x(angulo em radianos) elevado a potencia.
{
float prod;
int aux=*epx+1;
prod=pow(x,aux);
*epx=(2*(*epx));
return prod;

}

int conf(float graus)
{
if(graus <=90)
return 1;
else if(graus >90 &&graus <=180)
return 1;
else if(graus >180 &&graus <=270)
return -1;
else if(graus >270 && graus <=360)
return -1;

}

P.S; A PRECISAO VOCE PODE ALMENTA-LA, TUDO DEPENDO DO SEU PC
SER DER, COMENTEM!!!

sábado, 11 de junho de 2011

IMPRIMINDO NUMEROS PRIMOS NA TELA

O problema e: O usuario informa um numero e o programa mostra todos os primos abaixo dele

RESOLVENDO:



#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main() {

int i, num, cont = 0;
printf("\nDigite um número inteiro e positivo:\n ");
scanf("%d", &num);
num--;//como o programa quer apenas os numeros primos abaixo do N digitado decremento num
do{
for (i = 1; i <= num; i++) {
if (num % i == 0) { //divide  o numero por todos os numeros ate chegar nele
cont++;// caso ele for divisivel e tiver resto 0 incrementa
}
}

if (cont == 2)// se for == 2 é porque ele e divisivel apenas por 2 numeros, por 1 e por ele mesmo, entao é primo
printf("\nO numero %d e primo!\n", num);
cont=0;//cont volta a ser zero para testar um novo numero
num--;//decremento para testar o proximo
}while(num !=0);//enquanto nao chegar em 0 o programa nao para de calcular os primos
getch();
return 0;
}


COMENTEM!!!

RETORNANDO O PRIMEIRO NUMERO ACIMA DE 1000000 DA SEQUENCIA DE FIBONACCI

Como calcular a sequência de fibonacci? E qual o critério de parada para que, quando chegar em um milhão ele retornar o próximo  acima desse valor?

RESOLVENDO...

#include <stdio.h>
#include <conio.h>//bibliotecas

int main()
{
int x=0, y, z=1;//variaveis
int k=1000000;
do
{
y = x+z;
x = z;
z = y;
if(x>k){//se o termo da sequencia e que k, ele mostra na tela e sai do laco while
printf("\nO primeiro numero da sequencia de fibonacci apos %d e %d",k, x);
}
}while(x<=k);//enquanto x nao chega em k, o laco nao para de calcular a sequencia
getch();//pausa pra ler
return 1;
}


SE DER COMENTE!!

CONTANDO O NÚMERO DE VEZES QUE UMA PALAVRA APARECE EM UM ARQUIVO

Como saber quantas vezes uma certa palavra apareceu no arquivo???
Bem pode-se pensar de dois jeitos.
Primeiro: Cada palavra esta em um linha do arquivo! (jeito bem simples de fazer, pensar!)
Segundo: Tudo bagunçado(jeito mais hard de fazer, exige maior lógica)


RESOLVENDO....

PRIMEIRO :


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>

int main()
{
FILE *arq;
char name[15], test[15], aux[15];
int i, cont=0;
printf("\nDIGITE O NOME DO ARQUIVO\n");
gets_s(name);
arq=fopen(name,"r");
if(!arq)
{
printf("ERRO AO ABRIR O ARQUIVO");
getch();
exit (1);
}
printf("\nDIGITE A PALAVRA QUE DESEJAR\n");
gets_s(test);
while(!feof(arq))
{
fscanf(arq,"%s", &aux);
if(strcmp(test,aux)==0)
cont++;
}
printf("\nA PALAVRA %s SE REPETIU %d vezes",test, cont);
getch();
return 1;
}

OUTRO JEITO: CONTANDO LETRA POR LETRA


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>



int ler(char *nome);
int main()

{
int npalavras=0;
char nome[15];
printf("\n\nDigite o nome do arquivo\n");
fflush(stdin);
gets(nome);
npalavras=ler(nome);//CHAMA A FUNCÇAO LER
printf("\nExite %d palavras", npalavras);
getch();
return 1;

}
int ler(char *nome)//funcao que le todo arquivo e recebe com parametro um string com o nome do arquivo
{
FILE *p;//ponteiro pra arquivo
char test[15], c;
int i=0, j=0, cont=0,xis=0,tam;
p=fopen(nome, "r");//abrindo arquivo
if(!p)
{
printf("\nERRO: ARQUIVO NAO EXISTE OU PODE ESTAR CORROMPIDO!! ");
getch();
exit (1);
}
printf("\n\nDigite a palavra\n\n");
fflush(stdin);
gets(test);
tam=strlen(test);//contando o tamanho da palavra
while((c=getc(p))!=EOF)//le ate o fim do arquivo
{
if(c=='\n')//caso tenha uma quebra de linha, nao é contado
xis=0;

else{
if(c==test[i])
{
i++;//enquanto a letras da palavra desejada e do arquivo forem batendo... vai incrementando o i
xis=1;
}

else
{
i=0;//caso mude, i==0
xis=0;}
if(xis==1 && i==tam){//se, sempre for iguais as letras e chegar no tamanha da palavra... conta uma!
cont++;
i=0;}}


}
fclose(p);//fecha o arquivo
return cont;//retorna o numero de palavras
}
//COMENTEM!!!

quinta-feira, 2 de junho de 2011

OBTENDO UM CONJUNTO DE 5 DÍGITOS NA SEQUÊNCIA ABAIXO QUE GERA O MAIOR PRODUTO

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450


1º passo- entender o problema, ou seja
vou pegar uma sequencia de 5 digitos, ex: 73167, achar o produto 7x3x1x6x7 = 882
e assim por diante pegando outras sequencias seguidas.... 31671 -> 3x1x6x7x1=126 ....
2º passo- gerar o codigo
Resolvendo:
P.S.: Criei um arquivo que ja tem toda sequencia, então e so você baixar o arquivo e colocar na pasta do projeto criado e assim compilar o programa, se você observar o arquivo esta abrindo "r" ou seja somente pra leitura, deixarei disponível pra quem quiser o arquivo logo abaixo do código pra fazer download!!



#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

int main()
{
FILE *p;//ponteiro para meu arquivo
int vet[1000],prd=1, i,k=5;
int n=0,aux, cont=0;
p=fopen("test.txt", "r");//abrindo meu arquivo
if(!p)
{
printf("\n\nERRO AO ABRIR O ARQUIVO\n\n");
getch();
exit (1);
}
for( i=0; i<1000;i++)//lendo todo arquivo, e preenxendo meu vetor com inteiros que se encontram em cada linha
{
fscanf(p, "%d", &vet[i]);
}
while(n!=996)//como temos 1000 posicoes entao, temos que fazer o produto da posicao 296..7..8..9..1000
{
aux=prd;
prd=1;
for(i=cont; i<k;i++)//for pra percorrer o intervalo de posicoes
{
prd*=vet[i];//calculando o produto da posicoes
}

if(aux>prd)//caso encontre um maior armazena em uma variavel aux para ver se encontra outra
prd=aux;

cont++;
n++;
k++;

}
cont=0;
for( i=0; i<1000;i++){//imprime na tela meu vetor em forma de matriz
printf("%d ", vet[i]);
cont++;
if(cont ==20){
printf("\n");
cont=0;
}
}
printf("\n\nO MAIOR PRODUTO ENCONTRADO NA SEQUENCIA ACIMA  FOI: %d\n",prd);

getch();
return 1;
}

ARQUIVO .TXT

P.S: Voce deve colar esse arquivo na pasta do projeto, //meus documentos// visual 2008 ou 2010// a pasta que voce criou para o projeto// dentro da pasta tem outra pasta com o mesmo nome do seu projeto, abra ela e cole o arquivo dentro dessa pasta!!!


AI PESSOAL, COMO TO COM UM TEMPINHO SOBRANDO E ESSE EXERCICIO E BEM INTERESSANTE, RESOLVI FAZE-LO DE OUTRA FORMA, APENAS  COPIEI ESSA SEQUENCIA NUMERICA E COLEI NO MEU ARQUIVO, PRA QUEM BAIXAR OS DOIS ARQUIVOS PODE COMPARAR E VER QUE O FORMATO DOS ARQUIVOS ESTAO COMPLETAMENTE DIFERENTES, UM COLOQUEI CADA NUMERO EM UMA LINHA E O OUTRO FICOU IGUAL A SEQUENCIA VISTA LOGO ACIMA! LEMBRE-SE AO BAIXAR O ARQUIVO COLE-O NA MESMA PASTA QUE INDIQUEI ACIMA!!!

RESOLVENDO!!!


#include <stdio.h>
#include <conio.h>//BIBLIOTECAS
#include<string.h>
#include<stdlib.h>
int main()
{
FILE *p;//ponteiro pra arquivo
int vet[1000], i=0;//array e variaveis
int cont=0, n=0, aux, prd=1, k=5;
char c;
p=fopen("teste.txt", "r");//abrindo arquivo
if(!p)
{
printf("\n**ERRO AO ABRIR O ARQUIVO, CERTIFIQUE-SE QUE O ARQUIVO EXISTE!!!!!!");
getch();//pausa para o usuario ler a mensagem de erro
exit (1);//sai do programa!!!
}
while((c=getc(p)) !=EOF)//lendo o arquivo ate chegar no fim
{
vet[i]=c-'0';//'0'equivale a 48, serve para qualquer codigo que seje ou nao na tabela  padrão ASCII
i++;
if(c=='\n')
i--;}//caso ele leia um enter no arquivo, ua quebra de linha, pra nao perder a posicao decremento o n!

while(n!=996)//como temos 1000 posicoes entao, temos que fazer o produto da posicao 296..7..8..9..1000
{
aux=prd;
prd=1;
for(i=cont; i<k;i++)//for pra percorrer o intervalo de posicoes
prd*=vet[i];//calculando o produto da posicoes

if(aux>prd)//caso encontre um maior armazena em uma variavel aux para ver se encontra outra
prd=aux;
cont++;
n++;
k++;
}
cont=0;
for( i=0; i<1000;i++){//imprime na tela meu vetor em forma de matriz
printf("%d ", vet[i]);
cont++;
if(cont ==20){
printf("\n");
cont=0;
}
}
printf("\n\nO MAIOR PRODUTO ENCONTRADO NA SEQUENCIA ACIMA  FOI: %d\n",prd);
getch();
return 1;
}

//COMENTEM SEMPRE, OBRIGADO!!!


O ARQUIVO QUE VOCE DEVE COLAR NA PASTA DO PROJETO SEGUE NO LINK ABAIXO!!!!

ARQUIVO PARA PROJETO


Qualquer dúvida, entre em contato!!! COMENTEM

CONTANDO O NUMERO DE LINHA DE UM ARQUIVO E C

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(){

FILE *arq;//ponteiro para meu arquivo
int i, cont =0;//contador de linhas
printf("\n\n\n\n");
arq = fopen("TESTE.txt", "r");//abrindo meu arquivo somente pra leitura, lembre-se o arquivo deve existir
    if(!arq)
    {
        printf("\nERRO\n");//caso der erro ele nao abre o arq e mostra a mensagem de erro
getch();
        exit (1);//sai do programa
    }
while((i=getc(arq)) != EOF){// le o arquivo ate o final
if(i=='\n')//a cada quebra de linha ele incrementa o contador
cont++;}
if(cont != 0)//caso o arquivo possua linhas o contador recebe +1 porque começo com 0
cont++;
printf("\nQuantidade de linhas desse arquivo e %d", cont);
fclose(arq);//fecha o arquivo
        getch();
        return 1;
}


//COMENTEM SEMPRE!!! VLW, FLW

CALCULANDO A SOMA DE TODOS OS PARES DA SEQUÊNCIA DE FIBONACCI ATÉ UM NÚMERO N DADO

#include <iostream>//bibliotecas
using namespace std;

void main()
{
int N;//variaveis
unsigned int x = 0, z = 1, soma=0, y;//inteiros acima de 0
system("cls");
cout << "Escolha o numero de casas que quer ver na tela da sequencia \n";
cin >> N;
cout << "A sequencia de Fibonacci ate a casa de numero ("<< N <<") e \n";
for(int i = 0; i < N; i++)//for pra calcular toda a sequencia e fazer a soma do pares
{
y = x+z;
x = z;
z = y;
cout << x << ' ';
if((x%2)==0)//se o numero da sequencia for par faz a soma dele
soma+=x;
}
cout << "\n\nA soma de todos os numeros pares da sequencia ate " <<N <<" e: "<<soma<<endl;//mostra na tela a soma dos n pares
cout << "\n\n\n";
system("pause");
}

terça-feira, 31 de maio de 2011

SORTEANDO NUMEROS RANDOMICAMENTE EM ARRAYS

ESSE PROGRAMA SORTEIA NÚMEROS RANDOMICAMENTE DE 0 A 50, E ARMAZENA EM UM ARRAY 1, PEGA TODOS ESSES NÚMEROS TESTA QUAIS SÃO ÍMPARES E OS GRAVAM EM UM SEGUNDO ARRAY, E MOSTRA OS ARRAYs NA TELA!!!!



#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <time.h>

int  main(int argc, char** argv){
int v1[100], v2[100]={0}; //arrays
int n=0, k=0;//variaveis
srand(time(NULL));//sorteia os números, NULL == 0, você pode usar, srand(time(0)) também
for(int i = 0; i <100; i++)//percorrendo o array
{
v1[i]=(rand() %50);//pra cada posicao  n do array( 0<=n<100) ele coloca um numero inteiro variando de 0 a 50
if(v1[i]%2 ==1){//testa quais sao o impares
v2[k]=v1[i];//caso for impar, armazena este numero no meu segundo array, na posicao k
k++;}//se armazenou tenho que mudar a posicao do array, incremento o k
printf("%d ", v1[i]);//imprimindo meu array 1 na tela...
n++;
if(n==10)// a cada 10 elementos na mesma linha ele salta um linha
{
printf("\n");
n=0;}//zera o n para contar mais 10 elementos na mesma linha
}
printf("\n\n\n\n");
printf("FORAM SORTEADOR %d NUMEROS IMPARES\n\n\n\n", k);
for(int i = 0; i <100; i++)//imprime o array 2 mostrando apenas numero impares
{
if(v2[i] !=0){//como iniciamos todas as posicoes do meu array com 0, nao quermos mostra-lo(0), entao a cada vez que for diferente de 0 ele mostra
printf("%d ", v2[i]);
n++;}
if(n==10)
{
printf("\n");
n=0;}
}

getch();//getch() funciona como o system("pause"), é a mesma ideia, apenas não aparece nada escrito na tela como " pressione um tecla para continuar" típico do system("pause")
return 0;
}

COMENTEM!!!!

terça-feira, 17 de maio de 2011

Comparando duas strings, se são iguais ou diferentes.

//
//
//
//Comparando duas strings, se são iguais ou diferentes.
//
//
//

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void check(char *a, char *b, int (*cmp)(const char *, const char*));
int numcmp(const char *a, const char *b);
int main(int argc, char** argv) {

    char s1[80], s2[80];

    scanf("%s", &s1);
    scanf("%s", &s2);
  
    if(isalpha(*s1))
        check(s1, s2, strcmp);
    else
        check(s1, s2, numcmp);
}

void check(char *a, char *b, int (*cmp)(const char *, const char*)){

    printf("Testando igualdade...\n");

    if(!(*cmp)(a, b)) printf("Igual.\n");
    else
        printf("Diferente.\n");
}

int numcmp(const char *a, const char *b){

    if(atoi(a)==atoi(b)) return 0;
    else
        return 1;

    return (EXIT_SUCCESS);
}


//Se tiver alguma dúvida em cima do código-fonte, pergunte.

domingo, 15 de maio de 2011

QUADRADO DE UM NUMERO SOMANDO NÚMEROS ÍMPARES!!

Sabemos que para calcular uma potência basta multiplicar a base o n.º de vezes do expoente, ou seja, por exemplo: 42=4x4=16.
No entanto Pitágoras conseguiu arranjar outra regra para calcular potências, baseando-se na soma de números ímpares.
Exemplos:
o primeiro número ímpar é 1 então 12=1
os primeiros dois números ímpares são 1 e 3, então 22=1+3
os primeiros três números ímpares são 1, 3 e 5, então 32=1+3+5
os primeiros quatro números ímpares são 1, 3, 5 e 7, então 42=1+3+5+7 e assim sucessivamente
Se pretendêssemos calcular 92 teríamos que 92=1+3+5+7+9+11+13+15+17=81 isto é, 92 é igual à soma dos primeiros 9 números ímpares.




AGORA COMO FAZER ISSO E LINGUAGEM C????


RESOLVENDO . . . 






#include <stdio.h>
#include <conio.h>
#include <iostream>


using namespace std;


int quadrado (int n);


int main(){


int n, resp, op;
do{
cout << "Entre com o numero\n";
cin >>n;
resp = quadrado(n);
cout<< "O quadrado de  "<<n<<" e: "  << resp<<endl;
cout << "Digite -1 para sair!!\n";
cin >> op;
}while(op != -1);
return 1;
}


int quadrado (int n)
{
int i, k=0;
for(i=0; i < n; i++)
k += ((i *2) + 1);
return k;
}




caso queiram mostrar os numeros impares na tela basta fazer assim:



int quadrado (int n)
{
int i, k=0;
for(i=0; i < n; i++){
k += ((i *2) + 1);
  cout <<k<<" ";
}
getch();
return k;
}





COMENTEM!!!!!

ACHANDO A RAIZ DE UM NUMERO USANDO NÚMEROS ÍMPARES

#include <stdio.h>
#include <conio.h>
#include <iostream>

using namespace std;

int raiz(int n);

int main(){

    int n, resp;
    cout << "Entre com o numero\n";
    cin >> n;
    resp = raiz(n);
    if(resp == 0)
        cout << "A raiz de "<<n<<" nao é inteira";
    else
        cout<< "A raiz de "<<n<<" e: "  << resp<<endl;
    getch();
    return 1;
}

int raiz(int n){


     int condicao=0, r=0;
     int i;
     for(i = 1; condicao<n; i++){
        if(i%2 ==1){
           condicao+=i;
           r++;}
      }
      if(condicao !=n)
           return 0;
      else
         return r;
}


COMENTEM!!!

Procurando um letra na frase!!!!

//O PROGRAMA PEDE PARA O USUARIO INSERIR UMA FRASE OU PALAVRA E EM SEGUIDA O USUARIO ESCOLHE UMA LETRA E O PROGRAMA INFORMA QUANTAS VEZES E EM QUAIS POSICOES ESSA LETRA APARECEU, CASO EXISTA NA FRASE OU PALAVRA
#include <iostream>//bibliotecas
#include <stdio.h>
#include <conio.h>
using namespace std;

void main()//função principal
{
char frase[200], l;//string e a variavel do tipo caracter que o usuario ira armazenar
int posicao[199], x,a, num=1;//vetor para armazener as n posições que se encontrar as letras
while(num){//inicio do laço, para que o usuario possa executar o programa quantas vezes quiser
system("color 0E");
system("cls");//limpa a tela
a=0;
x=0;
cout << "\t Digite uma frase ou uma palavra:\n";
fflush(stdin);//limpa o buffer
gets_s(frase);//recebe a frase ou palavra que o usuario digitar
cout << "\n \tDigite uma letra que deseje preocurar na frase ou na palavra\n";
fflush(stdin);//limpa o buffer
cin >> l;//recebe a letra que o usuario quer achar na frase
for(int i = 0; frase[i] != '\0'; i++){//percorre a string
if(frase[i] == l){//caso a letra desejada exista entra nesse if
a=1;//se entrar no if o (a) passa a ter novo valor
posicao[x] = i;// caso exista varias letras em varias posiçoes, essas posiçoes da string e armazenada no vetor vet
x++;//percorre o vetor e armazena o numero de casas preenchidas no vetor
}
}
if(a == 0)//caso nao exista a letra desejada na palavra o valor de (a) ainda continuara com 0
cout << " \n\tA Frase ou palavra digitada nao possui essa letra\n";
else//caso o valor de a seje != 0
{
cout << " \nA letra [" << l<< "] se repetiu "<< x<< " vezes:\n\n";
for(int i = 0; i < x; i++)//percorre o vetor posicão
cout << "na posicao "<< posicao[i]+1<<endl;//mostra as posiçoes na tela
}
cout << " \nDigite 1 para continuar e inserir um novo texto ou uma nova palavra\n\n";
cin >> num;//recebe a vontade do usuario
if(num != 1)
break;
}//fim do laço while
}//fim da função main

VALEUU GALERA!!! COMENTEM!!!

sábado, 14 de maio de 2011

Jorge o Caçador de mitos!! linguagem c e c++

Caçadores de Mitos
Jorge é um apresentador de televisão que comanda a  versão brasileira do grande
sucesso “Caçadores de Mitos”, onde se estuda um mito para descobrir se é fato ou apenas um
boato.
No próximo episódio, Jorge deverá apresentar o mito que diz que ”os raios não caem
duas vezes no mesmo lugar”, referindo-se aos raios das tempestades de chuva.
Para isso, foi até a cidade de Eletrolândia, que é a cidade com maior ocorrência de raios
no mundo. O prefeito tem tanto orgulho desse título que mandou criar um sistema para registrar
os raios. Jorge conseguiu um relatório com as ocorrências de cada raio que caiu na cidade nos
últimos anos.
O mapa de Eletrolândia é um retângulo. Para o sistema de registro a cidade é subdividida
em quadrados de um metro de lado, denominados quadrantes. Assim, se a cidade tem 300
metros de largura e 1000 de comprimento, ela será subdividida em 300.000 quadrantes. O
sistema de registro armazena o quadrante em que o raio caiu.
Cada quadrante é identificado pelas suas coordenadas X e Y, conforme ilustra a figura
abaixo, que exemplifica um mapa de uma cidade com oito metros de comprimento por cinco
metros de largura (quarenta quadrantes). Além disso, cada quadrante deve conter a data que raio
caiu (dia, mês, ano), o valor da intensidade do raio e as condições do tempo (ensolarado,
chuvoso, nublado, etc).
Como os quadrantes são relativamente pequenos, Jorge decidiu que se dois raios caíram
no mesmo quadrante, pode-se considerar que caíram no mesmo lugar.
Tarefa
Sua missão é escrever um programa para ajudar o caçador de mitos a identificar se uma
determinada cidade atende ao mito ou não. Você deverá escrever um programa que:
 - leia a largura e altura de uma cidade
 - monte um vetor dinâmico que represente a largura x altura da cidade
Atenção: será usada uma estrutura unidimensional para representar uma estrutura
bidimensional
 - apresente um menu com as seguintes opções:
 - Marcar Raio: ler as coordenadas X e Y onde caiu um raio. Nesse caso ler também a
data do ocorrido, a intensidade do raio e as condições do tempo. Caso um raio caiu duas vezes no mesmo lugar, uma mensagem deverá ser impressa na tela e o programa
deverá ser encerrado.
- Pesquisar Raio: fornecer um dado ano e descobrir quantos raios caíram naquele ano e
em quais posições.
- Quantos raios já caíram: imprimir o número de raios que já caíram na cidade.
- Imprimir matriz: imprimir a matriz de tamanho largura x altura com a posição onde
ocorreu um raio, marcado com o símbolo X.
- Gravar arquivo: gravar cada célula da matriz com todas as suas informações (posição,
data que o raio caiu, valor da intensidade do raio e condições do tempo) em uma linha
do arquivo.
- Abrir arquivo: ler um arquivo com as informações sobre os raios que caíram em uma
dada cidade e permitir a continuação da marcação de novos raios para essa cidade

JORGE O CAÇADOR DE MITOS!!!!

ESSE É APENAS UM MODO DE FAZER!!!! COMENTEM!!!!

quarta-feira, 11 de maio de 2011

SALVANDO MEU ARRAY DE ESTRUTURA EM ARQUIVOS .BIN

Ai galera vou tentar se breve e objetivo:



como salvar minha estrutura de dados em um arquivo?
RESOLVENDO:

Primeiro, voce deve abrir o arquivo, depois salvar!!!

minha estrutura chama-se dados!!!
struct dados{
...
};

FILE *abrir_arquivo()
{

FILE *arquivo;
arquivo = fopen(" MEU_ARQUIVO", "wb");
if(!arquivo){
printf("**ERRO**   o arquivo nao pode ser aberto!!!");
exit (1);}
//lembre-se voce deve ler o tamanho da estrutura no seu arquivo, voce deve manipular seu arquivo do tipo qe voce sabia onde seu tamanho vai estar!!! DUVIDAS FALA AI!!

return arquivo;
}
void ler(FILE *arquivo, struct dados *vetor, int tamanho) {
for(int i = 0; i<tamanho; i++)
     fread(&vetor[i], sizeof(struct dados), 1, arquivo);
}

segunda-feira, 9 de maio de 2011

SALVANDO MEU ARRAY DE ESTRUTURA EM ARQUIVOS .TXT

Vou tentar ser o mais claro possível nesse tópico:

Exemplo:


tenho minha estrutura:

struct aluno{

        int idade;
        char nome[20];
        int matricula;
};

// fica pra você declarar na função main() o vetor de estrutura!!!

chamando a funçao:
void gravar(FILE *arq, int tam)// essa funçao nao retorna valor algum, apenas salva a minha estrutura
{
for(int i = 0; i<tam; i++)// laço pra percorrer todo meu vetor
{
fprintf(arq, "%d", vet[i].idade);
fprintf(arq, "%s", vet[i]nome.);
fprintf(arq, "%d", vet[i].matricula);
}
}
SUCESSO, AGORA SEUS DADOS DA ESTRUTURA ESTAO SALVOS!!
Se quiser que cada dado fique em uma linha, use um putc pra saltar linhas
putc('\n', arq);

AI SE CURTIU O TÓPICO DA UM UP AI!!!!! COMENTEM,  COMENTARIOS MOTIVAM A NOSSA BUSCA EM TENTA LHE AJUDAR!!!!! FLW

domingo, 8 de maio de 2011

Todos os programas do livro C Completo e Total.

Pra fazer o download clique aqui.

DERIVANDO A f(x).

Bem, no caso perguntado temos a seguinte função:

f(x)= g(x)/h(x)

f(x) = x+1/ √x²+3


aplicando a regra do quociente:


f(x) =[ 'g(x)*h(x) - g(x)* 'h(x) ]/ [h(x)]²


g(x) = x+1
h(x) = √x²+3


portanto;


'g(x) = 1;
'h(x) = 1/2*(1/√x²+3)* 2x;//aplica-se regra da cadeia, deriva a h(x) vezes a derivada do que ta dentro
h(x)² = x²+3


f(x) = [ 1*(√x²+3) - (x+1)*1/2*(1/√x²+3)* 2x]/ x²+3


espero ter ajudado, flw!!!

Raiz Quadrada.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

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

    //Declara√ß√£o de variaveis
    double n, r;
    //Entrada de dados iniciais
    puts("Entre com um valor");
    scanf("%lf", &n);
    //Avalia√ß√£o do Processamento
    if(n >= 0){
        do{
            //Calcula a raiz e imprimi o resulado
            r = sqrt(n);
            printf("Restudado da raiz quadrada e: %f\n", r);
            //Faz nova leitura
            puts("Entre com outro valor: ");
            scanf("%lf", &n);
        }while(n >= 0);
    }//Fim SE
    puts("Numero negativo digitado. Finalizando...\n\n");
    return (EXIT_SUCCESS);
}//FIM

Criando Array.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    //Declarar variaveis
    int i;
    double A[5];//Declara array com capacidade de 5 valores
    //Entrada de dados no array
    i = 0; //inicializa o contador
    do{
        printf("Digite o valor A[%d] = ",i);//menssagem
        scanf("%lf", &A[i]);//leitura do valor na posi√ß√£o 1
        i++; //incremento
    }while(i < 5);
    //Busca da primeira ocorr√™ncia do valor 0

    i = 0;//inicializa contador

    while((i < 5) && (A[i] != 0)){
        i++;//incremento
    }
    if(i < 5){//entao
        printf("%d\n", i);
    }//fimentao
    else{//senao
        printf("Nao encontrado**\n");
    }//fimsenao

    return (EXIT_SUCCESS);
}


Isso ae.

sábado, 7 de maio de 2011


baixe o Keylemon, para proteger seu pc! download- KeyLemon

Baixe aqui neste link o camSpace, software que permita qualquer objeto coloca na frente da web cam virar um mouse, experimente agora. camSpace-download now 

Preenchendo meu array de estruturas

Quero preencher minha struct, e salvar no meu *vetor
muito simples, basta saber a posiçao. E se eu quiser que meu vetor seje unidimensional, que represente um bidimensional?
ta ai, como fazer?
kkkkkkk
exemplo:
//minha estrutura de dados
struct lista{

char nome[15];
int idade;
int dia;
int mes;
int ano;
};

int main(){

struct lista *vet;
int m, n;//dimensoes da minha matriz
//onde m é a altura(numero de linhas) e n é a largura(numero de colunas)
int x, y;// posicao onde vou salvar os dados na matriz linha  x coluna
int aux, pos;//aux é o tamnho do vetor
cout << "Entre com a altura da cidade\n";
cin >> m;
cout << "Entre com a largura\n";
cin >> n;
cout << "Onde deseja salvar: POSICAO  YxX, ou seja linha e coluna\n";// x é a coluna e y a linha
cout << "digite x\n";
cin >> x;
cout << "Digite y\n";
cin >> y;
//primeiro passo
// como meu vetor é unidimensional tenho que faze-lo se comportar como uma matriz, quantas posicoes tem uma matriz? é o numero de linha pelo numero de colunas, okay?
//entao;
aux = m*n;
//alocando o vetor
vet = (struct lista*)malloc(aux*sizeof(struct lista));
if(!vet){
cout >> "**ERRO** espaço insuficiente de memória\n";
exit (1);}
pos = (y*m) +x;
//entrando com os dos na minha estrutura
cout <<"Digite o nome\n";
gets_s(vet[pos].nome);
cout << "digite a idade\n";
cin >> vet[pos].idade;
cout <<"digite a data : DD/ MM/AAAA \n";
cin >> vet[pos].dia >> vet[pos].mes >> vet[pos].ano;
}//termine seu programa....

LEMBRE-SE, SEMPRE É BOM DIVIDIR SEU PROGRAMA EM MÓDULOS(FUNÇÕES) E SEMPRE COMENTAR NO QUE FOI FEITO

quem curtiu da um up!!

Alocando um vetor unidimensional em c e c++

Bem, a ideia é reservar um espaço de memória pro meu vetor, seja ele do tipo, int, float, char ou ate mesmo strcut

temos a funçao main()

int main(){

int a=15; // quero um vetor de tamanho 15
int *vet;//vetor do tipo de inteiro, cada int ocupa 4 bytes na memoria, okay?
//vamos alocar
vet = (int *)malloc(a*sizeof(int));// aloquei 15*4 bytes na minha memória para gravar meus numeros inteiros
}
//alocando um vet do tipo struct
//suponha que minha struct se chame, struct lista
//declaro na funcao main meu vet
int main(){

int a = 10;
struct lista *vet; // strcut lista é o tipo do meu vetor
//alocando meu struct lista
vet = (struct lista*)malloc(a*sizeof(struct lista))// reserva na minha memoria 10 *(tamanho da minha estrutura)
}

É isso ai se curtiu da um up ai, valeu

Frase palindrome em C

Um palíndromo é uma palavra ou um número que se lê da mesma maneira nos dois sentidos, normalmente, da esquerda para a direita e ao  contrário.
COMO SABER SE UMA FRASE É PALINDROME EM C?
Exemplos:
ANOTARAM A DATA DA MARATONA


ASSIM A AIA IA A MISSA


A DIVA EM ARGEL ALEGRA-ME A VIDA


*eliminando os espaços


se você pesquisar mais no google irá achar várias outra.


dai surge a dúvida, como fazer que meu computador verificar se elas são ou não palindromes?
Simples, basta programar, A VIDA ES'TA NA ARTE DE PROGRAMAR! 
kkkk


caso o usuário queria usar os comandos de entrada e saída (cin e cout) basta acrescentar a biblioteca
#include <iostream>
using namespace std; 



#include <iostream>//bibliotecas
#include <stdio.h>


void main()//função main- principal função do programa
{
char str[50];//string
int j, y, num=1;//declaração de inteiros
while(num){//inicia o laço para o usuario executar o programa quantas vezes desejar
system("cls");//limpa a tela
y=0;//atribui valores para as variaveis
j=0;
printf ("\nDigite a frase que desejar\n");
fflush(stdin);//limpa o buffer
gets_s(str);//recebe a string
j = strlen(str)-1;//j e o tamanho da string - 1
for(int i = 0; i < j         ; i++, j--){//laço for para percorrer a string
if(str[i] == ' ' || str[i] == '-')//elimina espaços e traços 
i++;
if(str[j] == ' ' || str[j] == '-')//elimina espaços e traços
j--;
if(str[i] != str[j]){//compara as posiçoes
y = 1;//caso for diferente as letras nas posiçoes y armazena 1
}
}
if(y == 0)// se y continuar com 0 a frase e palindroma 
printf("\nA frase e palindroma\n");
else// caso nao continue com 0 a frase nao e mais palindroma
printf("\nA frase nao e palindroma:\n");
printf("Digite 1 para continuar");
scanf("%d",&num);
if(num != 1)
break;
}//fim do laço while
}

Resolvendo com funçao recursiva

#include <conio.h>
#include <stdio.h>
#include <string.h>


int palindromo (char * str, int i, int j );
int main()
{
char frase[20];
int n, i=0;
printf("digite a da frase\n");
gets_s(frase);
n= strlen(frase)-1;
if(palindromo (frase,i, n)== 1)
printf("\nA frase e palindrome");
else
printf("\nA frase nao e palindrome");
getch();
return 0;
}
int palindromo (char *str, int i, int j )
{
if(*(str+i)== ' ' || *(str+i)== '-' || *(str+i)== '.')
i++;
if(*(str+j)== ' '|| *(str+j)== '-' || *(str+j)== '.')
j--;
if(i >= j )
return 1;
else 
{
if(*(str+i) == *(str+j))
return palindromo( str, i+1, j-1);


else
return 0;//caso a frase nao por palindrome a funçao retorna 0
}
}




Quem curtiu, da um up ai!