Baixe o app para aproveitar ainda mais
Prévia do material em texto
ArranjosArranjosArranjosArranjos •• 1 di ã•• 1 dimensão •• várias dimensõesvárias dimensões 1 Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Algoritmo MédiaTurmago t o éd a u a { Obtém as notas de 30 alunos e informa a média } Entradas: 30 notas Saída: média das 30 notas lidas ProcessamentoProcessamento 1. Inicializar somatório das notas 2. Repetir 30 vezes (para cada aluno)p (p ) 2.1 obter a nota de um aluno 2.2 acrescentar esta nota ao somatório de notas 3. Calcular a média 4. Informar a média 5 Terminar 2 5. Terminar Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. //calcula media de uma turma #include <stdio h>#include <stdio.h> int main ( ) { float nota; // nota de um alunofloat nota; // nota de um aluno float media, soma; int aluno; //variável de controle da repeticao soma = 0; // inicializa a soma das notassoma = 0; // inicializa a soma das notas for (aluno = 1; aluno <= 30; aluno++) // para cada aluno da turma {{ scanf(“%f”, ¬a); //obtem a nota do aluno soma = soma + nota; }} media = soma / 30; printf(‘Media da turma: %7.2f”, media); return 0;return 0; } 3 Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Informar, ainda, as notas que são i à édi l l d q superiores à média calculada. Algoritmo MédianotasSupgo t o éd a otasSup { Obtém as notas de 30 alunos. Informa a média e as notas superiores à media } Entradas: 30 notas Saídas: média das 30 notas lidas notas superiores à médianotas superiores à média Processamento 1. Inicializar somatório das notas 2. Repetir 30 vezes (uma vez para cada aluno) 2.1 obter a nota de um aluno 2.2 acrescentar esta nota ao somatório de notas 3. Calcular e informar a média 4 Informar as notas superiores à média ? 4 4. Informar as notas superiores à média 5. Terminar ? Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Informar, ainda, as notas que são i à édi l l d //calcula media de uma turma e notas superiores a media q superiores à média calculada. #include <stdio.h> int main ( ) {{ float n1, n2, n3, n4, n5, { ...}, n30;// uma variavel para cada nota float media, soma; // obtem as 30 notas// obtem as 30 notas scanf(“%f %f (...) %f”, &n1, &n2, ( ... ) &n30); soma = n1+n2+n3+n4+n5+n6+ (...) n30; media = soma / 30;media = soma / 30; printf(“Media da turma: %7.2f“, media); if (n1 > media) // testa cada nota !!! i tf(“%f” 1)printf(“%f”, n1); if (n2 > media) printf(“%f”, n2); É a única solução ? 5 { ... } return 0; } É a única solução ? Tipos de dados na Linguagem CTipos de dados na Linguagem CTipos de dados na Linguagem CTipos de dados na Linguagem C • básicos • char • int • float d bl • definidos pelo usuário • double • void • estrutura • campo de bitcampo de bit • união • enumeração • typedef 6 typedef ArranjoArranjojj ( Vetor )( Vetor ) Índices Identificando cada 0 1 2 3 4 5 6 7 8 Identificando cada elemento 0 1 2 3 4 5 6 7 8 nota nome Valornome Comum para todos os elementos Valor Semelhante a uma variável simples 7 p ArranjoArranjojj •• conjunto ordenado de informações j ç de mesma natureza; •• elementos todos do mesmo tipo;•• elementos todos do mesmo tipo; •• acesso randômico.acesso randômico. 0 1 2 3 4 5 6 7 8 nota 8 5nota 8,5 8 nota [2] vale 8,5 Arranjo Arranjo –– Linguagem CLinguagem CArranjo Arranjo –– Linguagem CLinguagem C Declaraçãoç Tipo arranjo <tipo> <nome do arranjo> [ < número de elementos da dimensão >] • número de elementos da dimensão deve ser um inteiro ou representar um valor inteiro; • tipo pode ser entre outros int float double tipo pode ser, entre outros, int, float, double. float nota[30]; i t [15]Ex:Ex: int x[15];Ex:Ex: Ã 9 ATENÇÃO: em C, strings (= cadeias de caracteres) são arranjos de caracteres, que serão vistos em detalhes mais adiante. Arranjo Arranjo –– Linguagem CLinguagem C Utilização Variável indexada < nome do arranjo > [ < índice > ] 0 1 2 3 4 5 6 7 8 nota float nota[9]; scanf(“%f” ¬a[5]); Ex: Ex: nota[ 5 ]scanf( %f , ¬a[5]); t [ 2 ] t [ 1 ] 2 nota[ 1 ] = 7.5 ; nota[ 5 ] nota[ 2 ] = nota [ 1 ] + 2 ; if (nota[ 1 ] > 6.0) printf (“Aprovado”); 10 printf (“Aprovado”); ... Arranjo Arranjo –– Linguagem CLinguagem C < nome do arranjo > [ < índice > ] Variável indexadaVariável indexada Índice • constante, nome de Ex: Ex: variável, ou expressão que seja um valor inteiro (ou resulte em) int main ( ) { float nota [9]; Ex: Ex: inteiro (ou resulte em) um valor inteiro; • sempre inicia em 0. float nota [9]; int indice; indice = 5; f ( “%f” & t [i di ])scanf ( “%f”, ¬a[indice]); nota[indice + 1] = 7.5 ; ... } 0 1 2 3 4 5 6 7 8 nota [ 6 ]Ex: Ex: 11 0 1 2 3 4 5 6 7 8 nota Arranjo Arranjo –– Linguagem CLinguagem C Inicialização jj g gg g ç Arranjos, como as demais variáveis, ao serem criados contêm lixo criados contêm lixo. Arranjos podem ser inicializados:Arranjos podem ser inicializados: •automaticamente ao serem criados; •por atribuição, em algum momento da p g execução; •por leitura. 12 Inicialização automática de um arranjo Inicialização automática de um arranjo na declaração:na declaração:na declaração:na declaração: Forma geral:Forma geral: ti [ ] { lti [ ] { l l l ll }} int v[3] = {10, 20, 30}; tipo var[n] = {valortipo var[n] = {valor00, valor, valor11, , valorvalornn--11};}; 0 1 2 [ ] { , , } v 302010 P i õ ã i i i li d ã hid Posições não inicializadas são preenchidas com zero: int x[5] = {10, 20, 30}; 0 1 2 3 40 1 2 x 302010 3 0 4 0 13 Inicialização automática de um arranjo Inicialização automática de um arranjo d l ã ( t ) d l ã ( t )na declaração (cont.):na declaração (cont.): float z[5] = {2.7, 3.5, 4.2, 9.23 , 4.7}; o mesmo que escrever: float z[5]; z[0] = 2 7; Inicialização por atribuição, durante a execução z[0] = 2.7; z[1] = 3.5; z[2] = 4.2; a execução. z[3] = 9.23; z[4] = 4.7; 14 Ex: Preencher por leitura um arranjo de 100 elementos inteiros. int valor[100]; int indice; for (indice = 0; indice < 100; indice++) ATENÇÃO: Como os índices de um arranjo sempre for (indice = 0; indice < 100; indice++) scanf ( “%d”, &valor[indice] ); ... iniciam em 0, e o arranjo valor tem 100 elementos, os índices para acessá-lo vão de Indice para acessá lo vão de 0 a 99! 0 1 2 3 4 5 6 7 8 Valor ... 99 Ex: Somar os elementos de um arranjo x ( 200 ) ... soma = 0; for (indice = 0; indice <200; indice++) 15 ( ; ; ) soma = soma + x[indice] ; ... Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Informar, ainda, as notas que são i à édi l l d q superiores à média calculada. 16 Ex: Ler as notas de 30 alunos. Calcular e informar a média da turma. Informar, ainda, as notas que são i à édi l l d //Calcula media de uma turma e informa notas superiores a media #include <stdio h> q superiores à média calculada. #include <stdio.h> int main ( ) { float nota [30] ; //arranjo para as notasfloat nota [30] ; //arranjo para as notas float media, soma; int aluno; // variavel de controle da repeticao soma = 0; // inicializa soma for (aluno = 0; aluno < 30 ; aluno++) //para cada aluno { scanf (“%f”, ¬a[aluno]); // obtem sua nota soma = soma + nota[aluno]; // acumula a somasoma = soma + nota[aluno]; // acumula a soma } media = soma / 30; printf(“Media da turma: %7.2f”, media);printf( Media da turma: %7.2f , media); for (aluno = 0; aluno < 30; aluno++)// mostra notas > media if (nota[aluno] > media) printf (“%7.2f”, nota[aluno]); 17 return 0; } Ex: Os preços de mercadorias de uma loja são armazenados em um arranjo Preco. Os índices do j d ódi d d i (10 j arranjo correspondem aos códigos das mercadorias (10 a 99). Informe: - o código da mercadoria cujo preço é R$ 123,00 ( d d f ) g j p ç $ , (supor todos os preços diferentes) //codigo da mercadoria com preco determinado #include <stdio h> P bl d t #include <stdio.h>int main ( ) { int cod; Problemas desta solução: int cod; float preco [100]; // para usar indice 99, tem que declarar //vetor com 100 elementos - mesmo depois de encontrar, continua //obter preços for (cod = 10; cod < 100; cod++) scanf( “%f”, &preco[cod] ); percorrendo o arranjo; ã i f ã ( p [ ] ) //procurar produto de preço R$ 123,00 for (cod = 10; cod <100; cod++) if (preco[cod] = = 123) - não informa se não encontrou o valor procurado 18 printf(“%d ”, cod); return 0; } procurado. Outra solução: //procura codigo de mercadoria //com preço determinadoOutra solução: //com preço determinado #include <stdio.h> int main ( ) { fl t [100]float preco[100]; int cod; int achou; // 0 = falso, 1 = verdadeiro //obter preços p ç for (cod = 10; cod<=99;cod++) scanf( “%f”, &preco[cod] ); // procurar produto de preço R$ 123,00 achou = 0;achou = 0; cod = 9; do { d d + 1cod = cod + 1; if (preco[cod] == 123) achou = 1; }} while (cod < 99 && achou == 0); if (achou == 1) printf (“%d”, cod); else 19 else printf(“Não encontrou!”); return 0; } Ex: Ler os números de alunos – arranjo numero(30). Ler nota de cada aluno – arranjo nota(30). Mesmo índice relaciona número com sua notaMesmo índice, relaciona número com sua nota. Informar: - os números dos alunos com nota menor que 6,0. //alunos com nota menor que 6,0 #include <stdio.h> int main ( ) {{ int numero [30]; float nota [30]; i t i dint ind; for (ind = 0; ind <30; ind++) { scanf(“%d” &numero[ind]);scanf( %d , &numero[ind]); scanf(“%f”, ¬a[ind]); if (nota[ind] < 6.0) printf(“%d” numero[ind]);printf( %d , numero[ind]); } ... return 0; 20 return 0; } Exercício:Exercício: 1. Preencher um arranjo X ( 200 ) por leitura. P l d 2. Procurar o maior elemento deste arranjo. 3 Informar o valor do maior elemento e sua 3. Informar o valor do maior elemento, e sua posição. 21
Compartilhar