Mudanças entre as edições de "Jeferson Ricardo Tichz"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(15 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 4: Linha 4:
 
==PRG==
 
==PRG==
 
[http://wiki.sj.ifsc.edu.br/index.php/PRG1-_Programa%C3%A7%C3%A3o_I_-_Gradua%C3%A7%C3%A3o Link Matéria]
 
[http://wiki.sj.ifsc.edu.br/index.php/PRG1-_Programa%C3%A7%C3%A3o_I_-_Gradua%C3%A7%C3%A3o Link Matéria]
 +
 +
==='''[[Aula 16/06/15]]'''===
 +
 +
==='''[[Aula 11/06/15]]'''===
 +
 +
==='''[[Aula 02/06/15]]'''===
 +
 
==='''Aula 28/05/15'''===
 
==='''Aula 28/05/15'''===
 
*Exemplo
 
*Exemplo
Linha 57: Linha 64:
 
       p = p->prox;  
 
       p = p->prox;  
 
   return p;  
 
   return p;  
 +
}
 +
</syntaxhighlight>
 +
 +
*Exercicio 1
 +
<syntaxhighlight lang=c>
 +
#include <stdlib.h>
 +
#include <stdio.h>
 +
 +
/*========================*/
 +
/** OPERAÇÔES COM LISTA LIGADA ******/
 +
/*========================*/
 +
 +
/*
 +
*    tipos e variáveis globais
 +
*    */
 +
 +
struct TProduto{
 +
  int codigo;
 +
  struct TProduto *next;main()
 +
{
 +
  int i,vlr,qtd;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5#include <stdlib.h>
 +
#include <stdio.h>
 +
 +
/*========================*/
 +
/** OPERAÇÔES COM LISTA LIGADA ******/
 +
/*========================*/
 +
 +
/*
 +
  tipos e variáveis globais
 +
*/
 +
 +
struct TProduto{
 +
  int codigo;
 +
  struct TProduto *next;
 +
} *head, *tail;
 +
 +
 +
/*
 +
  adiciona item a cabeça da lista
 +
  retorna 0 se tudo ok e -1 se erro
 +
*/
 +
int add_nodo_head(int codigo)
 +
{
 +
 +
}
 +
 +
/*
 +
  adiciona item ao final  lista
 +
  retorna 0 se tudo ok e -1 se erro
 +
*/
 +
int add_nodo_tail(int codigo)
 +
{
 +
  struct TProduto *p =  malloc (sizeof(struct TProduto));
 +
  if (!p)
 +
        return -1;
 +
 +
  p->codigo = codigo;
 +
  p->next = NULL;
 +
 +
  if (tail==NULL) {
 +
      /* lista vazia */
 +
      tail = head = p;
 +
  }else {
 +
    /*lista não vazia */
 +
      tail->next = p;
 +
      tail = p;
 +
  }
 +
  return 0;
 +
}
 +
 +
/*
 +
  imprimir lista
 +
*/
 +
 +
void print_list()
 +
{
 +
 +
};i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);
 +
//print_list(tail);
 +
}#include <stdlib.h>
 +
#include <stdio.h>
 +
 +
/*========================*/
 +
/** OPERAÇÔES COM LISTA LIGADA ******/
 +
/*========================*/
 +
 +
/*
 +
*    tipos e variáveis globais
 +
*    */
 +
 +
struct TProduto{
 +
  int codigo;
 +
  struct TProduto *next;main()
 +
{
 +
  int i,vlr,qtd;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5;i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);
 +
//print_list(tail);
 +
}
 +
 +
} *head, *tail;
 +
 +
 +
/*
 +
*    adiciona item a cabeça da lista
 +
*      retorna 0 se tudo ok e -1 se erro
 +
*      */
 +
int add_nodo_head(int codigo)
 +
{
 +
 +
}
 +
 +
/*
 +
*    adiciona item ao final  lista
 +
*      retorna 0 se tudo ok e -1 se erro
 +
*      */
 +
int add_nodo_tail(int codigo)
 +
{
 +
  struct TProduto *p =  malloc (sizeof(struct TProdumain()
 +
{
 +
  int i,vlr,qtd;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5;i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);main()
 +
{
 +
  int i,vlr,qtd;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5;i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);
 +
//print_list(tail);
 +
}
 +
 +
//print_list(tail);
 +
}
 +
to));
 +
  if (!p)
 +
        return -1;
 +
 +
  p->codigo = codigo;
 +
  p->next = NULL;
 +
 +
  if (tail==NULL) {
 +
      /* lista vazia */
 +
      tail = head = p;
 +
  }else {
 +
    /*lista não vazia */
 +
      tail->next = p;
 +
      tail = p;
 +
  }
 +
  return 0;
 +
}
 +
 +
/*
 +
*    imprimir lista
 +
*    */
 +
 +
void print_list(struct TProduto *ini)
 +
{
 +
typedef struct TProduto produto;
 +
produto *p;
 +
  for (p = ini; p != NULL; p = p->next){
 +
      printf( "%p\t%d\t\n",p, p->codigo);
 +
}
 +
}
 +
 +
 +
} *head, *tail;
 +
 +
 +
