domingo, 16 de dezembro de 2012

Ficheiros: modo de abertura

Leitura ao escrita

* r - abre o ficheiro de texto para leitura, se não existir, fopen, (..) devolve NULL

* w - Cria o ficheiro de texto para escrita. Caso já exista , esvazia-o previamente

* a - Abre o ficheiro de texto, se já existe, ou cria um novo ficheiro, se não existe, para escrita a partir  do fim do ficheiro (append)

Manipulação de ficheiros


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

main()
{
FILE *fp1, *fp2;
int contador=0;
char linha[200];
fp1 = fopen("ficheiro1.txt","r");
fp2 = fopen("ficheiro2.txt","w");

while(fgets(linha,200,fp1))
{
contador++;
if(contador%2 == 0)
{
fputs(linha,fp2);
}
}
fclose(fp1);
fclose(fp2);
}


Explicação do código


1º- Definir os apontadores para os ficheiros (fp1 e fp2);

2º- Definir a variável "linha" que vai ser usada para conter o buffer de cada linha do primeiro ficheiro.
Definir um contador, inicializando a zero. Serve para testar se as linhas lidas são pares (quando o contador é um número par) ou se são ímpares;


3º- Abrir os dois ficheiros, um para leitura e outro para escrita:

fp1 = fopen("ficheiro1.txt","r"); // ler no ficheiro


fp2 = fopen("ficheiro2.txt","w"); // escrever no ficheiro


4º- Enquanto ouver linhas para ler, é lida uma linha de cada vez do ficheiro 1

while(fgets(linha,200,fp1))

É incrementado o contador porque foi lida mais uma linha do ficheiro 1.

Se o resto da divisão inteira por 2 for zero, que significa que a linha lida é par, escrevemos essa linha no ficheiro 2


fputs(linha,fp2);

5º- Fechar os ficheiros com o fclose.

domingo, 2 de dezembro de 2012

Funções Recursivas


O que é?

É uma função que invoca a si própria.


Isto é uma função pode chamar a si própria.
O número de vezes  que uma função pode ser chamada  recursivamente  é limitado ao tamanho da pilha (stack).




http://www.youtube.com/watch?v=JhpD4pQmtb0

terça-feira, 6 de novembro de 2012

Apontadores


Código

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



void suap_ints(int a, int b);
void suap_prints(int *pa, int *pb);
int main()
{
    int x=18, y=97;
    printf("x = %d y=%d \n",x,y);
    //suap_ints(x,y);
    suap_prints(&x,&y);
    printf(" x=%d, y=%d \n",x,y);
    return 0;
}

//passar por valor

void suap_ints(int a, int b)
{
 int k=a;
 a=b;
 b=k;
}





//passar por referencia
 void suap_prints(int *pa, int *pb)
 {
     int k=*pa;
     *pa=*pb;
     *pb=k;
 }






sexta-feira, 12 de outubro de 2012

Projecto: Descobrir Palavras


O Projecto consiste em desenvolver um programa que implemente uma variante do  jogo/passatempo tradicional de descobrir palavras numa matriz aleatória de letras. Dada uma matriz de caracteres fornecida por um utilizador ou gerada de forma aleatória, pretende-se encontrar determinadas palavras formadas por caracteres existentes na
matriz.

segunda-feira, 24 de setembro de 2012

Escalares, Vectores e operações vectoriais ( Física)

Escalares : basta um valor numérico para caracterizar esta grandeza

Vectoriais: é necessário um valor numérico e orientação

Aqui deixo-vos um site que pode-vos ser utíl no estudo desta matéria que diz respeito á caracterização de um vector

http://www.filipe-teixeira.com/vectores-em-fisica.html

Encontrei algures aqui na internet um ficheiro que vos vou deixar em anexo, com exercicios e com a respectiva explicação. Dei uma "vista de olhos" e acho bastante completo.