Notas de Aula Exemplos em C (2)

Documentos relacionados
Entrada: M ind

GABARITO EXERCÍCIOS ÁRVORES arv.h struct noarv { int info; struct noarv * esq; struct noarv * dir; }; typedef struct noarv NoArv;

Carlos Eduardo Batista. Centro de Informática - UFPB

double pcompra[1000], pvenda[1000], codclient[1000]; //sempre que o usuário voltar ao menu principal ele poderá

Linguagem C ponteiros

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Módulo 16 - Ordenação

Laboratório de 13 de maio de 2019

Aula 18 Algoritmos básicos de busca e classificação

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

48 { printf("ocorreu um erro o arquivo nao pode ser aberto\n");

MAC-115 Introdução à Computação para Ciências Exatas e Tecnologia IO Terceiro Exercício-Programa Entregar até 09/11/2007

Prova de Programação (21090) Data: 31 de Janeiro de 2008

O comando for permite que um certo trecho de programa seja executado um determinado número de vezes. A forma do comando for é a seguinte:

Linguagem C. Ponteiros. Alex Vidigal Bastos.

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Programação de Computadores I Registros na Linguagem C PROFESSORA CINTIA CAETANO

3. Linguagem de Programação C

Algoritmos e Estruturas de dados

1ª versão. #include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000

Aluno: Valor Nota Q1 3.0 Q2 2.5 Q3 2.5 Q4 2.0 Total 10.0

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

INF1007: Programação 2. 4 Tipos Estruturados. 10/23/09 (c) Dept. Informática - PUC-Rio 1

Linguagem C: Ordenação

ARQUIVOS DE DADOS EM C: UMA INTRODUÇÃO

Computação I (MAB120) DCC/UFRJ

Módulo 8 Tipos Estruturados

Capacitação em Linguagem C Parte 2

Prova de Recuperação

Programação de Computadores II. Cap. 5 Vetores

Computação 2. Aula 7. Profª. Fabiany Ponteiros

Computação Eletrônica. Struct (Estruturas)

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick

Programação de Computadores II. Cap. 16 Ordenação

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

ponteiros INF Programação I Prof. Roberto Azevedo

MC-102 Aula 19 Registros

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Pesquisa e Ordenação. SCE121- Introdução a Programação. ICMC - USP - São Carlos 2009

Exercícios em C 1 Saulo O. D. Luiz

INF 1620 P1-10/04/02 Questão 1 Nome:

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

INF 1620 P3-25/11/05 Questão 1 Nome:

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Programação Estruturada

UNIVERSIDADE DA BEIRA INTERIOR

Módulo 9. Pesquisa em Memória Primária. Algoritmos e Estruturas de Dados II C++ (Rone Ilídio)

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Computação 2. Diego Addan Aula 3. Funções

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

INF1005 Programação I. Pontifícia Universidade Católica Departamento de Informática

Aula 06 Definição de Novos Tipos (structs, typedefs, e enumerações) Prof. Filipe Mutz

MC-102 Aula 06 Comandos Repetitivos

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ESTRUTURA DE DADOS (TCC )

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Linguagens de Programação I

INF 1620 P2-01/11/03 Questão 1 Nome:

15/03/2018. Professor Ariel da Silva Dias Paradigma Imperativo

AED2 - Aula 04 Vetores ordenados e árvores de busca

Aula 26: Arquivos de texto

Introdução à Ciência da Computação

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Linguagem de Programação I. Aula 08 Linguagem C: Arrays

10. - ESTRUTURAS Características Básicas

1 /* 2 * Programa Simplex.c 3 * Resolve o problema de otimização linear 4 * 5 min Cx 6 Ax = b 7 x >= * utilizando o método simplex revisado 10

Módulo 16 - Ordenação. Referências

INF 1620 P4-01/07/08 Questão 1 Nome:

Básico: estrutura de programa, sintaxe Interface com linha de comando

MC-102 Aula 10 Vetores

Cap. 3 Entrada e Saída e Controle de Fluxo

Aula 15 Variáveis Indexadas (vetores)

DAINF - Departamento de Informática

Linguagens de Programação I

Aula 08. Estruturas de dados Árvore e Grafo

MAC 2166 Introdução à Computação para Engenharia

MAC2166 Introdução à Computação para Engenharia Escola Politécnica Terceira Prova 20 de junho de 2011

Terminal. Entrada de dados via teclado. Processamento de dados (cálculos) Tomada de decisão (condição) Saída de dados (via vídeo) Ponto de conexão

Módulo 3 Controle de Fluxo

MAC 2166 Introdução à Computação para Engenharia Escola Politécnica Primeiro Semestre de 2003 Primeira Prova 2 de abril de 2003

Primeira questão: #include <stdio.h> #include <stdlib.h> int main( ) { char nome[50]; int i; printf("digite o seu nome: \n"); scanf(" %[^\n]", nome);

Aula teórica: /6. Enunciado

File: /media/data/ufam/undergrad/200902/aedi/coding/calculaarea.c Page 1 of 1

Computação 2. Aula 2. Profª. Fabiany Vetores e Matrizes

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estruturas. K&R: Capitulo 6. Estruturas IAED, 2014/2015. Introdução às Estruturas Estruturas e Funções Vectores de Estruturas Typedef Exemplo

Campus de Sorocaba. Lista de Exercícios Recuperação Introdução à Ciência da Computação 1º Semestre de 2016

Programação de Computadores II Lista de Exercícios 01

1/22 FICHEIROS BINÁRIOS

Instituto Superior Técnico Introdução aos Algoritmos e Estruturas de Dados

Conceitos básicos. Computação eletrônica: Gurvan Huiban

UNIVERSIDADE DA BEIRA INTERIOR

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68

Transcrição:

Notas de Aula (2) Routo Terada www.ime.usp.br/~rt Depto. C. da Computação - USP

N=8, X= 55 2 3 4 5 6 7 BUSCASEQ.C /* BUSCASEQ.C--Exemplo de Busca Sequencial * Problema: dada uma sequencia de N numeros reais (do tipo float) * e um numero real X, verificar se X ocorre na sequencia */ #include <stdio.h> #define Nmax /* Numero maximo de elementos em R[] */ void main(){ int N, /* numero de elementos em R[] */ i; float R[Nmax], /* vetor de N elementos */ X; /* elemento a ser procurado em R[] */ /* * Leitura dos parametros */ 2

printf("\ndigitar o numero de elementos de R[] -> "); BUSCASEQ.C scanf("%d", &N); printf("\nn = %d\n", N); if(n>nmax-){ printf("\nnumero maximo de elementos foi excedido\n"); exit(); } /*end if */ printf("digitar os elementos de R[] -> "); for(i=; i<n; i=i+) scanf("%f", &R[i]); printf("\n"); for(i=; i<n; i=i+) printf("r[%d] = %f", i, R[i]); printf("\ndigitar o elemento X a ser procurado em R[] -> "); scanf("%f", &X); printf("\nx = %f", X); 3

N=8, X= 55 2 3 4 5 6 7 8 BUSCASEQ.C /* Busca Sequencial de X em R[], em tempo proporcional a N */ R[N] = X; /* valor X como ``sentinela'' apos ultimo elemento valido de R[] */ i=; while(r[i]!= X) i= i+; /* * Dar resposta final */ if( i!= N ) printf("\n--- X = %f ocorre em R[]\n", X); else printf("\n --- X = %f nao ocorre em R[]\n", X); } /* end main */ 4

