A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VIII Cadeias de Caracteres."— Transcrição da apresentação:

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

2 Programa 8.1: Leitura e escrita de cadeias de caracteres #include #include void main () { char Cad1[10], Cad2[] = "abcde"; int i; printf ("Digite uma cadeia de caracteres:\n\n"); printf ("Digite uma cadeia de caracteres:\n\n"); scanf ("%s", Cad1); printf ("\nCad1 = %s", Cad1); printf ("\nCad2 = %s", Cad2); printf ("\n"); printf ("\n"); for (i = 0; i <= 9; i++) for (i = 0; i <= 9; i++) printf ("\n\tCad1[%d] = '%c' ou %d", i, Cad1[i], Cad1[i]); printf ("\n\tCad1[%d] = '%c' ou %d", i, Cad1[i], Cad1[i]); printf ("\n"); printf ("\n"); for (i = 0; i <= 5; i++) for (i = 0; i <= 5; i++) printf ("\n\tCad2[%d] = '%c' ou %d", i, Cad2[i], Cad2[i]); printf ("\n\tCad2[%d] = '%c' ou %d", i, Cad2[i], Cad2[i]); printf ("\n\nDigite algo para encerrar: "); getch (); getch ();} Copiar, salvar e executar ? 0 ? 1 ? 2 ? 3 ? 4 ? 5 Cad1 ???? 6789 a 0 b 1 c 2 d 3 e 45 Cad2 \0 Supor a digitação de \0 4 ? 5 Cad1 ???? 6789 Foi escrito: Cad1 = 1234 Cad2 = abcde Cuidado para não digitar mais que 9 caracteres para Cad1

3 Programa 8.2: O formato %s para leitura de cadeias de caracteres #include #include typedef char cadeia[20]; void main () { cadeia Cad1, Cad2; printf ("Digite uma frase:\n\n"); printf ("Digite uma frase:\n\n"); scanf ("%s%s", Cad1, Cad2); printf ("\nCad1 = %s", Cad1); printf ("\nCad2 = %s", Cad2); printf ("\n\nDigite algo para encerrar: "); getch (); getch ();} Copiar, salvar e executar Digite uma frase: gosto muito de CES-10 Cad1 = gosto Cad2 = 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 enter, ou tabulação

4 Programa 8.3: Comprimento de cadeias de caracteres #include #include typedef char cadeia[50]; void main () { cadeia Cad; printf ("Digite uma cadeia de caracteres:\n\n"); printf ("Digite uma cadeia de caracteres:\n\n"); scanf ("%s", Cad); printf ("\n\tComprimento (%s) = %d", Cad, strlen(Cad)); printf ("\n\nDigite algo para encerrar: "); getch (); getch ();} Copiar, salvar e executar Digite uma cadeia de caracteres: anticonstitucionalissimamente Comprimento (anticonstitucionalissimamente) = 29 Digite algo para encerrar Resultado de uma execução strlen retorna o n o de caracteres de uma cadeia, sem contar o \0

5 Programa 8.4: Vetor de cadeias de caracteres #include #include typedef char cadeia[21]; void main () { cadeia VetCadeia[30]; int i, n, Comprimento[30]; printf ("Armazenamento de cadeia de caracteres:\n\n"); printf ("Armazenamento de cadeia de caracteres:\n\n"); printf ("Armazenar quantas cadeias (maximo 30 cadeias)? "); printf ("Armazenar quantas cadeias (maximo 30 cadeias)? "); scanf ("%d", &n); scanf ("%d", &n); for (i = 0; i <= n-1; i++) { for (i = 0; i <= n-1; i++) { printf ("\nDigite uma cadeia (maximo 20 caracteres): "); printf ("\nDigite uma cadeia (maximo 20 caracteres): "); scanf ("%s", VetCadeia[i]); Comprimento[i] = strlen (VetCadeia[i]); Comprimento[i] = strlen (VetCadeia[i]); } printf ("\n\n%30s|%15s", "Cadeia", "Comprimento"); printf ("\n "); printf ("\n "); for (i = 0; i <= n-1; i++) for (i = 0; i <= n-1; i++) printf ("\n%30s|%15d", VetCadeia[i], Comprimento[i]); printf ("\n%30s|%15d", VetCadeia[i], Comprimento[i]); printf ("\n\nDigite algo para encerrar: "); getch (); } Copiar, salvar e executar Cadeias poderão ter no máximo 20 caracteres Vetor de no máximo 30 cadeias de caracteres Vetor com o comprimento das cadeias do vetor VetCadeia

