CES10 INTRODUO COMPUTAO Aulas Prticas 2021 Captulo VIII

  • Slides: 17
Download presentation
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2021 Capítulo VIII Cadeias de Caracteres e

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2021 Capítulo VIII Cadeias de Caracteres e Estruturas

Programa 8. 1: Leitura e escrita de cadeias de caracteres Cad 1 ‘ 1’

Programa 8. 1: Leitura e escrita de cadeias de caracteres Cad 1 ‘ 1’ ? ‘ 2’ ? ‘ 3’ ? ‘ 4’ ? ‘’ ? ? ? #include <stdio. h> 1 2 3 4 5 6 7 8 9 0 #include <stdlib. h> int main () { char Cad 1[10], Cad 2[] = "abcde"; int i; printf ("Digite uma cadeia de caracteres: nn"); Cad 2 scanf ("%s", Cad 1); ‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘’ printf ("n. Cad 1 = %s", Cad 1); 1 2 3 4 5 0 printf ("n. Cad 2 = %s", Cad 2); printf ("n"); for (i = 0; i <= 9; i++) Supor a digitação escrito: printf ("nt. Cad 1[%d] = '%c' ou %d", Será i, Cad 1[i]); de printf ("n"); Cad 1 = 1234<enter> for (i = 0; i <= 5; i++) Cad 2 = abcde printf ("nt. Cad 2[%d] = '%c' ou %d", i, Cad 2[i]); printf ("nn"); system ("pause"); Copiar, Cuidado para não digitar return 0; salvar e mais do que 9 caracteres } para Cad 1

Programa 8. 2: O formato %s para leitura de cadeias de caracteres #include <stdio.

Programa 8. 2: O formato %s para leitura de cadeias de caracteres #include <stdio. h> #include <stdlib. h> typedef char cadeia[20]; int main () { cadeia Cad 1, Cad 2; printf ("Digite uma frase: nn"); scanf ("%s%s", Cad 1, Cad 2); printf ("n. Cad 1 = %s", Cad 1); printf ("n. Cad 2 = %s", Cad 2); printf ("nn"); system ("pause"); return 0; } Copiar, salvar e executar Digite uma frase: gosto muito de CES-10 Cad 1 = gosto Cad 2 = muito Digite algo para encerrar Resultado de uma execução Com o formato %s, scanf encerra a leitura para uma variável, quando encontra um espaço em branco ou um

Programa 8. 3: Comprimento de cadeias de caracteres Copiar, salvar e executar ‘strlen’ retorna

Programa 8. 3: Comprimento de cadeias de caracteres Copiar, salvar e executar ‘strlen’ retorna o no de caracteres de uma cadeia, sem contar o ‘’ #include <stdio. h> #include <string. h> #include <stdlib. h> typedef char cadeia[50]; int main () { cadeia Cad; printf ("Digite uma cadeia de caracteres: nn"); scanf ("%s", Cad); printf ("nt. Comprimento (%s) = %d", Cad, strlen(Cad) ); Resultado de printf ("nn"); system ("pause"); uma return 0; execução Digite uma cadeia de caracteres: } anticonstitucionalissimamente Comprimento (anticonstitucionalissimamente) = 29 Digite algo para encerrar

Programa 8. 4: Conversão de binário para decimal n Método de conversão: seja o

Programa 8. 4: Conversão de binário para decimal n Método de conversão: seja o binário 1001011 a ser convertido n Inicialmente, o número convertido é zerado Digito Cálculo Valor decimal 0 (valor inicial) 1 0 x 2+1= 1 0 1 x 2+0= 2 0 2 x 2+0= 4 1 4 x 2+1= 9 0 9 x 2+0= 18 1 18 x 2 + 1 = 37 1 37 x 2 + 1 = 75 (Valor final)

Programa 8. 4: Conversão de binário para decimal #include <stdio. h> <stdlib. h> <string.

Programa 8. 4: Conversão de binário para decimal #include <stdio. h> <stdlib. h> <string. h> /*Declaracoes do tipo logic e do tipo cadeia de caracteres*/ typedef char logic; const logic True = 1, False = 0; typedef char cadeia[30]; /*Declaracao da struct binario*/ typedef struct binario; struct binario { cadeia valbinario; int valdecimal; valbinario logic valido; }; valdecima l struct binario valido

