Ir ao conteúdo
  • Cadastre-se

problema em c no dev c++


jrfr2111

Posts recomendados

olá galera estou estudando um livro de algoritmos estruturados e comecei a aplicar os códigos em c no dev c++, e quando compilo um programa que lê uma sequencia de valores e acha um valor especifico nessa sequencia ele compila só que não executa como esperado.Aqui está o código:

 

#include <stdio.h>
#include <stdlib.h>
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
 
int main(int argc, char *argv[]) {
//variaveis
int z,j,n,v,i,h,k;
//vetores
int b[z],a[n];
//entrada de dados
k=0;
printf("Quantos numeros possui a sequencia:\n");
scanf("%d",&n);
printf("digite a sequencia:\n");
for(i=1;i<=n;i++){
printf("digite o numero da posicao %d\n",i);
scanf("%d",&a);
}
printf("entre com o valor a ser procurado:\n");
scanf("%d",&v);
//resolvendo problemas da procura
z=0;
if(b[1]=v){
b[1]--;
}
//procedimento de procura
for(j=1;j<=n;j++){
if(a[j]==v){
z++;
k++;
b[j]=j;
}
}
//saida de dados
if(k!=0){
printf("foram encontrados %d desse numero\n",z);
printf("O numero se encontra nas posições:\n");
}
for(h=1;h<=z;h++){
if(k==0){
printf("o numero nao se encontra na sequencia!\n");
}
else{
printf("%d  ",b[h]);
}
}
printf("\n");
system("PAUSE");
return 0;
}
 
obs.:creio que o problema seja com o compilador se for qual outro posso usar(que compreenda algoritmos avançados e aceite uma variavel dentro de um vetor.
Link para o comentário
Compartilhar em outros sites

Olá!

 

 

Olha sou iniciante em C, não sei se já conseguiu resolver o problema, mas acho que posso lhe ajudar . . .

 

A unica modificação que tive de fazer aqui por hora foi - int z = 0; int n = 0;

 

O ideal quando se declara as variaveis em C, é de que elas sempre sejam iniciadas com algum valor mesmo que 0, antes de serem usadas e da forma que você declarou as suas variaveis você não as iniciou, e pelo menos inicialmente separe uma variavel para cada tarefa e só depois quando já tiver uma boa estruturação de como o algoritmo realmente funciona, ai sim você pode tentar usar a mesma variavel em duas tarefas diferentes, pois você usa a variavel i para o laço for e como contador para a posição do numero, mas já vi gente tendo problemas ao fazer isso.

 

E da forma como você declarou os seus vetores, embora funcione acredito que está seja uma forma perigosa de se fazer, tenho certeza de que existe o modo correto, mas por hora não o aprendi, mas da forma como você fez o ideal seria que os valores  de z e n, fosse iniciados antes de você declarar ou mesmo usar o seu vetor, ou mesmo que o tamanho do vetor fosse definido logo na sua declaração ex: int n[10]; int z[10];

 

 

- apenas com as dicas, pelo menos aqui o codigo parece funcionar!

 

 

Dê uma olhada neste post que apresenta o uso de um vetor de forma similar a sua:

 

http://forum.clubedohardware.com.br/forums/topic/1125097-ajuda-no-algoritmo/#entry6185490

 

 

Com relação ao compilador e a IDE, lhe aconselho a instalar:

 

 

- O compilador GNU GCC http://tdm-gcc.tdragon.net/

 

- A IDE CodeBlocks 13.12  http://www.codeblocks.org/

 

 

pois, infelizmente o Dev - C++ é um projeto que foi descontinuado e que embora tenham tentado revive-lo:

 

http://orwelldevcpp.blogspot.com.br/ - ainda assim lhe aconselho os dois acima:

 

 

Bom por hora é isso . . .

 

 

Ubuntu 14.04  GNU GCC 4.8  CodeBlocks  13.12

 

 

Espero Ter Ajudado ! ! !

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Hm , agora entendi o problema do seu código. Quando você tenta comparar as posições e tem duas ou mais com o mesmo valor o seu programa fica doido e exibe posições negativas... O problema que causa isso eu não achei no seu código pois ele tem um monte de variáveis e rotinas desnecessárias...

 

Como também sou iniciante e adoro fazer algoritmos, tomei o seu projeto como desafio e refiz totalmente o teu código (de forma muito mais simples e compreensível)...  aqui está....

#include <stdlib.h>#include <stdio.h>/*Criado por Leandro Alves (Heiisenberg) do Clube do Hardware dedicado ao membro jrfr2111*/int n_sequencia,numero,n_desejado,j;int posicao[];int main(){		printf("Quantas numeros tem a sequencia: ");	scanf("%i",&n_sequencia);	printf("\n");		for(numero=1;numero<=n_sequencia;numero++){			printf("> Digite o numero da posicao %i: ",numero);	scanf("%i",&posicao[numero]);				}		printf("\nQual valor deseja procurar? ");	scanf("%i",&n_desejado);		for(numero=1;numero<=n_sequencia;numero+=1){				if(n_desejado == posicao[numero]){					j=1;		printf("\nPosicao %i = %i",numero,n_desejado);							}			}		if(j!=1){			printf("\nNenhum numero com esse valor foi encontrado");				}		printf("\n\n");	system("pause");}
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...