Você está na página 1de 91

Linguagem C

783 - Programao em C/C++ C/C ciclos e decises

Valores Lgicos Verdadeiro e F l Falso


Como vimos anteriormente o C possui 4 tipos de dados (int (int, float, char, double), no existe assim nenhum tipo que guarde um valor lgico: Verdadeiro Falso

Em C o valor falso representado por 0 (Zero) Todos os outros valores representam o verdadeiro. verdadeiro

Operadores Ope ado es Relacionais e ac o a s


Operador == > >= < <= != Nome Igualdade Maior que Maior ou igual que Menor que Menor ou igual que Diferente de Exemplo a == b a>b a >= b a<b a <= b a != b significado a igual b ? a maior que b? a maior ou igual que b? a menor que b? a menor ou igual que b ? a diferente de b?

Nota importante a = b diferente de a == b O operador == verifica se duas expresses so iguais, enquanto que o operador = utilizado tili ado para a atribuio atrib io de valores alores a variveis.
4

A instruo if - else
A instruo if-else, uma das instrues de controlo de fluxo da linguagem C. Permite indicar quais as circunstncias em que determinada instruo ou conjunto de instrues deve ser executada. executada A sua sintaxe :

if (condio) ( di )
Instruo1; else instruo2;
5

A instruo if - else
if (condio)
Instruo1; else instruo2;

A componente else do if facultativa

Exemplo:
# include <stdio.h> main() { int x; printf i tf (Introduza (I t d um nmero); ) scanf (%d, & x); if (x>=0) printf (Nmero positivo\n); else printf (Nmero negativo\n); } O programa permite aps a introduo de um nmero dizer se este positivo, caso seja igual ou maior que zero ou negativo, negativo caso este seja menor que zero.

Exerccio 11-C:
Desenvolva um programa que controle a temperatura de um frigorifico atravs da introduo da temperatura:

Caso a temperatura seja maior ou igual a zero este dever devolver a mensagem LIGAR Caso contrrio dever devolver a mensagem PARAR

Exerccio 12-C:
1. Elabore um software que permita ao introduzir a nota de uma disciplina informar se o aluno est aprovado ou reprovado d na di disciplina. i li 2 C 2. Considere id uma escala l d de 0 a 20 em que d de 9 9,5 5 a 20 o aluno dever transitar.

Exerccio 13-C:
1. Elabore um software que ao introduzir as notas das disciplinas de Matemtica, de Portugus e de Ingls de d t determinado i d aluno l i informe f qual l a sua mdia di e se a sua mdia positiva ou negativa. 2. Considere uma escala de 0 a 20 em que de 9,5 a 20 a mdia positiva. positiva

10

Exerccio 14-C:

1. Elabore um software que adicione 50 ao salrio de um funcionrio, caso este seja igual ou inferior a 500.

11

Correco - Exerccio 14-C:


#include <stdio.h> main() { float salario; ; printf("Introduza o salario\n"); scanf("%f", & salario); if(salario 500) if(salario<=500) { salario=salario+50; printf("O printf( O salario e: %.2f % 2f ", salario); } else { printf("Nao tem direito a subsidio por ultrapassar os 500 euros de ordenado\n"); } system( PAUSE ); system("PAUSE"); }

12

Correco(outra verso) - Exerccio 14-C:


#include <stdio.h> <stdio h> main() { float salario; printf("Introduza o salario\n"); scanf("%f", & salario); if(salario<=500) printf("O salario e: %.2f ", salario+50);
//a instruo %.2f permite limitar o nmero de casas decimais a duas neste caso

else printf("Nao tem direito a subsidio por ultrapassar os 500 euros de ordenado\n"); system("PAUSE"); }

13

Instrues if-else encadeadas


Existem E i t situaes it em que o teste t t de d uma condio di no suficiente para tomar uma deciso. Pode ser necessrio testar mais do que uma condio. Exemplo: p Escreva um p programa g q que solicite um salrio ao utilizador e mostre o imposto a pagar
Se o salrio for negativo ou zero mostre que o utilizador errou ao introduzir os dados Se o salrio for maior que 1000 para 10% de imposto, seno paga apenas 5%.

14

Instrues if-else encadeadas