/*
 +
*    adiciona item a cabeça da lista
 +
*      retorna 0 se tudo ok e -1 se erro
 +
*      */
 +
int add_nodo_head(int codigo)
 +
{
 +
 +
}
 +
 +
/*
 +
*    adiciona item ao final  lista
 +
*      retorna 0 se tudo ok e -1 se erro
 +
*      */
 +
int add_nodo_tail(int codigo)
 +
{
 +
  struct TProduto *p =  malloc (sizeof(struct TProdumain()
 +
{
 +
  int i,vlr,qtd;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5;i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);main()
 +
{
 +
  int i,vlr,qtd;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5;i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);
 +
//print_list(tail);
 +
}
 +
 +
//print_list(tail);
 +
}
 +
to));
 +
  if (!p)
 +
        return -1;
 +
 +
  p->codigo = codigo;
 +
  p->next = NULL;
 +
 +
  if (tail==NULL) {
 +
      /* lista vazia */
 +
      tail = head = p;
 +
  }else {
 +
    /*lista não vazia */
 +
      tail->next = p;
 +
      tail = p;
 +
  }
 +
  return 0;
 +
}
 +
 +
/*
 +
*    imprimir lista
 +
*    */
 +
 +
void print_list(struct TProduto *ini)
 +
{
 +
typedef struct TProduto produto;
 +
produto *p;
 +
  for (p = ini; p != NULL; p = p->next){
 +
      printf( "%p\t%d\t\n",p, p->codigo);
 +
}
 +
}
 +
 +
main()
 +
{
 +
  int i;
 +
 +
  head = tail = NULL;
 +
  //print_list (tail);
 +
  for (i=0;i<5;i++)
 +
    add_nodo_tail(i);
 +
 +
  print_list (head);
 +
print_list(tail);
 +
}
 +
 +
</syntaxhighlight>
 +
 +
*Atividades fazer o programa perguntar qual numero quer alterar e o altera-lo
 +
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdlib.h>
 +
#include <stdio.h>
 +
 +
/*========================*/
 +
/** OPERAÇÔES COM LISTA LIGADA ******/
 +
/*========================*/
 +
 +
/*
 +
  tipos e variáveis globais
 +
*/
 +
 +
struct TProduto{
 +
  int codigo;
 +
  struct TProduto *next;
 +
} *head, *tail;
 +
 +
 +
/*
 +
  adiciona item a cabeça da lista
 +
  retorna 0 se tudo ok e -1 se erro
 +
*/
 +
int add_nodo_head(int codigo)
 +
{
 +
 +
}
 +
 +
/*
 +
  adiciona item ao final  lista
 +
  retorna 0 se tudo ok e -1 se erro
 +
*/
 +
int add_nodo_tail(int codigo)
 +
{
 +
  struct TProduto *p =  malloc (sizeof(struct TProduto));
 +
  if (!p)
 +
        return -1;
 +
 +
  p->codigo = codigo;
 +
  p->next = NULL;
 +
 +
  if (tail==NULL) {
 +
      /* lista vazia */
 +
      tail = head = p;
 +
  }else {
 +
    /*lista não vazia */
 +
      tail->next = p;
 +
      tail = p;
 +
  }
 +
  return 0;
 +
}
 +
 +
/*
 +
  imprimir lista
 +
*/
 +
 +
void print_list(struct TProduto *ini)
 +
{
 +
typedef struct TProduto produto;
 +
produto *p;
 +
  for (p = ini; p != NULL; p = p->next){
 +
      printf( "%p\t%d\t\n",p, p->codigo);
 +
}
 +
}
 +
 +
 +
 +