N=8 55 2 3 4 9.9 5 6 7 ORDEDIR.C /* ORDEDIR.C--Exemplo de Ordenacao por Selecao Direta * Problema: dada uma sequencia de N numeros reais (tipo float) * ordena'-la em ordem crescente. */ #include <stdio.h> #define Nmax /* Numero maximo de elementos em R[] */ void main(){ int N, /* numero de elementos em R[] */ i, j, IndMin; /* indice do minimo temporario */ float R[Nmax], /* vetor de N elementos */ temp; /* variavel temporaria */ 5

/* ORDEDIR.C * Leitura dos parametros */ printf("\ndigitar o numero de elementos de R[] -> "); scanf("%d", &N); printf("\nn = %d\n", N); if(n>nmax){ printf("\nnumero maximo de elementos foi excedido\n"); exit(); } /*end if */ printf("digitar os elementos de R[] a serem ordenados -> "); for(i=; i<n; i=i+) scanf("%f", &R[i]); printf("\n"); for(i=; i<n; i=i+){ printf("r[%d] = %f", i, R[i]); } /* end for i */ 6

N=8 55 9.9 i= IndMin= j= j=2 j=3 j=4 j=5 j=6 j=7 IndMin=7 9.9 i= IndMin= j=2 j=3 j=4 IndMin=4 j=5 j=6 j=7 /* Ordenacao dos elementos em R[], em tempo proporcional a N*N */ for(i=; i<n; i=i+){ IndMin = i; /* indice do Minimo temporario */ for(j=i+; j<n; j=j+){ if(r[indmin] > R[j]) IndMin = j; } /* end for j */ temp = R[IndMin]; R[IndMin] = R[i]; R[i] = temp; } /* end for i */ ORDEDIR.C 7