#include <stdio.h> #include <stdlib.h> main() { float salario; printf("Qual o salario? \n"); scanf("%f", & salario); if (salario<=0) printf("Salario: Valor invlido\n"); else if (salario>1000) printf("Imposto p ( p = %.2f\n", salario*0.10); ) else printf("Imposto = %.2f \n", salario*0.05); system("PAUSE"); y ( ); }
15

Exerccio 15-C:

1. Elabore um software que atravs da introduo de um salrio calcule quanto o funcionrio ter de pagar de i imposto t t tendo d em ateno t a seguinte i t t tabela: b l
Salrio <1000 >=1000 e < 5000 >= 5000 Taxa 5% 11% 35% %

16

Exerccio 16-C:

1. Elabore um software que permita informar qual o escalo a que pertence um jogador de futebol atravs d i da introduo t d d da sua id idade: d
Infantis <=10 anos Iniciados <=12 anos Juvenis <= 16 anos Juniores <= 18 anos Sniores > 21 anos

17

Exerccio 17-C:

1. Elabore um software que permita informar pela introduo da idade de um individuo se este criana ( (menor que 13 anos), ) adolescente d l t ( (menor que 18 anos), adulto (maior que 18).

18

Exerccio 18-C:

Escreva um programa capaz de identificar se uma pessoa an, gigante ou de estatura normal. As condies di so as seguintes: i t Altura<1.40m (An) 1.40m=<Altura<=2.00m 1 40 Alt 2 00 (Estatura (E t t normal) l) Altura>2.00m (Gigante)

19

Exerccio 19-C:
Implemente um programa que receba o peso de uma pessoa e o seu sexo, e indique o seu estado actual:
Masculino P Peso ..50 51 60 51..60 61..80 81 90 81..90 91.. E d actual Estado l MuitoMagro M Magro Equilibrado Gordo MuitoGordo P Peso ..40 41 50 41..50 51..65 66 80 66..80 81.. Feminino E d actual Estado l MuitoMagra M Magra Equilibrada Gorda MuitoGorda
20

A instruo switch
A instruo switch adapta-se tomada de que q o nmero de decises em possibilidades elevada (em geral maior do que 2, 2 seno usa usa-se se o if if-else) else), de forma a reduzir a complexidade de if-else consecutivos. consecutivos

Formador: Henrique Fidalgo

21

Sintaxe - switch
switch (expresso) { case item_1: instruo_1; break; case item_2: instruo_2; break; }

Formador: Henrique Fidalgo

22

Sintaxe - switch
#include <stdio.h> #include <stdlib.h> main() { char est_civil; printf("C i tf("C - Casado C d \n"); \ ") printf("S - Solteiro \n"); printf("V - Viuvo \n"); printf("D printf( D - Divorciado \n \n"); ); printf("Introduza a letra correspondente ao seu estado Civil\n"); scanf("%c", & est_civil); switch(est_civil) { case 'c':printf(" CASADO\n");break; case 's':printf(" SOLTEIRO\n");break; case 'v':printf(" ' ' i tf(" VIUVO\n");break; VIUVO\ ") b k case 'd':printf(" DIVORCIADO\n");break; default:printf(" Estado civil incorrecto\n"); } system("PAUSE"); Formador: Henrique Fidalgo }

23

Exerccio 20-C:
Elabore um programa que permita ler o seu peso na terra, terra escolher um planeta, e calcular o seu peso nesse planeta. A relao de p planetas :

A frmula f l d de clculo l l d da gravidade id d :


PesoNoPlaneta = PesoNaTerra / 10 * GravidadeRelativa
24

Exerccio 21-C:
Elabore um programa que calcule atravs da introduo do salrio, , o imposto p pago p g p por mulheres e p por homens, , sabendo que as mulheres pagam 10% de imposto e que os homens pagam 15%.

25

Exerccio 22-C:
Escreva um programa que indique o nmero de dias de determinado ms, , atravs da introduo do ms.

26

Exerccio 23-C:
Elabore um programa que calcule atravs da introduo do nmero do menu o montante a p pagar g p pelo cliente:
N. 1 2 3 4 5 6 Menu Mini Hamburger Mega Hamburger Giga Hamburger Tera Hamburger Mega g Salada Giga Salada Preo 5,35 6,15 7 50 7,50 8,00 4,50 , 5,00