main()
 +
{
 +
  int i,vlr,qtd,mudar,novo;
 +
head = tail = NULL;
 +
 +
printf("Entre com a quantidade de numeros: ");
 +
scanf("%d",&qtd);
 +
for(i = 1; i <= qtd; i++){
 +
        printf("Digite o número %d ->: ", i);
 +
        scanf("%d", &vlr);
 +
    add_nodo_tail(vlr);
 +
}
 +
//  head = tail = NULL;
 +
  //print_list (tail);
 +
// for (i=1;i<5;i++)
 +
  //  add_nodo_tail(i);
 +
 +
  print_list (head);
 +
printf("Digite o numero que voce quer alterar: ");
 +
scanf("%d",&mudar);
 +
for(i = 1; i <= qtd; i++){
 +
if (*p==mudar){
 +
printf("Digite o numero que voce quer: ");
 +
scanf("%d",&novo);
 +
add_nodo_tail(p);
 +
}//else {printf("Digite um numero valido ");}
 +
 +
}
 +
print_list(head);
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Edição atual tal como às 15h47min de 16 de junho de 2015

Pagina Jeferson Ricardo Tichz ( Engenharia 14.2)

PRG

Link Matéria

Aula 16/06/15

Aula 11/06/15

Aula 02/06/15

Aula 28/05/15

  • Exemplo
struct Taluno{
int matricula;
char[40] nome;
char[11] data_nasc;
struct Taluno *prox; // para ser indefinido qantos ALUNOS teram esta estrutura
}Aluno;

typedef struct Aluno al; //defindo nome mais facil para trabalhar
al a;                   //pra chamar mais facil como variavel
al *pa;                //defindo estrutura como vetor (ponteiro)
pa->nome;             //pegando o conteudo do pa que eh um ponteiro para al q eh o alias para Aluno no campo nome
  • Exemplo1.c
#include <stdio.h>
#include <stdlib.h>
struct cel {
    int conteudo;
    struct cel *prox;
}cel;
typedef struct cel celula;


void main( celula *ini) {
   celula *p;
   for (p = ini->prox; p != NULL; p = p->prox)
      printf( "%d\n", p->conteudo);
}
//não deu certo xD
// Esta função recebe um inteiro x e uma lista
// encadeada ini de inteiros, com celula-cabeça.
// A função devolve o endereço de uma celula que
// contém x ou devolve NULL se tal celula não existe.
 
    //retorna o endereco que esta sendo localisado nao o conteudo
celula *busca( int x, celula *ini) //vai buscar por x apartir de uma celula inicial
{
   celula *p;
   p = ini->prox;
   while (p != NULL && p->conteudo != x) 
      p = p->prox; 
   return p; 
}
  • Exercicio 1
#include <stdlib.h>
#include <stdio.h>

/*========================*/
/** OPERAÇÔES COM LISTA LIGADA ******/
/*========================*/

/*
 *    tipos e variáveis globais
 *    */

struct TProduto{
   int codigo;
  struct TProduto *next;main()
{
  int i,vlr,qtd;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5#include <stdlib.h>
#include <stdio.h>
 
/*========================*/
/** OPERAÇÔES COM LISTA LIGADA ******/
/*========================*/
 
/*
   tipos e variáveis globais
*/
 
struct TProduto{
   int codigo;
  struct TProduto *next;
} *head, *tail;
 
 
/*
   adiciona item a cabeça da lista
   retorna 0 se tudo ok e -1 se erro
*/
int add_nodo_head(int codigo)
{
 
}
 
/*
   adiciona item ao final  lista
   retorna 0 se tudo ok e -1 se erro
*/
int add_nodo_tail(int codigo)
{
   struct TProduto *p =  malloc (sizeof(struct TProduto));
   if (!p)
        return -1;
 
   p->codigo = codigo;
   p->next = NULL;
 
   if (tail==NULL) {
      /* lista vazia */
      tail = head = p;
   }else {
     /*lista não vazia */
       tail->next = p;
       tail = p;
   }
   return 0;
}
 
/*
   imprimir lista 
*/
 
void print_list()
{
 
};i++)
   //  add_nodo_tail(i);

  print_list (head);
//print_list(tail);
}#include <stdlib.h>
#include <stdio.h>

/*========================*/
/** OPERAÇÔES COM LISTA LIGADA ******/
/*========================*/

/*
 *    tipos e variáveis globais
 *    */

struct TProduto{
   int codigo;
  struct TProduto *next;main()
{
  int i,vlr,qtd;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5;i++)
   //  add_nodo_tail(i);

  print_list (head);
//print_list(tail);
}

} *head, *tail;


/*
 *    adiciona item a cabeça da lista
 *       retorna 0 se tudo ok e -1 se erro
 *       */
int add_nodo_head(int codigo)
{

}

/*
 *    adiciona item ao final  lista
 *       retorna 0 se tudo ok e -1 se erro
 *       */
int add_nodo_tail(int codigo)
{
   struct TProduto *p =  malloc (sizeof(struct TProdumain()
{
  int i,vlr,qtd;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5;i++)
   //  add_nodo_tail(i);

  print_list (head);main()
{
  int i,vlr,qtd;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5;i++)
   //  add_nodo_tail(i);

  print_list (head);
//print_list(tail);
}

//print_list(tail);
}
to));
   if (!p)
        return -1;

   p->codigo = codigo;
   p->next = NULL;

   if (tail==NULL) {
      /* lista vazia */
      tail = head = p;
   }else {
     /*lista não vazia */
       tail->next = p;
       tail = p;
   }
   return 0;
}

/*
 *    imprimir lista 
 *    */

void print_list(struct TProduto *ini)
{
typedef struct TProduto produto;
produto *p;
  for (p = ini; p != NULL; p = p->next){
      printf( "%p\t%d\t\n",p, p->codigo);
}
}


} *head, *tail;


/*
 *    adiciona item a cabeça da lista
 *       retorna 0 se tudo ok e -1 se erro
 *       */
int add_nodo_head(int codigo)
{

}

/*
 *    adiciona item ao final  lista
 *       retorna 0 se tudo ok e -1 se erro
 *       */
int add_nodo_tail(int codigo)
{
   struct TProduto *p =  malloc (sizeof(struct TProdumain()
{
  int i,vlr,qtd;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5;i++)
   //  add_nodo_tail(i);

  print_list (head);main()
{
  int i,vlr,qtd;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5;i++)
   //  add_nodo_tail(i);

  print_list (head);
//print_list(tail);
}

//print_list(tail);
}
to));
   if (!p)
        return -1;

   p->codigo = codigo;
   p->next = NULL;

   if (tail==NULL) {
      /* lista vazia */
      tail = head = p;
   }else {
     /*lista não vazia */
       tail->next = p;
       tail = p;
   }
   return 0;
}

