quinta-feira, 24 de outubro de 2013

segunda-feira, 21 de outubro de 2013

Programação C - Resolução da questão 1 da avaliação simulada

Senhores alunos:

Segue a solução da questão 1 da avaliação simulada, sem a parte de arquivos (O vetor a ser separado foi definido no inicio da rotina main ).

------------------------------------------------------------------
Faça um programa que leia de um arquivo um vetores de números inteiros positivos e o separe em dois vetores: um com os números pares e outro com os números pares.
Como deve ser o programa:
  • Deve conter uma função que leia o vetor. (void le_vetor(int*) );
  • Deve conter uma função que separe os vetores em 2 vetores ( int* separa(int*) ):
  • um com os números pares e que começa na mesma posição (mesmo endereço) do vetor original;
  • outro com os números impares, que começa na posição de memória logo após o término do vetor de números pares;
  • ambos os vetores devem ser terminados por $;
  • deve retornar um ponteiro com o endereço do primeiro elemento do vetor de números ímpares
  • O programa principal deve gravar no arquivo original os dois vetores a partir das seguintes informações:
  • O vetor de pares a partir do ponteiro que aponta para o primeiro elemento do vetor original;
  • O vetor de ímpares a partir do ponteiro retornado pela função; 
------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
int* separa(int*);
int main()
{
    int vetor_par[20]={1,4,6,7,9,10,12,2,-1},*vetor_impar,k=0,j=0;
    vetor_impar=separa(vetor_par);
    while(vetor_par[k]!=-1)
    {
        printf("%d ",vetor_par[k]);
        k++;
    }
    while(vetor_impar[j]!=-1)
    {
        printf("%d ",vetor_impar[j]);
        j++;
    }
    return 0;
}

int* separa(int* ptr)
{
    int vetor_aux[10];
    int i=0,k=0,j=0,n;
    // coloca os pares no vetor original
    // e os impares em um vetor auxiliar
    while(ptr[i]!=-1)
    {
        if(ptr[i]%2)
        {
            vetor_aux[k]=ptr[i];
            k++;
        }
        else
        {
            ptr[j]=ptr[i];
            j++;
        }
     i++;
    }
    ptr[j]=-1;      // fim do vetor com os pares
    vetor_aux[k]=-1;// fim do vetor auxiliar
    k=0;            // reinicializa indice do vetor auxiliar
    n=++j;          // gera endereço de retorno(inicio do vetor com os impares)
    // coloca os impares após os pares no vetor original
    while(vetor_aux[k]!=-1)
    {
        ptr[j]=vetor_aux[k];
        k++;
        j++;
    }
    ptr[j]=-1;      //fim do vetor com os impares
    return &ptr[n];
}

domingo, 20 de outubro de 2013

Circuitos Elétricos III - Lista de exercícios - ressonância

Senhores alunos de Circuitos Elétricos III:

Cliquem aqui para baixar uma lista com exercícios sobre ressonância selecionados a partir do livro texto (SADIKU) e de EDMINISTER, Joseph. Circuitos Elétricos. Rio de Janeiro: McGraw-Hill do Brasil, 1971.


Lembrem que a segunda avaliação está marcada para o dia 01/11.

Boa semana!

quarta-feira, 9 de outubro de 2013

Introdução a Programação C - Aula de 09/10

Senhores alunos:

Segue o link para acessar o material da nossa aula de hoje:
  • Classes de Armazenamento;
  • O Pré-processador C e as macros.

Até a noite!

quinta-feira, 3 de outubro de 2013

Programação C - Uso de acentuação no Code::Blocks

Senhores Alunos:

Conforme informação repassada pela aluna Taiana do Curso Técnico noturno, é possível utilizar os caracteres acentuados do Português no Code::Blocks sem precisar utilizar o código ascii hexa correspondente. Basta incluir o arquivo de cabeçalho

                                     #include <locale.h>

 e a linha de comando

                                setlocale(LC_ALL,"portuguese");

Resolvi, então, pesquisar como seria possível incluir de forma permanente estas linhas, para evitar que, a cada novo projeto, elas tivessem que ser adicionadas.

É muito simples, basta editar com o bloco de notas, por exemplo, o arquivo main.c que se encontra na pasta

         ...\CodeBlocks\templates\wizard\console\c

fazendo com que ele, por exemplo, tome a seguinte forma


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

int main()
{
    setlocale(LC_ALL,"portuguese");
    printf("Alô mundo!\n");
    return 0;
}


O arquivo provavelmente deve ser protegido contra escrita. Neste caso, salve ele em outra pasta e depois substitua o arquivo original por esse arquivo.

Está feito! Quando for criado um novo projeto de console, este será o arquivo main.c que será inserido no mesmo.

Boa noite!

Lista de Exercícios - Sistemas de Controle

Senhores Alunos:

A partir do link abaixo é possível acessar a lista complementar ao Capítulo III da apostila.
Lista complementar do Capítulo III.

**** Correção das Respostas ****

**** Questão 2 (a): ess =0   ****

**** Questão 4: Kv = 1,667. ****

*****************************

Até breve!

Programação C - Tecnólogo

 
 Srs alunos:

Segue solução, não otimizada, do exercício que solicitava a leitura de dois vetores A e B de um arquivo e a gravação em outro arquivo de um vetor 
C = A U B. Era admitido que os vetores não possuíam elementos repetidos e que o resultado não precisava ser ordenado.

Até a próxima postagem!

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

int main()
{   int vetor1[20];
    int vetor2[40];
    int k=0,n,max1,max2,j,l,a=0;
    char nomearq[] = {"vetores.txt"},nomearq1[] = {"c:\\Users\\Marco\\Documents\\2013_2\\uniao.txt"};
    FILE *fp, *fp1;
    fp=fopen(nomearq,"r");
    if(fp==NULL) exit(1);
    fp1=fopen(nomearq1,"w");
    if(fp1==NULL) exit(1);
    while(1)
    {  fscanf(fp,"%d ",&vetor1[k]);
       if(vetor1[k]==-1)break;
        k++;
    }
    max1=k-1;
    k=0;
    while(1)
    {  fscanf(fp,"%d ",&vetor2[k]);
       if(vetor2[k]==-1)break;
        k++;
    }
    max2=k-1;
    k=0;
    fclose(fp);
    for(j=0;j<=max1;j++)
        for(l=0;l<=max2;l++)
        {
            if(vetor1[j]==vetor2[l])break;
            if(l==max2)
            {
               a++;
               vetor2[max2+a]=vetor1[j];
            }
        }
    for(l=0;l<=(max2+a);l++)
        fprintf(fp1,"%d ",vetor2[l]);
    printf("Arquivo gravado");
    fclose(fp1);
    return 0;
    }

Programação C - Tecnólogo - Aula de 03/10

Srs alunos da turma 2030411A:

Cliquem aqui para acessar o material sobre ponteiros.

Até breve!