27

Exerccio 24-C:
Elabore um programa que calcule atravs da introduo da da marca de um automvel e da distncia de determinada viagem, qual o consumo esperado.
N. 1 2 3 4 5 6 Carro Opel Corsa CDTI Peugeot g 207 HDI Skoda Fabia TD Mercedes C220 D Renault Mgane CDI Seat Ibiza TDI Consumo (L/100) 4,5 5,5 , 5,6 7 5 5,5
28

Exerccio 25-C (calculadora):


Construa um programa que l do teclado dois nmeros e uma opo carcter que representa uma opo aritmtica (+ - * /), e faa a operao aritmtica pretendida e escreva o resultado no monitor. A Soma S Subtraco M Multiplicao D Diviso Tenha T h em ateno t que no pode d f fazer di diviso i por zero, pelo l que o deve imprimir uma mensagem de erro.
29

Exerccio 26-C :
Construa um programa que permite calcular a rea de determinada figura geomtrica escolhida pelo utilizador:

N. 1 2 3

Figura Quadrado - Rectngulo Tringulo Circunferncia

Frmula de clculo area = lado*lado2 Area = base*altura/2 Area = 3,14 3 14*raio*raio raio raio

30

Exerccio 27-C :
Construa um programa que permite calcular o cmbio entre a moeda euro e as unidades monetrias do quadro abaixo:

N. A B C D

Moeda Franco Suio Dlar Pesos Reais

Cmbio 1,465 1,367 18 013 18,013 2,568

31

Exerccio 28-C :
Construa um programa que permita converter uma temperatura introduzida em Celsius para outra escala, conforme a tabela abaixo:
N. A B C D Unidade Fahrenheit Kelvin Rankine Raumur Frmula graus 1,8 + 32 graus + 273,15 graus 1,8 1 8 + 32 + 459 459,67 67 graus 0,8

32

Exerccio 29-C :
A empresa XPTO necessita de um programa que calcule qual o desconto a aplicar a determinado cliente conforme a tabela abaixo e o montante final a pagar pelo cliente: (Nota: Utilize o switch e if-else.)
N. A Unidade ptimo Cliente Bom Cliente Compra >250 >100 outras >250 >100 outras >250 >100 outras >250 >100 outras t Desconto 40% 25% 15% 30% 15% 10% 20% 10% 5% 10% 5% 33

Cliente Razovel Cliente Normal

Ciclos - while
A instruo while (tambm chamada ciclo), executa uma instruo ou bloco de instrues enquanto determinada condio for verdadeira. A sua sintaxe :

while (condio) instruo;

Formador: Henrique Fidalgo

34

Ciclos - while
Exemplo:

Escreva um programa que coloque no ecr os primeiros 10 nmeros inteiros. (1, 2, 3, ,10)

Formador: Henrique Fidalgo

35

Ciclos - while
Resoluo: #include <stdio.h> main() { int i=1; while (i<=10) { printf(%d\n, i); i i 1 i=i+1; } }

Formador: Henrique Fidalgo

36

Exerccio 30-C:
Implemente um programa que permita ler 10 nmeros inteiros e que no final da leitura apresente a soma de todos eles e a sua mdia. Utilize para isso uma estrutura de repetio while.

37

Exerccio 30-C:(resoluo)
#include <stdio.h> #include <stdlib.h> main() { int n=1; float num num=0,soma=0; 0,soma 0; while(n<=10) { printf("Introduza p ( um inteiro:"); ); scanf("%f",&num); soma=soma+num; n=n+1; } printf ("A soma e %f e a sua media e %f", soma, soma/10); system("PAUSE"); }
38

Exerccio 31-C:
Construa um conversor electrnico que permita ler um valor em euros e o converta para dlares. Este programa deve permitir fazer quantas converses o utilizador quiser, devendo apenas terminar quando for inserido o valor l zero no campo das d moedas. d 1 = 1,428 1 428 dlar

39

Exerccio 31-C: (Resoluo)