/*
 *    imprimir lista 
 *    */

void print_list(struct TProduto *ini)
{
typedef struct TProduto produto;
produto *p;
  for (p = ini; p != NULL; p = p->next){
      printf( "%p\t%d\t\n",p, p->codigo);
}
}

main()
{
  int i;

  head = tail = NULL;
  //print_list (tail);
  for (i=0;i<5;i++)
     add_nodo_tail(i);

  print_list (head);
print_list(tail);
}
  • Atividades fazer o programa perguntar qual numero quer alterar e o altera-lo


#include <stdlib.h>
#include <stdio.h>
 
/*========================*/
/** OPERAÇÔES COM LISTA LIGADA ******/
/*========================*/
 
/*
   tipos e variáveis globais
*/
 
struct TProduto{
   int codigo;
  struct TProduto *next;
} *head, *tail;
 
 
/*
   adiciona item a cabeça da lista
   retorna 0 se tudo ok e -1 se erro
*/
int add_nodo_head(int codigo)
{
 
}
 
/*
   adiciona item ao final  lista
   retorna 0 se tudo ok e -1 se erro
*/
int add_nodo_tail(int codigo)
{
   struct TProduto *p =  malloc (sizeof(struct TProduto));
   if (!p)
        return -1;
 
   p->codigo = codigo;
   p->next = NULL;
 
   if (tail==NULL) {
      /* lista vazia */
      tail = head = p;
   }else {
     /*lista não vazia */
       tail->next = p;
       tail = p;
   }
   return 0;
}
 
/*
   imprimir lista 
*/
 
void print_list(struct TProduto *ini)
{
typedef struct TProduto produto;
produto *p;
  for (p = ini; p != NULL; p = p->next){
      printf( "%p\t%d\t\n",p, p->codigo);
}
}



main()
{
  int i,vlr,qtd,mudar,novo;
 head = tail = NULL;

printf("Entre com a quantidade de numeros: ");
scanf("%d",&qtd);
 for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
    add_nodo_tail(vlr);
}
//  head = tail = NULL;
  //print_list (tail);
 // for (i=1;i<5;i++)
   //  add_nodo_tail(i);

  print_list (head);
printf("Digite o numero que voce quer alterar: ");
scanf("%d",&mudar);
for(i = 1; i <= qtd; i++){
if (*p==mudar){
printf("Digite o numero que voce quer: ");
scanf("%d",&novo);
add_nodo_tail(p);
}//else {printf("Digite um numero valido ");}

}
print_list(head);
}

Aula 26/05/15

  • EXEMPLO 1
   Alocação dinâmica de números inteiros (exercício puramente didático): 
#include <stdlib.h>
 
main()
{
  int *px, *py;
  int resultado;
  px = (int *) malloc(sizeof(int)); // endereco de memoria
  *px = 5;                          // conteudo da memoria
  py = (int *) malloc(sizeof(int));
  *py = 2;
  resultado = *px + *py;
 
  free (px);
  px = NULL;
  free (py);
  py = NULL;
}

exemplo2

#include <stdio.h>
#include <stdlib.h>
 
int main(void){
 
    int *valores, *aux;
    int qtd, i, vlr;
 
    printf("\nEntre com a quantidade de números: ");
    scanf("%d", &qtd);
 
    if(qtd == 0)
        exit(0);
 
//Aloca um vetor com a quantidade recebida em qtd
    valores = (int *) calloc(qtd, sizeof (int));
 
//Imprime o endereco e valor (zero) para a quantidade de números informada
    aux = valores;
    for(i = 1; i <= qtd; i++){
        printf("%p\t%d\n", aux, *aux);
        aux++;
    }
 
    aux = valores; //Ponteiro para o primeiro espaço de memória
    for(i = 1; i <= qtd; i++){
        printf("Digite o número %d ->: ", i);
        scanf("%d", &vlr);
        *aux = vlr;
        aux++;
    }
 
    aux = valores; //Retorna à posição inicial no mapa de memória
    for(i = 1; i <= qtd; i++){
        printf("%p\t%d\n", aux, *aux);
        aux++;
    }
 
    free(valores);
 
    return 0;
}
  • Ver realocando memoria
#include <stdio.h>
#include <stdlib.h>

void main()
{
  struct TTeste{
     int x;
     int y;
  } *teste;

  if ((teste = (struct TTeste *) malloc (100*sizeof(struct TTeste)))==NULL) {
      printf("erro de alocação");
      exit(1);
  }



  teste[0].x= 5;
 printf("\n %p e %d\n",&teste[0],teste[0].x);
  if ((teste = realloc(teste, 10000*sizeof(struct TTeste)))==NULL) {
      printf("erro de alocação");
      exit(1);
  }
printf("\n %p e %d\n",&teste[0],teste[0].x);
 teste[1].x=20;
printf("\n %p e %d\n",&teste[1],teste[1].x);
  free(teste);

}

Aula 19/05/15

Link aula

  • Execicio2.c
#include <stdio.h>