8 j=7 j=6 IndMin=6 j=5 j=4 3 2 i=3 IndMin=3 j=7 j=6 j=5 j=4 j=3 2 i=2 IndMin=2 9.9 9.9 j=7 j=6 j=5 j=4 IndMin=4 j=3 j=2 i= IndMin= 9.9 j=7 IndMin=7 j=6 j=5 j=4 j=3 j=2 j= IndMin= i= IndMin= 9.9 i=4 IndMin=4 j=7 IndMin=7 j=6 j=5 4 3 2 9.9 55 ORDEDIR.C

ORDEDIR.C /* * Dar resposta final */ printf("\n Elementos de R[], em ordem crescente:\n"); for(i=; i<n; i=i+){ printf(" R[%d]=%f ", i, R[i]); } /* end for i */ } /* end main */ 9

BUSCABIN.C /* * BUSCABIN.C--Exemplo de Busca Binaria * Problema: dada uma sequencia ordenada de N numeros reais * (tipo float) * em ordem crescente, e um numero real X, verificar se X ocorre na * sequencia. */ #include <stdio.h> #define Nmax /* Numero maximo de elementos em R[] */ void main(){ int N, /* numero de elementos em R[] */ i, Esq, /* indice do elemento mais aa esquerda no intervalo de busca em R[] */ Dir; /* idem aa direita */ float R[Nmax], /* vetor de N elementos ja ordenados */ X; /* elemento a ser procurado em R[] */

BUSCABIN.C 6.6 2 3 4 5 6 7 /* * Leitura dos parametros */ printf("\ndigitar o numero de elementos de R[] -> "); scanf("%d", &N); printf("\nn = %d\n", N); if(n>nmax){ printf("\nnumero maximo de elementos foi excedido\n"); exit(); } /*end if */ printf("digitar os elementos de R[] em ORDEM CRESCENTE -> "); for(i=; i<n; i=i+) scanf("%f", &R[i]); printf("\n");

BUSCABIN.C 6.6 2 3 4 5 6 7 X= for(i=; i<n; i=i+){ if(i!= && R[i-] > R[i]) printf("\nos elementos de R[] nao estao em ordem crescente\n"); printf("r[%d] = %f", i, R[i]); } /* end for i */ printf("\ndigitar o elemento X a ser procurado em R[] -> "); scanf("%f", &X); printf("\nx = %f", X); 2

X= 6.6 Esq= 2 i=3 4 5 6 Dir=7 6.6 Esq=4 i=5 Dir=7 6.6 Esq=6=i Dir=7 BUSCABIN.C /* Busca Binaria de X em R[], em tempo proporcional * a log N na base 2 */ Esq= ; Dir= N-; i=(esq+dir)/2; /* indice do elem. do "meio"de R[] */ while(esq <= Dir && R[i]!= X){ if(r[i]<x) Esq = i+; else Dir = i-; i=(esq+dir)/2; /* novo indice do elem. do "meio"de R[] */ } /* end while */ 3

