Ir ao conteúdo
  • Cadastre-se

Vetor pascal


Visitante: abenevi80

Posts recomendados

Visitante: abenevi80
 

Galera, fiz esse programa em c, vocês por favor poderiam confirmar se está certo, e como ficaria em pascal?

Escreva um programa que leia uma linha de caracteres do teclado e imprima quantas vezes um caracter, também fornecido pelo teclado, aparece nesta linha. O programa também deve imprimir em que posições o caracter foi encontrado.

#include <stdio.h>

#include <conio.h>

int contachar(char *texto, char letra){

int cont=0;

for (int i=0; texto!='\0';i++){

if (texto==letra){

cont++;

}

}

return cont;

}

void posicao(char *texto, char letra, int *p){

int z=0;

for (int j=0; texto[j]!='\0';j++){

if (texto[j]==letra)

p[z]=j;

else

p[z]=-1;

z++;

}

}

void main(){

char texto[80],letra;

int t, *p;

clrscr();

puts("digite um texto:");

gets(texto);

printf("digite uma letra:");

scanf("%c", &letra);

t=contachar(texto,letra);

posicao(texto, letra, p);

for (int j=0; texto[j]!='\0';j++){

if(p[j]>-1)

printf("posicao: %d\n",p[j]);

}

printf("O numero de vezes que a letra %c aparece e: %d",letra,t);

getch();

}

Link para o comentário
Compartilhar em outros sites

Visitante: pahduarte
 

Olá.

Testei seu programa usando o PellesC, que é grátis, compila no padrão C99 (o qual eu recomendo fortemente que você aprenda e use!).

Não deu certo!!!!

1 - Você usou conio.h. Este arquivo não existe em toda implementação do C.

2 - Logo as funções nele presentes não funcionarão.

3 - Na sua função principal você declarou o seguinte:

void main()
{


char texto[80], letra;


int t, *p;
etc

e logo em seguida usou p como argumento em uma função:


posicao(texto, letra, p);

Acontece que p é um apontador (ou ponteiro ou pointer, como eu prefiro chamar). Apontadores devem ser inicializados! O que isso significa? Devem apontar para algum lugar válido na memória, senão o seu programa vai ler/executar/escrever em um lugar da memória que não existe e produzirá uma exceção. Então ele pára de funcionar, como foi o caso.

Você está em uso de um vetor. Basta declarar p como um vetor (ou array), assim:


int p[80] = {0};

Com isto em C99 você inicializa todos os elementos do vetor para 0. Sendo ele uma variável local, isto é importante, pois elimina o lixo que fica na memória, dentro da qual, a pilha do processador trabalha.

Outro detalhe, como disse ao longo do texto, aprenda C99. Se quiser mandar um e-mail para mim, posso indicar ótimos livros para você ler (se lê em inglês). Em português encontrei pouca coisa, apesar de procurar muito.

Obs.: Fiz a correção na sua variável p e seu programa funcionou muito bem.

Cordiais saudações,

Paulo

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!