• Nenhum resultado encontrado

APC1 Prof. Eduardo Exercícios (Lista 4 T3)

N/A
N/A
Protected

Academic year: 2021

Share "APC1 Prof. Eduardo Exercícios (Lista 4 T3)"

Copied!
9
0
0

Texto

(1)

APC1 – Prof. Eduardo

Exercícios (Lista 4 – T3)

18 - Faça um programa que preencha dois vetores com cinco elementos numéricos cada um e depois

ordene-os de maneira crescente. Deverá ser gerado um terceiro vetor com dez pordene-osições, compordene-osto pela junção dordene-os

elementos dos vetores anteriores, também ordenado de maneira crescente.

vet1

6

8

1

10

3

1 2 3 4 5

vet1 ordenado

1

3

6

8

10

1 2 3 4 5

vet2 20

0

7

2

5

1 2 3 4 5

vet2 ordenado

0

2

5

7

20

1 2 3 4 5

Resultado 0

1

2

3

5

6

7

8

10 20

1 2 3 4 5 6 7 8 9 10 #include<stdio.h> main() { int vet1[5]={6,8,1,10,3},vet2[5]={20,0,7,2,5},vet3[10],i,j,aux; //mostrando o vet1 original

for(i=0;i<=4;i++) { if(i==0) printf("\nVet 1: \t\t\t%d",vet1[i]); else printf("\t %d",vet1[i]); } //ordenado vet1 for(i=0;i<=4;i++) { for(j=0;j<=3;j++) { if(vet1[j]>vet1[j+1]) { aux=vet1[j]; vet1[j]=vet1[j+1]; vet1[j+1]=aux; } } }

//mostrando vet1 ordenado for(i=0;i<=4;i++)

{

if(i==0)

printf("\nVet 1 Ordenado: \t%d",vet1[i]); else

(2)

}

//mostrando vet2 original for(i=0;i<=4;i++) { if(i==0) printf("\nVet 2: \t\t\t%d",vet2[i]); else printf("\t %d",vet2[i]); } //ordenando vet2 for(i=0;i<=4;i++) { for(j=0;j<=3;j++) { if(vet2[j]>vet2[j+1]) { aux=vet2[j]; vet2[j]=vet2[j+1]; vet2[j+1]=aux; } } }

//mostrando vet2 ordenado for(i=0;i<=4;i++)

{

if(i==0)

printf("\nVet 2 Ordenado: \t%d",vet2[i]); else

printf("\t %d",vet2[i]); }

//junção do vet1 e vet2 em vet3 for(i=0;i<=9;i++) { if(i<=4) vet3[i]=vet1[i]; else vet3[i]=vet2[i-5]; }

//mostrando vet3 original (vet1 + vet2) for(i=0;i<=9;i++) { if(i==0) printf("\nVet 3: \t\t\t%d",vet3[i]); else printf("\t %d",vet3[i]); } //ordenando vet3 for(i=0;i<=9;i++) { for(j=0;j<=8;j++) { if(vet3[j]>vet3[j+1]) { aux=vet3[j]; vet3[j]=vet3[j+1]; vet3[j+1]=aux; }

(3)

} }

//mostrando vet3 ordenado for(i=0;i<=9;i++)

{

if(i==0)

printf("\nVet 3 Ordenado: \t%d",vet3[i]); else

printf("\t %d",vet3[i]); }

}

22 – Uma empresa possui ônibus com 48 lugares (24 nas janelas e 24 no corredor). Faça um algoritmo que

utilize dois vetores para controlar as poltronas ocupadas no corredor e na janela. Considere que 0 representa

poltrona desocupada e 1, poltrona ocupada.

janela

0

1

0

0

. . .

1

0

0

1 2 3 4 ... 22 23 24

corredor

0

0

0

1

. . .

1

0

0

1 2 3 4 ... 22 23 24

Inicialmente, todas as poltronas estarão livres. Depois disso, o algoritmo deverá apresentar as

seguintes opções:

 Vender passagem.

 Mostrar mapa de ocupação do ônibus.

 Encerrar.

Quando a opção escolhida for Vender passagem, deverá ser perguntado se o usuário deseja janela ou

corredor e o número da poltrona. O algoritmo deverá, então, dar uma das seguintes mensagens:

 Venda efetivada – se a poltrona solicitada estiver livre, marcando-a como ocupada.

 Poltrona ocupada – se a poltrona solicitada não estiver disponível para venda.

 Ônibus lotado – quando todas as poltronas já estiverem ocupadas.