main()
{
   int x[10]= {0,1,2,3,4,5,6,7,8,9};
   int *p;
   int i;

  char w[10]="ifsc";
   char *u, y;

   u = w + 2;
   y= *u;
   p=x; //sem & pois eh um vetor se fosse pegar a possicao expecifica p=&x[3];
 printf("%c e %s\n",y,u);
   i=0;
   while (i<10) {
       printf(" endereco %p e conteudo %d\n", p, *p);
       p++;
       i++;
   // pula de 4 em 4 pq eh um veltor inteiro e reserva 8bits
    }
}
  • Execiciochar3.c
#include <stdio.h>

void str_cpy(char *pdest, char *pfonte)
{
   while (*pfonte!=0) {
        *pdest++ = *pfonte++; //primeiro iguala depois incremeta
   }
   *pdest = 0;
}


int str_len (char *p)
{
   int i=0;
   while (*p++!=0)
        i++;
   return i;
}

main()
{
   char fonte[100]="qwertyuiopçlkjhgfdsazxcvbnmifsc";
   char destino[100];

   str_cpy(destino, fonte);
   printf("string destino = %s\n", destino);

   printf("tamanho de dest = %d\n", str_len(destino));
}
  • exercicio
#include <stdio.h>
 
void main()
{
	float fpi=3.1415, *pf, **ppf;
	pf=&fpi;		// pf armazena o endereco de fpi
	ppf=&pf;		// ppf armazena o endereco de pf
	printf("\n%f", **ppf);	// imprime o valor de fpi por ppf
        printf("\n%f", *ppf);	// imprime o endereco pf
        printf("\n%f", pf);	// imprime o endereco pf
	printf("\n%f", *pf);	// imprime o valor de fpi por pf
}


  • exemplo
#include <stdio.h>

int main()
{
  int i;

  char *vp[4];
  char alfa[5]="IFSC";
  char beta[5]="TELE";
  char delta[5]="RAC";
  char gamma[5]="CGER";

  vp[0] = alfa;
  vp[1] = beta;
  vp[2] = delta;
  vp[3] = gamma;

  for(i=0;i<4;i++)
        printf("%s\t e o endereço %p\n", vp[i],vp[i]); // imprime o endereco %p
}
      • Mt bom
#include <stdio.h>
 
main(int argc, char *argv[])
{
  int i,soma=0;
 
  for (i=0;i<argc;i++) {
       printf("%s\n", argv[i]);
       soma=soma+atoi(argv[i]);
  }
  printf("Numero de parametros passados = %d\n", argc-1); /* o primeiro é o nome do arquivo executavél" */
printf("Soma =%d\n",soma);
}

Aula 12/05/15

Link Aula

Aula 30/04/15

#include <stdio.h>

struct Televador{
int andar,uso,load,estado;
char emergencia[5];

}elevador;

struct Tprevisaotempo{
char precipitacao[5],temporal[5],codigo_vermelho[10];
int temperatura;
struct Tdata data;
}previsao;

struct Tdata{
int hora;dia,semana,mes,ano;
}data;

struct Tautomovel{
int portas,load,peso,passageiros,eixos,tanque_l,potencia,cv,doc_veicular,ano;
char combustivel[20],proprietario[45];
}automovel;

Aula 28/04/15

  • Aula 28-04 link
  • Continuação de estruturas
    • Quando o "i" sai do "for" incrementa mais 01 antes de sai do for exemplo:
void tratar_usuario()
{
  char senha[10];
  int userEncontrado=1;
  int i;
 
 
 /* 
     Loop para encontrar o usuário na tabela. 
     Ao final do loop a variavel i conterá o índice do usuário (se ele estiver
     na tabela
  */
  for (i=0;i<4 && userEncontrado; i++) {
       if( strcmp(userID, TabelaUsuarios[i].UserId)==0)
             userEncontrado=0;
  }
 
  /* se usuário encontrado abre a porta */
  if (userEncontrado==0) {
	printf("Bom dia %s! Entre com a senha\n", userID);
  	scanf("%s",senha);
	i--; /* o indice do sujeito é i-1 */
	if(strcmp(senha,TabelaUsuarios[i].Senha)==0) 
	       printf("Abrir porta!!!\n");
	else
		printf("Senha Inválida\n");
  }
}
      • Se usar o break o indice sai com o valor certo. Exemplo:
  for (i=0;i<4 && userEncontrado; i++) {
       if( strcmp(userID, TabelaUsuarios[i].UserId)==0)
if (userEncontrado==0)
{
break;
}
}
  • meu codigo
#include <stdio.h>
#include <string.h>
 
/**********************************************/
/*** PROGRAMA DE CONTROLE DE ACESSO  **/
/** Autor: TurmaENG.TELECOM - 2012.2 */
/**********************************************/
 
/** VARIÁVEIS GLOBAIS DESTE MÓDULO ****/
 
struct TRegistroUsuario {
	char UserId[10];
	char Senha[10];
	int estado;
};
 
/* Tabela de Usuários */
struct TRegistroUsuario TabelaUsuarios[4] = {
         {"joao","abcd",1},
         {"maria","xxxx",1},
         {"jose","yyyy",1},
         {"lara","zzzz",1},
};
 
 
char userID[20];
int cont=0,conta=0; 
 