X= 6.6 Esq= 2 i=3 4 5 6 Dir=7 6.6 Esq= i= Dir=2 6.6 BUSCABIN.C /* Busca Binaria de X em R[], em tempo proporcional * a log N na base 2 */ Esq= ; Dir= N-; i=(esq+dir)/2; /* indice do elem. do "meio"de R[] */ while(esq <= Dir && R[i]!= X){ if(r[i]<x) Esq = i+; else Dir = i-; i=(esq+dir)/2; /* novo indice do elem. do "meio"de R[] */ } /* end while */ 4

BUSCABIN.C /* * Dar resposta final */ if(r[i] == X) printf("\n--- X = %f ocorre em R[]\n", X); else printf("\n --- X = %f nao ocorre em R[]\n", X); } /* end main */ 5

Grupo de variáveis de tipos distintos CARRO struct CARRO Modelo Ano NumPortas Preço 6

CARRO // programa de carros em struct // #include <stdio.h> void main(){ int j; struct CARRO { // CARRO e' o nome do tipo de estrutura char *Modelo; int Ano; int Km; // quilometragem atual char *Fabricante; // nome do fabricante char *Cor; int NumPortas; // numero de portas int GasOuAlc; // ==gasolina, 2==alcool int Preco; // preco atual de mercado, em reais }; // note o ; aqui 7

struct CARRO meucarro, carronovo, carrodopai; // 3 vars do tipo CARRO meucarro.modelo= "Astra"; meucarro.ano= 2; meucarro.km= 3; meucarro.fabricante= "GM"; meucarro.cor= "verde"; meucarro.numportas= 2; meucarro.gasoualc= ; meucarro.preco= 32; printf("modelo %s\n", meucarro.modelo); // sa'ida e' modelo Astra } // fim main CARRO 8

// programa de carros em struct #include <stdio.h> void main(){ struct CARRO { // CARRO e' o nome do tipo de estrutura char *NomeDono; struct { char *RuaeNum; // Nome da rua e numero char *Bairro; char *CEP; char *Cidade; char *Telefone; } Endereco; // nome de um componente da estrutura char *Modelo; int Ano; int Km; // quilometragem atual char *Fabricante; // nome do fabricante char *Cor; int NumPortas; // numero de portas int GasOuAlc; // ==gasolina, 2==alcool int Preco; // preco atual de mercado, em reais char *Chapa; }; // note o ; aqui CARRO e Endereço 9

struct CARRO meucarro, carronovo, carrodopai; // 3 vars do tipo CARRO meucarro.endereco.ruaenum= "Rua Padre Anchieta, "; meucarro.modelo= "Astra"; meucarro.ano= 2; meucarro.km= 3; CARRO e Endereço meucarro.fabricante= "GM"; meucarro.cor= "verde"; meucarro.numportas= 2; meucarro.gasoualc= ; meucarro.preco= 32; printf("nome do meu modelo: %s\n", meucarro.modelo); // mostra Astra printf("nome da minha rua e numero: %s \n", meucarro.endereco.ruaenum); // sa'ida e': // Nome do meu modelo: Astra // Nome da minha rua e numero: Rua Padre Anchieta, } 2

struct PESSOA Nome Altura Peso PESSOA // programa de estrutura simples // #include <stdio.h> void main(){ typedef struct{ // definindo tipo com typedef char *Nome; int Altura; // em centimetros int Peso; // em quilos } PESSOA; // nome do tipo aqui 2

// note a ausencia da palavra struct nas linhas abaixo PESSOA marcio, alcides, maria; // 3 vars do tipo PESSOA PESSOA amigos[2]; // grupo (vetor) de 2 pessoas marcio.altura=7; printf("altura: %d\n", marcio.altura); amigos[2].peso= 72; printf("peso de um amigo: %d\n", amigos[2].peso); // sa'ida e': // Altura: 7 // Peso de um amigo: 72 } // fim main PESSOA 22