#include <stdio.h> #include <stdlib.h> main() { int valor,cambio; while(valor! 0) while(valor!=0) { printf("Introduza o valor a calcular:"); scanf("%d",&valor); ( , ); cambio=valor*1.428; printf ("o valor em dolares e %d\n", cambio); } system("PAUSE"); }
40

Exerccio 32-C
Elabore a mdia de nmeros introduzidos

41

Exerccio 33-C:
Faa um programa que escreve no monitor a mesma frase 10 vezes. E depois faa com que o programa g mostre o nmero de cada linha no incio e no final da linha, conforme ex: 1S Sou um programa C! 1 2 Sou um programa C! 2 3 Sou um programa C! 3

42

Exerccio 34-C:
Faa um programa que mostra no monitor os nmeros de 1 ate 1000.

43

Exerccio 35-C:
Faa um programa que calcula a tabuada de um nmero introduzido pelo utilizador.

44

Exerccio 36-C:
Elabore um programa que calcule o total a pagar por determinado cliente atravs da introduo do nmero do menu. O software dever permitir a soma de vrios menus e dever terminar se for introduzido o nmero 0. N. 1 2 3 4 5 6 0 Menu Mini Hamburger Mega Hamburger Giga Hamburger Tera Hamburger M Mega S l d Salada Giga Salada SAIR
45

Preo 5,35 6,15 7,50 8,00 4 50 4,50 5,00

Exerccio 37-C:
Elabore um programa que permite efectuar operaes de crdito ou dbito numa conta bancria. O programa dever perguntar qual o saldo inicial da conta e qual a operao que o utilizador pretende efectuar (dbito ou crdito), crdito) assim como o montante a debitar, actualizando o saldo da conta sempre que se efectue uma operao. No final dever devolver o saldo da conta.

O Opco D C S

M Menu Dbito Crdito Sair

Cl l Clculo saldo - montante saldo + montante -

46

Exerccio 38-C:
Elabore um programa que calcule o total a pagar por determinado cliente atravs da introduo da letra correspondente do produto. O software dever permitir a soma de vrios produtos e no final dever permitir aplicar determinado desconto segundo uma tabela de descontos N. 1 2 3 4 5 6 0 Menu CAMISOLA CALA CAMISA CASACO SAPATOS MEIA SAIR
47

Preo 15,00 20,00 17,50 50,00 30 50 30,50 5,00

O Opo 1 2 3 4 5 0

DESCONTO 10% 20% 30% 40% 50% 0%

Exerccio 39-C: (Reviso)


Um ciclone tropical p consiste em uma tempestade p muito violenta q que, , sob determinadas condies, adquire um movimento de rotao em torno de uma regio de baixa presso atmosfrica. Um ciclone pode atingir um dimetro de at 500 km. Furaces so os mais violentos desses ciclones e chegam a produzir ventos de at 320 km/h. Na tabela abaixo, so apresentados alguns dados relativos classificao dos furaces segundo a escala Saffir-Simpson:
classificao l ifi tempestade tropical furaco de categoria 1 furaco de categoria 2 furaco de categoria 3 furaco de categoria 4 furaco de categoria 5 velocidade dos ventos (km/h) 62 a 118 119 a 153 154 a 177 178 a 209 210 a 249 maior que 249

Escreva um programa que leia a velocidade do vento aferida durante uma tempestade e apresente ao utilizador a classificao do furaco caso a tempestade t t d possa ser classificada como tal.

48

Exerccio 40-C: (Reviso)


Numa competio N ti d de ginstica i ti olmpica l i a nota t d determinada t i d por um painel de seis juzes. Cada um dos juzes atribui uma nota entre zero e dez p para o desempenho p do atleta e calculada a mdia. Escreva um programa que leia 6 notas entre zero e dez e calcule a nota a atribuir ao atleta.

49

Exerccio 41-C: (Reviso)