/** FUNÇÔES DESTE MÓDULO ****/
 
void mostrar_menu_entrada_usuario()
{
	system("clear");
  	printf("*******************************\n");
  	printf("Entre com o seu USERID para ter acesso\n"); 
  	printf("**************** # Maximo 10 tentetivas # ***************\n");
	printf("######## Sua tentativa é = %d ##############\n",cont);
}
 
/** Função que implementa as tarefas do administrador **/
 
void  administrar()
{
int i;
for(i=0;i<4;i++){
TabelaUsuarios[i].estado=1;
printf("Ok tudo liberado!!!!!\n");
system("sleep 01");
}
}
 
/** Função que valida um usuário e abre a porta **/
 
void tratar_usuario()
{
  char senha[10];
  int userEncontrado=1;
  int i;
//int conta=0;
 
 
 /* 
 *      Loop para encontrar o usuário na tabela. 
 *           Ao final do loop a variavel i conterá o índice do usuário (se ele estiver
 *                na tabela
 *                  */
//if(cont<=3){
  for (i=0;i<4 && userEncontrado; i++) {
       	if( strcmp(userID, TabelaUsuarios[i].UserId)==0)
             userEncontrado=0;
  }
  /* se usuário encontrado abre a porta */
	if(userEncontrado==1){printf("usuario não cadastrado\n");system("sleep 01");}
	if (userEncontrado==0 && TabelaUsuarios[i-1].estado==0) {printf("Usuario bloqueado\n"); system("sleep 01");}
  if (userEncontrado==0 && TabelaUsuarios[i-1].estado==1) {
	printf("Bom dia %s! Entre com a senha\n", userID);
  	scanf("%s",senha);
	cont=0; //acertou o usuario zera o contador
	i--; /* o indice do sujeito é i-1 */
	if(strcmp(senha,TabelaUsuarios[i].Senha)==0) 
	       {printf("Abrir porta!!!\n");
		system("sleep 01");
		cont=0;//acertou a senha 
		}
	else
		{printf("Senha Inválida\n");
		conta++;
		cont++;
		system("sleep 01");
		if (conta==3){
		TabelaUsuarios[i].estado=0;
		printf("Usuario %s esta bloqueado!!!\n",TabelaUsuarios[i].UserId);
		system("sleep 01");	
		}
		}
  }
cont++;
}
 
void main()
{
//int cont=0;
 for(;;) {
     mostrar_menu_entrada_usuario();
     scanf("%s",userID);
     if (strcmp(userID, "admin")==0) {
          administrar();
     } else {
	//if (cont<=3){
         tratar_usuario();//cont++;
	}
//	cont++;
	//printf("Contador %d",cont);
	if(cont>=10){
	printf("Usuario Invalido\n");
	system("sleep 02");
	break;
	}
     }
 }

Aula 16/04/15

Aula 14/04/15

  • Continuação Aula 16 link
  • Exercicio I
#include <stdio.h>

void main()
{
int a,b;
float media1,media2;
a=13;
b=a++;
media1=(a/b);
media2=(float)a/b;
printf("a= %d   e b= %d  media1= %.2f  media2=%.4f\n",a,b,media1,media2);
}
  • Exemplo II
#include <stdio.h>
#define PI 3.1415 
//#define valores fixo antes de começar

void main()
{
int a,b;
float media1,media2;
a=13;
b=a++;
media1=(a/b);
media2=(float)(a+b+PI)/3;
printf("a= %d   e b= %d  media1= %.2f  media2=%.4f\n",a,b,media1,media2);
}
  • Exemplo III
#include <stdio.h>

void main()
{
int num[3][2]={9,8,7,6,5,4,3};
printf("num[1][2]=%d e num[2][2]=%d\n",num[1][2],num[2][2]);
}
  • Exemplo IV

{9, 8, 7, 6, 5, 4, 3} 00,01,10,11,20,21,30 posição na matriz verificando a posição da matriz:

#include <stdio.h>
#define PI 3.1415 

void main()
{
int a,b=0;
int num[3][2]={9,8,7,6,5,4,3};
for (a=0;a<3;a++)
 {      
        for (b=0;b<2;b++)
        {
                printf("\n num[%d][%d]= %d\n",a,b,num[a][b]);

        }
 }
}
  • Exemplo de um erro muito louco
#include <stdio.h>

main()
{
  char TabelaUsuarios[4][10] = {
         "11111 111111",
         "22222 222222",
         "33333 333333",
         "44444 444444",
                                };
  int i;

  for (i=0;i<4;i++)
       printf("%s\n",&TabelaUsuarios[i][0]);
}
  • Desafio fazer parar qando nao haver mais trocas
#include <stdio.h>
 
