Fazer os seguintes programas:
ATENÇÃO: Não use funções da biblioteca de strings do C!
a -> b b -> c c -> d ... z -> a
Soluções da Lista de Exercícios no. 3
/******************************************************************************* Autor : Sidney Batista Filho Data : 28/09/2002 Descricao : versao 1 - Usando gets() ******************************************************************************/ #include <stdio.h> #define MAXCARAC 80 #define TAM MAXCARAC + 1 //um caracter a mais para o '\0'. int main() { char linha[TAM]; int cont; printf("Programa para verificar quantos caracteres foram digitados.\n" "Usando gets() para obter a linha.\n\n"); printf("Entre com uma linha de ate' %d caracteres. " "Pressione <ENTER> para finalizar\n", MAXCARAC); gets(linha); cont = 0; while(linha[cont] != '\0') { cont++; } puts("Linha lida = "); puts(linha); printf("Foram digitados %d caracteres.\n", cont); return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 28/09/2002 Descricao : versao 2 - Usando getchar(). E' testado se a entrada de dados e' valida. ******************************************************************************/ #include <stdio.h> #define MAXCARAC 80 #define TAM MAXCARAC + 1 //um caracter a mais para o '\0'. int main() { char linha[TAM]; int cont; printf("Programa para verificar quantos caracteres foram digitados.\n" "Usando getchar() para obter a linha.\n\n"); printf("Entre com uma linha de ate' %d caracteres. " "Pressione <ENTER> para finalizar\n", MAXCARAC); cont = 0; while( (cont < TAM) && ((linha[cont] = getchar()) != 10) ) { printf("\nDebug: linha[%d] = %d\n", cont, linha[cont]); cont++; } printf("\nDebug: linha[%d] = %d\n", cont, linha[cont]); if (cont == TAM) { printf("Entrada Invalida! Foram digitados mais de %d caracteres\n", MAXCARAC); } else { linha[cont] = '\0'; puts("Linha lida = "); puts(linha); printf("Foram digitados %d caracteres.\n", cont); } return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 28/09/2002 Descricao : versao 3 - Usando getche(). E' testado se a entrada de dados e' valida. ******************************************************************************/ #include <stdio.h> #include <conio.h> #define MAXCARAC 80 #define TAM MAXCARAC + 1 //um caracter a mais para o '\0'. int main() { char linha[TAM]; int cont; printf("Programa para verificar quantos caracteres foram digitados.\n" "Usando getche() para obter a linha.\n\n"); printf("Entre com uma linha de ate' %d caracteres. " "Pressione <ENTER> para finalizar\n", MAXCARAC); cont = 0; while( (cont < TAM) && ((linha[cont] = getche()) != 13) ) { printf("\nDebug: linha[%d] = %d\n", cont, linha[cont]); cont++; } printf("\nDebug: linha[%d] = %d\n", cont, linha[cont]); if (cont == TAM) { printf("Entrada Invalida! Foram digitados mais de %d caracteres\n", MAXCARAC); } else { linha[cont] = '\0'; puts("Linha lida = "); puts(linha); printf("Foram digitados %d caracteres.\n", cont); } return 0; }
/******************************************************************************* Autor : Adriano Joaquim de Oliveira Cruz Data : 24/04/1997 Descricao : versao 1 ******************************************************************************/ /* Bibliotecas usadas pelo programa */ #include <stdio.h> /* Definicoes */ #define DIM 80 int main ( ) { char linha[DIM + 1]; /* linha de caracteres */ char ch; /* caracter a ser procurado */ unsigned int pos=0, /* posicao do caracter */ conta=0; /* contador de vezes que o caracter apareceu */ puts("Entre com um linha de caracteres.\n"); gets(linha); printf("\nEntre com um caracter para ser procurado. "); scanf("%c", &ch); do { printf("pos = %d\n", pos); if (linha[pos] == ch) { printf("O caracter %c foi encontrado na posicao %d.\n", ch, pos); conta++; } } while (linha[++pos] != '\0'); if (conta) printf("O caracter %c foi encontrado %d vezes.\n", ch, conta); else printf("O caracter %c nao foi encontrado.\n",ch); return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 22/09/2002 Descricao : versao 2 ******************************************************************************/ #include <stdio.h> #define MAXCARAC 4 #define TAM MAXCARAC + 1 int main() { char linha[TAM]; char caracter; int pos[TAM]; int i, cont; printf("Digite uma sequencia de ate' %d caracteres:\n", MAXCARAC); gets(linha); printf("Digite um caracter a ser buscado na sequencia digitada:\n"); scanf("%c", &caracter); cont = 0; for (i = 0; (i < TAM) && (linha[i] != '\0'); i++) { if (linha[i] == caracter) { pos[cont] = i; cont++; } } printf("O caracter '%c' aparece %d vezes.\n", caracter, cont); if (cont > 0) { printf("Nas posicoes: "); for (i = 0; i < cont; i++) { printf("%d ", pos[i]); } } return 0; }
/******************************************************************************* Autor : Adriano Joaquim de Oliveira Cruz Data : 10/05/1997 ******************************************************************************/ /* Definicoes */ #define DIM 80 #define VERDADE 1 #define FALSO 0 #define NAO ! /* Bibliotecas usadas pelo programa */ #include <stdio.h> #include <string.h> int main ( ) { char palavra[3]; char linha[DIM]; /* linha de caracteres */ unsigned int pos=0; /* posicao do caracter */ puts("Entre com um linha de caracteres.\n"); gets(linha); printf("\nEntre com uma palavra para ser procurada na linha. "); gets(palavra); do { if (linha[pos] == palavra[0]) { puts("pos 0 igual"); if (linha[pos+1] == palavra[1]) { printf("A palavra %s foi encontradan na posicao %d.\n", palavra, pos); } } } while (linha[++pos] != '\0'); return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 26/09/2002 ******************************************************************************/ #include <stdio.h> #define MAXCARAC 40 #define TAM MAXCARAC + 1 int main ( ) { char linha[TAM]; int i, cont; char c; puts("Entre com uma linha de caracteres:"); gets(linha); cont = 0; puts("Foram encontradas as vogais:"); for (i = 0; (i < TAM) && (linha[i] != '\0'); i++) { c = linha[i]; if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u') ){ cont++; printf("%c ", c); } } printf("\n"); if (i == TAM) { printf("Entrada invalida! Foram digitados mais de %d caracteres\n", MAXCARAC); } else if (cont == 0) { puts("Nenhuma."); } else { printf("Foram encontradas %d vogais\n", cont); } return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 26/09/2002 ******************************************************************************/ #include <stdio.h> #define MAXCARAC 40 #define TAM MAXCARAC + 1 int main ( ) { char linha[TAM]; int i; puts("Entre com uma linha de caracteres (letra minuscula):"); gets(linha); for (i = 0; (i < TAM) && (linha[i] != '\0'); i++) { if (linha[i] == 'z') { linha[i] = 'a'; } else { linha[i] = linha[i] + 1; } } puts("Linha transformada:"); puts(linha); return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 27/09/2002 ******************************************************************************/ #include <stdio.h> #define MAXCARAC 80 #define TAM MAXCARAC + 1 int main ( ) { char frase[TAM]; char novaFrase[TAM]; int i, j; puts("Entre com uma frase com ate' 80 caracteres:"); gets(frase); for (i = j = 0; (i < TAM) && (frase[i] != '\0'); i++) { if (frase[i] != ' ') { novaFrase[j] = frase[i]; j++; } } puts("Nova frase:"); puts(novaFrase); return 0; }
/******************************************************************************* Autor : Adriano Joaquim de Oliveira Cruz Data : 24/04/1997 ******************************************************************************/ /* Definicoes */ #define DIM 3 #define VERDADE 1 #define FALSO 0 #define NAO ! /* Bibliotecas usadas pelo programa */ #include <stdio.h> #include <ctype.h> #include <conio.h> int main ( ) { char velha[DIM][DIM]; /* linha de caracteres */ unsigned int i, j; int linha; char ch; printf("Entre com a matriz a ser verificada.\n"); for (i=0; i<DIM; i++){ for (j=0; j<DIM; j++){ printf("\nEntre com o elemento %d %d ", i, j); velha[i][j] = getche(); } } printf("\nQuer verificar 0 ou X? "); ch = getchar(); for (i=0; i<DIM; i++){ for (j=0; j<DIM; j++){ printf("%c ", velha[i][j]); } printf("\n"); } for (i=0; i<DIM; i++){ linha = VERDADE; for (j=0; j<DIM; j++){ if (velha[i][j] != ch) linha = FALSO; } if (linha) printf("A linha %d so contem %c.\n", i+1, ch); } return 0; }
/******************************************************************************* Autor : Adriano Joaquim de Oliveira Cruz Data : 24/04/1997 ******************************************************************************/ #include<stdio.h> #include<conio.h> #define DIM 8 int main(){ int vetor[DIM]; int pos, i, ultimo; int valor; clrscr(); do { printf("Quantos elementos ?"); scanf("%d", &ultimo); } while (ultimo > DIM); for (i=0; i<ultimo; i++){ printf("Valor %d ? ", i); scanf("%d", &vetor[i]); } do { printf("Qual posicao? "); scanf("%d", &pos); } while (pos > ultimo); printf("Qual valor ? "); scanf("%d", &valor); printf("Antes da insercao\n"); for (i=0; i<ultimo; i++) printf("Valor %d = %d \n", i, vetor[i]); for (i=ultimo-1; i>= pos; i--) vetor[i+1] = vetor[i]; ultimo++; vetor[pos] = valor; printf("Depois da insercao\n"); for (i=0; i<ultimo; i++) printf("Valor %d = %d \n", i, vetor[i]); getch(); return 0; }
/******************************************************************************* Autor : Liviu Gabriel Anghel Data : 15/05/2002 ******************************************************************************/ /* Bibliotecas usadas pelo programa */ #include <stdio.h> #define MAX 31 int main() { char str[MAX], copia[MAX]; int i, compstr; printf("\n\nEntre com uma string (max 30 caracteres): "); gets(str); /* Determina o comprimento da string atraves de um for sem conteudo : ao final dele, compstr contem a posicao do '\0' da string*/ for(compstr=0; str[compstr]; compstr++); /* Inverte a string */ for(i=0; str[i]; i++) { copia[i] = str[compstr-i-1]; /* Linha em destaque */ } copia[i] = '\0'; /* coloca um finalizador na string */ printf("\n\nString Invertida: %s\n", copia); return 0; }
/******************************************************************************* Autor : Sidney Batista Filho Data : 27/09/2002 ******************************************************************************/ #include <stdio.h> #define ORDEM 3 int main ( ) { double a[ORDEM][ORDEM]; double b[ORDEM][ORDEM]; double produto[ORDEM][ORDEM]; int i, j, k; printf("Calcular o produto de duas matrizes de ordem %d\n\n", ORDEM); puts("Entre com os elementos da matriz a:"); for (i = 0; i < ORDEM; i++) { for (j = 0; j < ORDEM; j++) { printf("Elemento [%d][%d] = ", i, j); scanf("%lf", &(a[i][j]) ); //Atencao: usar "%lf" para ler double } } puts("Entre com os elementos da matriz b:"); for (i = 0; i < ORDEM; i++) { for (j = 0; j < ORDEM; j++) { printf("Elemento [%d][%d] = ", i, j); scanf("%lf", &b[i][j]); } } //calcular o produto for (i = 0; i < ORDEM; i++) { for (j = 0; j < ORDEM; j++) { produto[i][j] = 0.0; for (k = 0; k < ORDEM; k++) { produto[i][j] += a[i][k] * b[k][j]; } } } //exibir matriz a puts("A matriz a e':"); for (i = 0; i < ORDEM; i++) { for (j = 0; j < ORDEM; j++) { printf("%10.2f ", a[i][j]); } printf("\n"); } //exibir matriz b puts("A matriz b e':"); for (i = 0; i < ORDEM; i++) { for (j = 0; j < ORDEM; j++) { printf("%10.2f ", b[i][j]); } printf("\n"); } //exibir o produto puts("O produto e':"); for (i = 0; i < ORDEM; i++) { for (j = 0; j < ORDEM; j++) { printf("%10.2f ", produto[i][j]); } printf("\n"); } return 0; }
Por © Sidney Batista Filho - 05/06/2003