Construa C t um programa que calcule l l o valor l e a gravidade id d de d contra-ordenaes t d de d velocidade atravs da leitura da velocidade a que o veculo foi detectado assim como da localizao. So contra contra-ordenaes ordenaes leves: Excesso de velocidade at 30km/h fora das localidades; Excesso de velocidade at 20km/h dentro das localidades; Valor da coima: de 60 a 300; S Sem sano i inibitria ibit i So contra-ordenaes graves: Excesso de velocidade superior a 30km/h fora das localidades; Excesso de velocidade superior p a 20km/h dentro das localidades; ; Valor da coima: de 120 a 300 Sano inibitria: de 1 ms a 1 ano; So contra-ordenaes muito graves: E Excesso de d velocidade l id d superior i a 60k 60km/h /h fora f das d localidades; l lid d Excesso de velocidade superior a 40km/h dentro das localidades; Valor da coima: de 300 a 1500 Sano inibitria: de 2 meses a 2 anos.
50

Exerccio 42-C: (Reviso)


Desenvolva um programa em C para ler uma quantidade N de alunos. Ler a nota de cada um dos N alunos e calcular a mdia aritmtica das notas. Contar quantos alunos esto com a nota acima de 10. 10 Obs.: Se nenhum aluno tirou nota acima de 10, mostrar mensagem: No h nenhum aluno com nota acima de 10. A escala ser de 0 a 20.

51

Exerccio 43-C: (Reviso)


Desenvolva um p programa g em C q que solicite a idade de vrias pessoas e mostre: Total de pessoas com menos de 21 anos. T t l de Total d pessoas com mais i d de 50 anos. O programa termina quando idade for = 0.

52

Exerccio 44-C: (Reviso)


Desenvolva um programa em C que permita calcular o resultado de um questionrio aplicado a um determinado nmero de famlias. O programa dever responder aos seguintes requisitos:
Perguntar ao utilizador quantas famlias responderam ao questionrio. Para cada famlia perguntar: Residncia: (1: continente 2:Aores 3:Madeira) Idade do pai: Idade da me: Quantos filhos: Rendimento familiar: Os resultados das seguintes consultas devem ser apresentados aps a fase de recolha dos dados: Quantas familias residem no continente e em cada uma das ilhas. Qual nmero mdio de filhos por casal Rendimento mdio familiar dos casais com 2 filhos ou menos Quantidade de familias com mais do que dois filhos Idade media dos pais.
53

Caracteres ASCII
A ASCII (American Standard Code for Information Interchange), que em portugus t significa i ifi "Cdi "Cdigo P d Americano Padro A i para o Intercmbio I t bi de d Informao") uma codificao de caracteres de sete bits baseada no alfabeto ingls. ingls Os cdigos ASCII representam texto em computadores, computadores equipamentos de comunicao, entre outros dispositivos que trabalham com texto. texto Exemplo de uma tabela: http://www.computerhope.com/ascii.gif

54

Caracteres ASCII
/*Exemplo de um programa que converte um nmero decimal em cdigo ASCII*/ #include <stdio.h> stdio.h main() { int numero; printf("Introduza o numero a converter para ASCII!\n"); scanf("%d", & numero); printf("%d=%c",numero,numero); system( PAUSE ); system("PAUSE"); }

55

Ciclo for

Formador: Henrique Fidalgo

56

Ciclo for
A instruo for, for adapta-se adapta se particularmente a situaes em que o nmero de interaces conhecido partida. A sintaxe : for (inicializaes; condio; ps-instruo) ps instruo) instruo;

57

Ciclo for
Consideremos o programa que escreve 10 nmeros de 1 a 10 no monitor com o ciclo while:
#include <stdio.h> main() { int numero=1; while (numero<=10) { printf(%d\n,i); i=i+1; } system("PAUSE"); }
58

Ciclo for
Vejamos agora como fica com o ciclo for: for :
#include <stdio.h> <stdio h> main() { int i; for( i=1; i<=10; i++) printf(%d\n,i); system("PAUSE"); }

59

Exerccio 45-C:
Desenvolva um p programa g em C q que p permita calcular a mdia das notas de um nmero de alunos introduzido pelo utilizador. Nota: Utilize o ciclo for

60

Exerccio 46-C:
Faa um programa que calcula a tabuada de um nmero introduzido pelo utilizador.

Nota: Utilize o ciclo for for

61

Exerccio 47-C:
Elabore um programa que permita introduzir 10 notas de alunos com uma escala de 0 a 20 em que as notas acima de 10 so positivas e abaixo negativas. O programa dever devolver o nmero de negativas e positivas introduzidas. introduzidas