void mostra_vet(int vet_aux[],int tam,int tipo) // tipo=0 vertical \n tipo=1 horizontal \t
{
  int i;
 
  if(tipo==0)
	printf("\n"); // vai deixar uma linha em branco só no tipo que quero.
  for(i=0;i<tam;i++)
    if(tipo==0)
      	printf("\n%d",vet_aux[i]);
    else
	printf("\t%d",vet_aux[i]);
  printf("\n");
}
 
 
void main()
{
  int i,j,num,vet_num[10];
  printf("\nDigite os números:\n");
  for(i=0;i<10;i++){
      scanf("%d",&num);
      vet_num[i]=num;
  }
  for(j=0;j<9;j++){		// varre os (10-1) vetores - o ultimo ele não tem que comparar
          for(i=0;i<(9-j);i++){ // depois da primeira passagem o ultimo elemento já é o maior...
              if(vet_num[i]>vet_num[i+1]){ 
                num=vet_num[i];
                vet_num[i]=vet_num[i+1];
                vet_num[i+1]=num;
              }
	      mostra_vet(vet_num,10,1); // mostra tipo=1 horizontal
          }
  }
  mostra_vet(vet_num,10,0); // mostrta tipo=0 verrtical
 
}

Aula 07/04/15 (Exercícios)

  • Exercício 1
Minha Solução Ex.1


  • Exercício 2
Minha Solução Ex.2


  • Exercício 3
Minha Solução Ex.3


  • Exercício 4
Minha Solução Ex.4

Aula 31/03/15

Char em C

Vetores 26/03/15

Pseudo Codigo

var vetor[10] media,soma,conta,num inicio conta=0 soma=0

 para variando de 0 ate 10
 faca
 ler vetor [conta]
 incrementa conta
 fim para

calcula media obtenha o num acima da media calcula media

 para conta 0 ate 10
 faca
 soma = soma + vetor[conta]
 fim para

media = soma / (conta + 1)

 para conta => 0 ate 9
 faca
  se o vetor[conta] > media
  incrementa numero
  fim se
 fim para

fim </syntaxhighlight>

Codigo Programaçao C

#include <stdio.h>

main()
{
	int i=0,am=0;
	int vet1[10];
	float media=0;
 
	for(i=0;i<10;i++) {
		printf("Entre com a nota %d => ",i+1);
		scanf("%d",&vet1[i]);
		media = media+vet1[i];
	}
	media = media/i;
	for( i=0;i<10;i++) {
		if (vet1[i]>media)
		am++;
	}
	printf("Media=%0.1f. O número de notas acima da média é %d.\n",media,am);
}

Modificar Para achar menor e menor nos numeros digitados

  • Coloquei o valor em uma variavel
//Codigo Jeferson
#include <stdio.h>

main()
{
        int i=0,am=1500,maior,menor;
        int vet1[10];


        for(i=0;i<10;i++) {
                printf("Entre com a nota %d => ",i+1);
                scanf("%d",&vet1[i]);
                //media = media+vet1[i];
                }
        maior=menor=vet1[0];
        for( i=0;i<10;i++) {
                if (vet1[i]>maior)
                maior = vet1[i];
                if (vet1[i]<menor)
                menor = vet1[i];
        }
        printf("Menor=%d. O Maior=%d\n",menor,maior);
}
  • Foi mostrado o a posição do maior através do vet1[maior] *Professor*
#include <stdio.h>

main()
{
        int i=0,am=1500,maior=0,menor=0;
        int vet1[10];


        for(i=0;i<10;i++) {
                printf("Entre com a nota %d => ",i+1);
                scanf("%d",&vet1[i]);
                //media = media+vet1[i];
                }

        for( i=0;i<10;i++) {
                if (vet1[i]>vet1[maior])
                maior = i;
                if (vet1[i]<vet1[menor])
                menor = i;
        }
        printf("Menor=%d. O Maior=%d\n",vet1[menor],vet1[maior]);
}

Declarações do Vetor

  • Definindo e usando vetores no C

Colocando em posições ex: int x[10] = {2,4,7,-5,3,2,3,4,9,10};

  • Passando vetores em parametro.
int soma (int a, int b)
{
int aux;
aux = a + b; 
return aux;
}
void main()
{
soma (1,2);
}
// passando um valor como parametro. EX:
aux[0]=2;
aux[1]=4;
aux[5]=3;
  • Passando vetores como parâmetros

Vetores não são copiados na passagem por parâmetro. Eles são passados sempre como referência. Veja o exemplo a seguir:

#include <stdio.h>
 
void ler_vet(int aux[5])
{
  int i;
 
  for (i=0;i<5;i++) {
     printf("aux[%d] <== ",i);
     scanf("%d",&aux[i]);
  } 
}
 
main()
{
   int vet[5], i;
 
   ler_vet(vet);
   for (i=0;i<5;i++)
      printf("vet[%d]=%d\n",i,vet[i]);
}

Exercícios de Análise Aula 12/03/15

Analisar e inferir a saída dos programas abaixo.

(a) Valor de i ao final do programa ____

#include <stdio.h>

main()
{
  int i;

  for (i=0;i<10;i++) {
     if (i==8)
        break;
  }
  printf("Valor de i = %d\n",i);
}

(b) Valor de i e j ao final do programa ____

#include <stdio.h>

main()
{
  int i,j;

  for (i=0;i<10;i++) {
     j=i;
     if (j=5)
        break;
  }
  printf("Valor de i = %d j = %d\n",i,j);
}

(c) Valor de i ao final do programa ____

#include <stdio.h>