6 Programa 8.5: a função gets #include #include void main ( ) { int i, n; char Frase[200]; printf ("Numero de frases: "); scanf ("%d", &n); printf ("\n"); for (i = 1; i <= n; i++) { printf ("\n\nDigite a %da frase: ", i); fflush (stdin); gets (Frase); fflush (stdin); gets (Frase); printf ("\n\tFrase digitada: %s", Frase); printf ("\n\tFrase digitada: %s", Frase);} printf ("\n\nDigite algo para encerrar: "); getch (); } A função fflush esvazia o buffer do teclado antes da chamada de gets A frase digitada poderá ter caracteres brancos e tabulações Copiar, salvar e executar

7 Programa 8.6: Conjuntos máximos de um arquivo Sejam as seguintes definições: Conjunto: sequência de caracteres imprimíveis não brancos, dentro de um arquivo-texto Conjunto: sequência de caracteres imprimíveis não brancos, dentro de um arquivo-texto Subconjunto de um dado conjunto: conjunto contido nesse dado conjunto Subconjunto de um dado conjunto: conjunto contido nesse dado conjunto Subconjunto próprio de um dado conjunto: subconjunto desse conjunto dado diferente do mesmo Subconjunto próprio de um dado conjunto: subconjunto desse conjunto dado diferente do mesmo Conjunto máximo: conjunto que não é subconjunto próprio de nenhum outro conjunto Conjunto máximo: conjunto que não é subconjunto próprio de nenhum outro conjunto

8 #include #include typedef char cadeia1[31], cadeia2[11]; void main ( ) { int x, n; cadeia1 ConjMax; cadeia1 ConjMax; cadeia2 FileName; cadeia2 FileName; FILE *arq; FILE *arq; printf ("Conjuntos maximos de um arquivo: "); printf ("\n\nDigite o nome do arquivo: "); scanf ("%s", FileName); scanf ("%s", FileName); arq = fopen (FileName, "r"); arq = fopen (FileName, "r"); n = 0; x = fscanf (arq, "%s", ConjMax); n = 0; x = fscanf (arq, "%s", ConjMax); while (x > 0) { while (x > 0) { printf ("\n%s", ConjMax); printf ("\n%s", ConjMax); n++; x = fscanf (arq, "%s", ConjMax); n++; x = fscanf (arq, "%s", ConjMax); } printf ("\n\nTotal: %d conjuntos maximos", n); printf ("\n\nTotal: %d conjuntos maximos", n); printf ("\n\nDigite algo para encerrar: "); getch (); } Criar um arquivo de nome arquivo01 com o seguinte conteúdo: &() b5FD ff123e ABGkJX Copiar, salvar e executar

9 Exercício 8.1: Vetor de conjuntos máximos Alterar o Programa 8.6 para que ele coloque todos os conjuntos máximos num vetor de cadeias de caracteres e os comprimentos desses conjuntos num vetor de inteiros Alterar o Programa 8.6 para que ele coloque todos os conjuntos máximos num vetor de cadeias de caracteres e os comprimentos desses conjuntos num vetor de inteiros Usar as seguintes declarações: Usar as seguintes declarações: cadeia1 VetCadeia[40]; int Comprimento[40]; Sendo a e b duas cadeias de caracteres, para copiar o conteúdo da cadeia b na cadeia a, usar: Sendo a e b duas cadeias de caracteres, para copiar o conteúdo da cadeia b na cadeia a, usar: strcpy (a, b); ao invés de a = b; A função strcpy está no arquivo string.h A função strcpy está no arquivo string.h No final, escrever o conteúdo do vetor VetCadeia, com cada cadeia ao lado de seu comprimento No final, escrever o conteúdo do vetor VetCadeia, com cada cadeia ao lado de seu comprimento strcpy (VetCadeia[i], ConjMax);

10 Exemplo de saída, usando como entrada o arquivo01: &() b5FD ff123e ABGkJX arquivo01 Conjuntos maximos de um arquivo: Digite o nome do arquivo: arquivo01 Total: 14 conjuntos maximos &() b5FD ff123e 6 ABGkJX Digite algo para encerrar: Saída no vídeo

11 Exercício 8.2: Alterar o programa do Exercício 8.1 para: Montar um vetor de nome VetBin, com os conjuntos máximos de VetCadeia que contenham apenas 0s e 1s Montar um vetor de nome VetBin, com os conjuntos máximos de VetCadeia que contenham apenas 0s e 1s Considerando tais conjuntos máximos como sendo números binários em complemento de 2, montar um vetor de nome Compl2 contendo o valor em decimal correspondente a cada um desses conjuntos máximos Considerando tais conjuntos máximos como sendo números binários em complemento de 2, montar um vetor de nome Compl2 contendo o valor em decimal correspondente a cada um desses conjuntos máximos No final, o programa deve escrever cada número binário em complemento de 2 ao lado do valor correspondente em decimal No final, o programa deve escrever cada número binário em complemento de 2 ao lado do valor correspondente em decimal Obs.: sendo A[i] = abcde, então A[i][0] = a; A[i][1] = b; A[i][2] = c; etc 0 = Compl-2 (0) e 1 = Compl-2 (-1)