Nota: Utilize o ciclo for

62

Gerar nmeros aleatrios


random

Formador: Henrique Fidalgo

63

rand
Sintaxe
#include <time.h> srand ( time(NULL) ); alea=rand()%100;

64

Exemplo
#include <stdio.h> #include <stdlib.h> #include <time.h> int i t main i () { int alea; srand ( time(NULL) ); alea=rand()%100; printf ( ("Um Um numero aleatorio e %d\n %d\n", alea); system("PAUSE"); return 0; }

65

Exerccio 48-C:
Elabore um j jogo g q que g gera um nmero aleatrio entre 0 e 100 em que o utilizador ter de descobrir o nmero gerado atravs das indicaes do computador que dever mostrar os avisos: O nmero maior sempre que o nmero introduzido seja maior do que o introduzido O nmero menor sempre que o nmero introduzido seja j menor q que o introduzido Se o nmero for igual dever mostrar o seguinte: PARABNS Acertou A em X tentativas i em que X o nmero de tentativas.
66

Funes

Formador: Henrique Fidalgo

67

Funes
Embora ainda sem saber como escrever uma funo, j as temos utilizado ao longo dos nossos programas. So exemplos as funes printf, scanf, getchar. absolutamente indispensvel que um programador de C domine completamente a escrita de programas de forma modelar, atravs de procedimentos e tambm funes funes.
68

Funes
Escreva o seguinte programa, utilizando o ciclo for que permite colocar uma linha de 20 asteriscos no ecr. p
#include <stdio.h> main () { int i; for (i=1; i<20; i++) putchar ('*'); getchar(); }
69

Funes
#include <stdio.h> linha() { int i; for (i=1; i<20; i++) putchar ('*'); printf("\n"); } main () { linha(); printf (" Funcao Linha\n"); linha(); g getchar(); (); }

70

Vectores
Um vector (vulgarmente conhecido por Array) no mais que um conjunto de elementos consecutivos, todos do mesmo tipo, que podem ser acedidos individualmente a partir de um nico nome.
Exemplo de um vector que representa as comisses de um empregado ao longo do ano:
100
Janeiro

200
Fevereiro

300
Maro

150
Abril

450
Maio

120
Junho

300
Julho

320
Agosto

120
Setembro

230
Outubro

400
Novembro

200
Dezembro

71

Vectores
Como declarar variveis do tipo vector? Sintaxe: Tipo p nome_varivel [n de elementos] Em cdigo: int comissoes [12]; int tipo de dados do vector (neste caso inteiros) comissoes nome do vector [12] nmero de posies do vector (neste caso 12)
100
Janeiro

200
Fevereiro

300
Maro

150
Abril

450
Maio

120
Junho

300
Julho

320
Agosto

120
Setembro

230
Outubro

400
Novembro

200
Dezembro

72

Vectores
Como introduzir valores nas posies do vector? Vamos colocar o valor 300 no ms de Maro: comissoes [3] = 300; Um caso mais prtico: printf ("Qual a comissao do ms de Maro?\n"); scanf("%d",& marco); comissao[3]=marco;
300
Janeiro Fevereiro Maro Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro

73

Vectores
Mostrar valores das posies do vector: printf ( p (A comisso do ms de Maro : %d\n, , comissao [ [3]); ]);

300
Janeiro Fevereiro Maro Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro

74

Vectores A sintaxe completa


#include <stdio.h> #include <stdlib.h> main() { int marco,comissao[12]; printf ("Qual a comissao do ms de Maro?\n"); scanf("%d",& marco); comissao[3] marco; comissao[3]=marco; printf (" A comissao de Marco e: %d\n", comissao[3]); system("PAUSE"); ("PAUSE") return 0; }
75

Vectores
Efectuar clculos com as posies do vector: Se considerar-mos que a comisso do ms de Abril o dobro da comisso de Maro, como a representamos no vector? comissao[4] = comissao[3] * 2;

300
Janeiro Fevereiro Maro

600
Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro

76

Vectores de caracteres
Tambm podemos utilizar vectores de caracteres: Exemplo de um vector que permita a introduo das vogais: char vogal g [5]; vogal [0] = a; vogal [1] = e; vogal [2] = i; vogal [3] = o; vogal [4] = u;