main()
{
  int i;

  for (i=0;i<10;i++) {
     if (i==5) {
        i=11;
        continue;
     }
  }
  printf("Valor de i = %d\n", i);
}

(d) Valor de i e j ao final do programa ____

#include <stdio.h>

main()
{
  int i,j=2;

  for (i=0;i<10 && j==5;i++) {
     j++;
  }
  printf("Valor de i = %d e j %d\n",i,j);
}


(e) Valor de i e j ao final do programa ____

#include <stdio.h>

main()
{
  int i,j=2;

  for (i=0;i<2;i++) {
     j=i;
     do {
       j++; 
     } while(j<3);
  }
  printf("Valor de i = %d e j %d\n",i,j);
}

(f) Valor de k ao final do programa ____

#include <stdio.h>

main()
{
  int i,j=2,k=1;

  for (i=0;i<2;i++) {
     j=j+2;
     if (j==4) {
        k++;
     } else {
        if (j==5) 
           k=k+100;
     }
  }
  printf("Valor de k é %d\n",k);
}

(g) Valor de k ao final do programa ____

#include <stdio.h>

main()
{
  int i,j=2,k=10;

  for (i=0;i>2;i++) {
     j=j+2;
     if (j==4 && j<=5) {
        k++;
     } else {
        if (j==5) 
           k=k+100;
     }
  }
  printf("Valor de k é %d\n",k);
}

(h) Valor de k ao final do programa ____

#include <stdio.h>

main()
{
  int i=5,j=2,k=10;

  for (i=0;i<3;i++) {
     j=0;
     while(j<2) {
         j++;
         if (j==1);
            k++;
     }
  }
  printf("Valor de k é %d\n",k);
}

(i) Valor de k ao final do programa ____

#include <stdio.h>

int alfa (int x)
{
  if (x<=3)
     return -1;
  else
     return 0;
}

main()
{
  int i,k=1;
 
  for (i=0;i<3;i++) {
      if (alfa(i)==-1)
          k++;
  }
  printf("Valor de k é %d\n",k);
}

(j) Valor de k ao final do programa ____

#include <stdio.h>
 
int alfa (int x)
{
  if (x==0 || x==2)
     return -1;
  else
     return 0;
}
 
main()
{
  int i,k=1;
 
  for (i=0;i<3;i++) {
      if (alfa(i)==-1)
          k++;
  }
  printf("Valor de k é %d\n",k);
}

(k) Valor de k ao final do programa ____

#include <stdio.h>


int beta (int x)
{
  if (x==1)
     return 1;
  else
     return 0;
}

int alfa (int x)
{
  if (x==0 || x==2)
     return -1;
  else
     return 0;
}
 
main()
{
  int i,k=1;
 
  for (i=0;i<3;i++) {
      if (alfa(i)==-1 && beta(i))
          k++;
  }
  printf("Valor de k é %d\n",k);
}


(l) Valor de delta ao final do programa ____

#include <stdio.h>

int delta=10;

int beta (int x)
{
  delta++;
  if (x==1)
     return 1;
  else
     return 0;
}

int alfa (int x)
{
  if (x==0 || x==2)
     return -1;
  else
     return 0;
}
 
main()
{
  int i,k=1;
 
  for (i=0;i<3;i++) {
      if (alfa(i)==-1 && beta(i))
          k++;
  }
  printf("Valor de delta é %d\n",delta);
}

(m) Valor de soma ao final do programa ____

#include <stdio.h>

int alfa (int x, int y, int w)
{
 if (x==(y+1)) {
     w--;
     return x*w; 
 } else {
     x++;
     return x*y;
 }
}
 
main()
{
  int i,soma=0;
 
  for (i=0;i<2;i++) {
      soma = soma + alfa(i,i+1,i+2);
  }
  printf("Valor de soma é %d\n",soma);
}

(n) Valor de delta ao final do programa ____

#include <stdio.h>

main()
{
  int i,j,k,soma=0, delta=0;
 
  j=0;
  for (i=0;i<2;i++) {
     for (;j<2;j++) {
        soma = soma + 1;
        delta = delta + soma * 2;
     }
  }
  printf("Valor de delta é %d\n",delta);
}

(o) Valor de delta ao final do programa ____

#include <stdio.h>

main()
{
  int alfa,beta,gama,delta=0;
 
  alfa = 11;
  beta = 5;
  gama = 1;
  delta = (alfa%2) + (gama>beta) + (beta==5);
  printf("Valor de delta é %d\n",delta);
}

(p) Valor de delta ao final do programa ____

#include <stdio.h>

main()
{
  int alfa,beta,gama,delta=0;
 
  alfa = 11;
  beta = 5;
  gama = 1;
  delta = (alfa%2) + (beta=5) + (gama>beta);
  printf("Valor de delta é %d\n",delta);
}

(q) O valor de delta no programa abaixo é: _______

#include <stdio.h>

int delta=1;
 
int alfa (int x)
{
  delta=5;
  return delta
}
 

main()
{
  int i=1;
 
  if (i==1 || alfa()==5)
       delta++;
  printf("Valor de delta é %d\n",delta);
}



<< Lista Ex1 >>

Outros