Quando a opção escolhida for Mostrar mapa de ocupação do ônibus, deverá ser mostrada uma

listagem conforme a seguir:

JANELA CORREDOR 1 – Ocupada 1 – Ocupada 2 – Ocupada 2 – Livre 3 – Livre 3 – Livre 4 – Livre 4 - Ocupada 5 – Ocupada 5 - Livre ...

Quando for escolhida a opção Encerrar, a execução do programa deverá ser finalizada.

#include<stdio.h> main() { int j[24],c[24],i,num,op,achou; char pos; for(i=0;i<24;i++) { j[i]=0; c[i]=0; } do {

(4)

do {

printf("\n1 - Vender passagem"); printf("\n2 - Mapa de ocupacao"); printf("\n3 - Encerrar");

printf("\nEntre com a operacao: "); scanf("%d",&op); }while(op<1 || op>3); if(op==1) { achou=0; for(i=0;i<24;i++) { if(c[i]==0 || j[i]==0) achou=1; } if(achou==0) { printf("\nBusao lotado!"); } else { do {

printf("\nJ para janela ou C para corredor: "); scanf("%s",&pos);

pos=toupper(pos);

}while(pos!='C' && pos!='J'); do

{

printf("\nNumero da poltrona: "); scanf("%d",&num);

}while(num<0 || num>23); if(pos=='J' && j[num]==1)

printf("\n** Poltrona ocupada!"); else if(pos=='J' && j[num]==0) {

printf("\n** Venda efetivada!"); j[num]=1;

}

else if(pos=='C' && c[num]==1) printf("\n** Poltrona ocupada!"); else if(pos=='C' && c[num]==0) {

printf("\n** Venda efetivada!"); c[num]=1; } } } if(op==2) { printf("\n\t\t==========================="); printf("\n\t\tJANELA \t\t CORREDOR"); printf("\n\t\t==========================="); for(i=0;i<24;i++) {

if(j[i]==0 && c[i]==0)

(5)

else if(j[i]==0 && c[i]==1)

printf("\n\t\t%d - Livre \t %d - Ocupada",i,i); else if(j[i]==1 && c[i]==0)

printf("\n\t\t%d - Ocupada \t %d - Livre",i,i); else if(j[i]==1 && c[i]==1)

printf("\n\t\t%d - Ocupada \t %d - Ocupada",i,i); } printf("\n\t\t==========================="); } printf("\n\n\n"); }while(op!=3); }

23 – Elaborar um algoritmo com opções para busca sequencial e busca binária para pesquisar um

elemento em um vetor A com n números inteiros.

#include<stdio.h> main() { int v[6]={6,2,4,3,9,7},i,flag,op,pos,poscent,local,posini,posfim,num; do { printf("\n"); printf("\n1-Sequencial"); printf("\n2-Binaria"); printf("\n3-Sair"); do { printf("\nDig. um op.: "); scanf("%d",&op); }while(op<1 || op>3);

printf("\nDig. um valor a ser pesquisado: "); scanf("%d",&num);

if(op==1)//use flag supondo que o vetor não tenha elementos iguais ou, //então, queira apenas saber se está no vetor, não importando a //qtde que tenha.

{ flag=0; for(i=0;i<=5;i++) { if(v[i]==num) { flag=1; pos=i;

break;//abandona o laço imediatamente }

}

if(flag!=0)

printf("\nElemento encontrado na posicao %d!",pos+1); else

printf("\nElemento nao encontrado!"); }

if(op==2) {

local=0; posini=0; posfim=5; flag=0; while((posini<=posfim) && (flag==0)) {

(6)

if(v[poscent]==num) { flag=1; local=poscent; }//fim if else { if(v[poscent]>num) posfim=poscent-1; else posini=poscent+1; }//fim else }//fim while if(flag==1)

printf("\n Valor encontrado na pos. %d\n",local+1); else

printf("\n Valor nao encontrado!\n"); }

}while(op!=3); }

24 – Elaborar um algoritmo para ordenar um vetor A com n posições. Opções para ordenações:

insertion-sort, selection-sort, e buble-sort.

#include<stdio.h> main()