12 Exemplo de saída, usando como entrada o arquivo01: Conjuntos maximos de um arquivo: Digite o nome do arquivo: arquivo01 Total: 14 conjuntos maximos &() &() b5FD4 6 1b5FD ff123e 6 ff123e 6 ABGkJX 6 ABGkJX numeros binarios 0 = compl-2 (0) 0 = compl-2 (0) = compl-2 (-13027) = compl-2 (-13027) = compl-2 (105) = compl-2 (105) 1 = compl-2 (-1) 1 = compl-2 (-1) 00 = compl-2 (0) 00 = compl-2 (0) 10 = compl-2 (-2) 10 = compl-2 (-2) Digite algo para encerrar:

13 Exercício 8.3: Alterar o programa do Exercício 8.2 para: Montar um vetor de nome VetDec com os conjuntos máximos de VetCadeia que contenham apenas dígitos decimais e não correspondam a números binários Montar um vetor de nome VetDec com os conjuntos máximos de VetCadeia que contenham apenas dígitos decimais e não correspondam a números binários Montar um vetor de números reais de nome Log10 tal que, se VetDec[i] tiver 9 ou menos dígitos, Log10[i] é o logaritmo na base 10 do número correspondente; senão, Log10[i] = -1 Montar um vetor de números reais de nome Log10 tal que, se VetDec[i] tiver 9 ou menos dígitos, Log10[i] é o logaritmo na base 10 do número correspondente; senão, Log10[i] = -1 No final, o programa deve escrever cada elemento do vetor VetDec ao lado do elemento correspondente no vetor Log10 No final, o programa deve escrever cada elemento do vetor VetDec ao lado do elemento correspondente no vetor Log10

14 Exemplo de saída, usando como entrada o arquivo01: 6 numeros binarios 0 = compl-2 (0) 0 = compl-2 (0) = compl-2 (-13027) = compl-2 (-13027) = compl-2 (105) = compl-2 (105) 1 = compl-2 (-1) 1 = compl-2 (-1) 00 = compl-2 (0) 00 = compl-2 (0) 10 = compl-2 (-2) 10 = compl-2 (-2) 4 numeros decimais 198 Log10 ( 198) = Log10 ( 198) = ***** Valor muito grande ***** ***** Valor muito grande ***** Log10 ( ) = Log10 ( ) = Log10 ( 98271) = Log10 ( 98271) = Digite algo para encerrar:

15 Exercício 8.4: Alterar o programa do Exercício 8.3 para: Montar um vetor de nome VetHexa com os conjuntos máximos de VetCadeia que contenham apenas dígitos hexadecimais e não correspondam a números binários Montar um vetor de nome VetHexa com os conjuntos máximos de VetCadeia que contenham apenas dígitos hexadecimais e não correspondam a números binários Montar um vetor de números inteiros de nome ValBase10 tal que, se VetHexa[i] tiver 7 ou menos dígitos, ValBase10[i] é o valor na base 10 do número correspondente; senão, ValBase10[i] = -1 Montar um vetor de números inteiros de nome ValBase10 tal que, se VetHexa[i] tiver 7 ou menos dígitos, ValBase10[i] é o valor na base 10 do número correspondente; senão, ValBase10[i] = -1 No final, o programa deve escrever cada elemento do vetor VetHexa ao lado do elemento correspondente no vetor ValBase10 No final, o programa deve escrever cada elemento do vetor VetHexa ao lado do elemento correspondente no vetor ValBase10

16 Exemplo de saída, usando como entrada o arquivo01: 6 numeros binarios 0 = compl-2 (0) 0 = compl-2 (0) = compl-2 (-13027) = compl-2 (-13027) = compl-2 (105) = compl-2 (105) 1 = compl-2 (-1) 1 = compl-2 (-1) 00 = compl-2 (0) 00 = compl-2 (0) 10 = compl-2 (-2) 10 = compl-2 (-2) 4 numeros decimais 198 Log10 ( 198) = Log10 ( 198) = ***** Valor muito grande ***** ***** Valor muito grande ***** Log10 ( ) = Log10 ( ) = Log10 ( 98271) = Log10 ( 98271) = numeros hexadecimais 198 = (408) = (408) ***** Valor muito grande ***** ***** Valor muito grande ***** 1b5FD4 = ( )10 1b5FD4 = ( ) ***** Valor muito grande ***** ***** Valor muito grande ***** ff123e = ( )10 ff123e = ( ) = (623217) = (623217)10 Digite algo para encerrar:


Carregar ppt "CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo VIII Cadeias de Caracteres."

Apresentações semelhantes


Anúncios Google