Programa 8. 4: Conversão de binário para decimal /* Funcao main, declaracoes, leitura do

Programa 8. 4: Conversão de binário para decimal /* Funcao main, declaracoes, leitura do binario e inicializacoes */ int main () { binario bin; int i, n; printf ("Digite um numero binario: "); scanf ("%s", bin. valbinario); bin. valido = True; n = strlen (bin. valbinario); /* Verificacao da correcao do numero binario*/ for (i = 0; i < n && bin. valido == True; i++) if (bin. valbinario[i] != '0' && bin. valbinario[i] != '1') bin. valido = False; if (bin. valido == True) { valbinario valdecima l struct binario valido

Programa 8. 4: Conversão de binário para decimal /* Calculo do valor em decimal

Programa 8. 4: Conversão de binário para decimal /* Calculo do valor em decimal de um binario correto */ for (i = 0, bin. valdecimal = 0; i < n; i++) bin. valdecimal = 2*bin. valdecimal + (bin. valbinario[i] - '0'); printf ("nt(%s)2 = (%d)10", bin. valbinario, bin. valdecimal); Copiar, } /* Aviso de numero binario incorreto*/ salvar e executar else Digite um um numero binario: 100711 1001011 printf ("nt%s nao representa binario", bin. valbinario); (1001011)2 100711 nao eh = (75)10 um binario /* Encerramento do programa */ valdecima valido Digite valbinario algo para encerrar: l 1º exemplo de 2º printf ("nn"); struct binario resultado system ("pause");

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal n Método

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal n Método de conversão: seja o número (7504)8 a ser convertido para decimal n Inicialmente, o número convertido é zerado Digito Cálculo Valor decimal 0 (valor inicial) 7 0 x 8+7= 7 5 7 x 8+5= 61 0 61 x 8 + 0 = 488 4 488 x 8 + 4 = 3908 (Valor final)

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal #include <stdio.

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal #include <stdio. h> #include <stdlib. h> #include <string. h> /*Declaracoes do tipo logic e do tipo cadeia de caracteres*/ Completar, salvar e executar o seguinte programa à esquerda typedef char logic; const logic True = 1, False = 0; typedef char cadeia[30]; /*Declaracao da struct numero*/ typedef struct numero { cadeia valnabase; logic valido; }; numero; base valnabase int base, valdecimal; valdecima l struct numero valido

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal /*Funcao main,

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal /*Funcao main, declaracoes e leitura do numero e da base*/ int main () { numero num; int i, n; - - - - /* Verificacao da correcao da base e inicializacoes */ - - - - /* Verificacao da correcao do numero na base*/ - - - - valnabase valdecima l struct numero valido

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal /* Calculo

Exercício 8. 1: Conversão de bases de 2 a 9 para decimal /* Calculo do valor em decimal de um numero correto */ - - - - /* Aviso de numero incorreto*/ - - - - /* Encerramento do programa */ - - - - -; } valnabase valdecima l struct numero valido

Exercício 8. 2: Conversão de bases de 2 a 20 para decimal n Fazer

Exercício 8. 2: Conversão de bases de 2 a 20 para decimal n Fazer um programa semelhante ao do exercício anterior, ampliando a abrangência das bases para [2, 20] n Para bases acima de 10, aceitar apenas letras maiúsculas n Usar a mesma struct numero do exercício anterior typedef struct numero; struct numero { cadeia valnabase; int valnabase, valdecimal; base valdecima l logic valido; }; struct numero valido

Exercício do Lab 8: Somatória dos valores decimais de números e bases lidos n

Exercício do Lab 8: Somatória dos valores decimais de números e bases lidos n Ampliar o programa do exercício anterior para ler de um arquivo vários números e suas bases, e calcular a somatória em decimal dos números e bases que estiverem corretos n O número de pares [numero-base] deve ser lido do mesmo arquivo, antes da leitura desses pares n Antes da soma, cada par [número-base] lido deve ser armazenado num vetor de structs numero, mesmo se incorreto n Esse vetor deve ser um dos campos de outra struct;

Exercício do Lab 8: Somatória dos valores decimais de números e bases lidos n

Exercício do Lab 8: Somatória dos valores decimais de números e bases lidos n Cada par [numero, base] lido deve ser: − − − Testado Convertido para decimal, se estiver correto Armazenado no vetor de structs n Depois, deve ser realizada a somatória dos valores decimais dos números corretos do vetor n No final, devem ser escritos num outro arquivo todas as conversões, bem sucedidas ou não, registradas no vetor de structs numero e a somatória

Exemplo: Diagrama da struct com o vetor de structs numero: ntab Vet. Num valnabase

Exemplo: Diagrama da struct com o vetor de structs numero: ntab Vet. Num valnabase 101101101 2 365 V 423014 5 14134 V 42501 5 -1 F AB 3 K 12 -1 F AB 375 12 226889 V FFFF 16 65535 V FFGF 16 -1 F JJJJ 20 159999 V Tab. Num valdecimal 8 valido Seja o seguinte conteúdo do arquivo de entrada de dados: 8 101101101 423014 42501 AB 3 K AB 375 FFFF FFGF JJJJ 2 5 5 12 12 16 16 20

Exemplo: n Possíveis resultados no arquivo de saída: C O N V E R

Exemplo: n Possíveis resultados no arquivo de saída: C O N V E R S O E S D E B A S E S P A R A Foram realizadas 8 conversoes: (101101101)2 = (365)10 (423014)5 = (14134)10 (42501)5 = Dados incompativeis (AB 3 K)12 = Dados incompativeis (AB 375)12 = (226889)10 (FFFF)16 = (65535)10 (FFGF)16 = Dados incompativeis (JJJJ)20 = (159999)10 Somatoria dos numeros validos = (466922)10 A B A S E 10 Seja o seguinte conteúdo do arquivo de entrada de dados: 8 101101101 423014 42501 AB 3 K AB 375 FFFF FFGF JJJJ 2 5 5 12 12 16 16 20