a
vogal [0]

e
vogal [1]

i
vogal [2]

o
vogal [3]

u
vogal [4]

Os ndices de um vector variam entre 0 e n-1, em que n o nmero de ndices que queremos dimensionar o vector. vector
77

Exerccio 49-C

Escreve um programa que realize a leitura dos salrios pagos a um individuo durante um ano. Em seguida dever mostrar os valores mensais e o total anual.
Nota: Utilize um vector

78

Exerccio 50-C

Escreve um programa que realize a leitura das notas de 6 disciplinas de um aluno e que no final devolva as notas de cada disciplina e a sua mdia.
Nota: Utilize um vector

79

Vectores
E quando a dimenso do vector definida pelo utilizador? p
main() { i t i, int i n, notas; t printf ("Quantas notas quer inserir?\n"); scanf("%d",& n); int vector[n]; for (i=0; i<n; i++) { printf ("Quais as notas?\n"); scanf("%d",& vector[i]); }
Formador: Henrique Fidalgo 80

#include <stdio.h> #include <stdlib.h> main() { int i, n, notas; printf ("Quantas notas quer inserir?\n"); inserir?\n ); scanf("%d",& n); int vector[n];

for (i=0; i<n; i++) { printf ("Quais as notas?\n"); scanf("%d",& vector[i]); } for (i=0; i<n; i++) { printf ("Notas\n %d\n", vector[i]); } system("PAUSE"); system( PAUSE ); return 0; }
81

Formador: Henrique Fidalgo

Exerccio 51-C
Durante uma corrida de automveis com N voltas de durao foram anotados para um piloto, na ordem, os tempos registados em cada volta. Elabore um programa em C para ler os tempos das voltas e calcular: Tempo mdio das voltas; Mostrar todos os tempos das voltas
Nota: Utilize um vector

82

Vectores Multi Dimensionais / Matrizes


At agora vimos como trabalhamos com vectores com uma nica dimenso. Vamos agora ver como se podem usar vectores com mais do que uma dimenso.

83

Vectores Multi Dimensionais / Matrizes


A declarao de um vector com vrias dimenses realizada atravs da seguinte sintaxe:

tipo vector [dim1] [dim2]

84

Vectores Multi Dimensionais / Matrizes


A ttulo de exemplo, vamos observar como poderamos implementar o famoso Jogo do Galo recorrendo a um vector como tabuleiro de jogo.

x x

O
85

Vectores Multi Dimensionais / Matrizes


Cada quadrcula vai conter um X,cum O ou um espao em branco, assim trata-se trata se de um vector de caracteres. A declarao dever ser realizada do seguinte modo:

char galo[3][3]

x x

O O
86

Vectores Multi Dimensionais / Matrizes


No caso anterior aquilo que declarmos no foi uma matriz mas antes um vector de 3 posies (galo[3]), em que cada uma destas posies formada por um vector de 3 posies.
galo [0] galo [1] galo [2]

x x

O O
87

Vectores Multi Dimensionais / Matrizes


Se declararmos um vector: int vector [3] [4]

vector [0] vector [1] vector [2]

88

Vectores Multi Dimensionais / Matrizes


Vamos inicializar o vector do jogo do galo com espaos: char galo [3] [3] = { { , , }, { , , }, { , , } }

89

Vectores Multi Dimensionais / Matrizes


#include <stdio.h> #include <stdlib.h> main() () { char galo [3] [3] = { { { , , } }, { { , , } }, { { , , } }; int i ti,j j; galo [0] [0] = X; galo [1] [1] = X; galo l [0] [2] = O; O galo [2] [2] = O; for (i=0; i<3; i++) { for (j=0; j<3; j++) printf ( p (%c % % %c, ,g galo[i] [ ] [j], j==3-1? : |); if (i!=3-1) printf ( (\n--------\n); \n \n ); } }

90

Exerccio 52-C
Elabore um programa que permita introduzir o ndice da disciplinas:
P Portugus I Ingls M Matemtica E Educao Fsica As notas das respectivas disciplinas e a mdia das mesmas mesmas.

Nota: Utilize um vector multi-dimensional Exemplo: P I M


nota nota nota

E nota

91