{

int v[6]={6,2,4,3,9,7},i,j,aux,flag,comp,mov,trocas,op,menor,pos; comp=0; mov=0; flag=1,trocas=0;

do {

printf("\n");

printf("\n1-BubbleSort");

printf("\n2-BubbleSort com criterio de parada"); printf("\n3-SelectionSort"); printf("\n4-InsertionSort"); printf("\n5-Sair"); do { printf("\nDig. um op.: "); scanf("%d",&op); }while(op<1 || op>5); if(op==1) { for(i=0;i<=5;i++) { for(j=0;j<=4;j++) { if(v[j]>v[j+1]) { aux=v[j]; v[j]=v[j+1]; v[j+1]=aux; } } } } if(op==2) {

(7)

{ flag=0; for(j=0;j<=4;j++) { comp++; if(v[j]>v[j+1]) { trocas++; flag=1; aux=v[j]; mov++; v[j]=v[j+1]; mov++; v[j+1]=aux; mov++; } } } } if(op==3) { for(i=0;i<=4;i++) { menor=v[i]; pos=i; for(j=i+1;j<=5;j++) { if(menor>v[j]) { menor=v[j]; pos=j; } } aux=v[i]; v[i]=v[pos]; v[pos]=aux; } } if(op==4) { for(i=1;i<=5;i++) { j=i; while((v[j]<v[j-1])&&(j>0)) { aux=v[j]; v[j]=v[j-1]; v[j-1]=aux; j=j-1; } } } for(i=0;i<=5;i++) printf("\t %d",v[i]); system("cls"); }while(op!=5); }

(8)

30 – Criar um algoritmo que receba:

 um vetor com o código de cinco cidades diferentes;

 uma matriz 5 x 5 com a distância entre as cidades, sendo que na diagonal principal deve ser

colocada automaticamente distância zero, ou seja, não deve ser permitida a digitação;

 o consumo de combustível de um veículo, ou seja, quantos quilômetros este veículo percorre

com um litro de combustível.

O programa deverá calcular e mostrar:

 os percursos que não ultrapassem 250 quilômetros (os percursos são compostos pelos nomes das

cidades de origem e pelos nomes das cidades de destino);

 todos os percursos (nome da cidade de origem e nome da cidade de destino), juntamente com a

quantidade de combustível necessária para o veículo percorrê-lo.

#include<stdio.h> main() { int cid[5],i,j; float dist[5][5],consumo,qtde_litros; for(i=0;i<=4;i++) {

printf("\nDig. o c%cdigo da %d%c cidade: ",162,i+1,166); scanf("%d",&cid[i]); } for(i=0;i<=4;i++) { for(j=0;j<=4;j++) { if(i==j) dist[i][j]=0; else if(i<j) {

printf("\nDig. a dist%cncia entre as cidades %d e %d",131,i+1,j+1); scanf("%f",&dist[i][j]); } } } printf("\nDig. o consumo KM/L: "); scanf("%f",&consumo); for(i=0;i<=4;i++) { for(j=0;j<=4;j++) { if(dist[i][j]<=250)

printf("\nDist. menores que 250Km --> entre as cidades %d e %d: %f",i+1,j+1); } } for(i=0;i<=4;i++) { for(j=0;j<=4;j++) { if(i<j) { qtde_litros=dist[i][j]/consumo;

printf("\nConsumo entre as cidades %d e %d:

(9)

} } } }

Referências

Documentos relacionados

Acções caem para novo mínimo histórico de 55 cêntimos (manchete, págs.. Bancos centrais ganham com

O presente artigo se propôs a estabelecer as bases fundamentais do Direito &amp; Literatura e, a partir delas, examinar relevantes aspectos da obra literária “1984” de

Foram consideradas como infecção relacionada ao CVC os pacientes que apresentavam sinais locais de infecção (secreção purulenta e/ou hiperemia) e/ou hemocultura

Com relação à germinação das sementes armazenadas em câmara fria, aos três meses de armazenamento (Tabela 10), observou-se em sementes tratadas ou não com fungicidas e

a) Oração – Estimule as crianças a falarem com Deus. É importante variar com oração de gratidão, de intercessão, de confissão, de petição e também variar os motivos de

A Tabela 15 apresenta o valor unitário obtido pelo modelo MGEO (erro espacial) já apresentado e pelos modelos MGEO (erro espacial) obtidos através dos diversos

a viver na felicidade completa. Vós, Deus de ternura e de bondade, nunca vos cansais de perdoar.. Concedeis agora a vosso povo tempo de graça e reconciliação. Daí, pois, em

9º, §1º da Lei nº 12.513/2011, as atividades dos servidores ativos nos cursos não poderão prejudicar a carga horária regular de atuação e o atendimento do plano de metas do