Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Yago Henrique Rebello

C DEV C++ arquivo.exe parou de funcionar

Recommended Posts

Postado (editado)

Pessoal Estou fazendo um trabalho e quando vou rodar ele só vai ate a parte de cadastrar e depois fala que o arquivo parou de funcionar .

Alguém por favor me ajuda !!!

Preciso disso pra amanha de manha, desde já agradeço 

 

 

 

#include <stdio.h>
#include <string.h>

#define N 3


int Le_Vetores(char cnpj[N][19],char atividade[N][13], int consumo[N]){
	int num = 0;
	
	do{
	
	num++;
	
	printf("Digite o cnpj: ");
	fflush(stdin);
	gets(cnpj[num]);

	
	printf("Digite a atividade economica:");
	printf("\n Agronegocio \n Industria \n Tecnologia \n Comercio \n ");
	fflush(stdin);
	gets(atividade[num]);

	
	printf("Consumo de rede de dados (GB): \n");
	scanf("%d",&consumo[num]);

		
	}while(num != N);
	
	return num;
}
char Consumo_Superior_500(char cnpj[N][19],char atividade[N][13], int consumo[N],int num){
	char cnpj_500[N][19];
	int *cont = 0, i = 0;
	
	
	do{
	if(strcmpi(atividade[i],"agronegocio")==0 && consumo[i]>500){
	
	cnpj_500[i][19] = cnpj[i][19];
	
	(*cont)++;

	}
		i++;	
	}while(i != num);
	
	return cnpj_500[N][19];
}

void Maior_Menor_Consumo(int consumo[N], int num,int *pos_maior,int *pos_menor) {
	int i;
	
	for(i = 0; i<num; i++){
			if (consumo[i] < consumo[*pos_maior]){	
			*pos_maior=i;
			}
			if (consumo[i] > consumo[*pos_menor]){
			*pos_menor=i;
			}
	}
}
void Exibe_cnpj(char cnpj_500[N][19], int cont){
	
	printf("clientes com consumo superior a 500: \n");
	int i;
	for(i=0;i<cont;i++)
	{
		
	}
	
}

int main(){
	char cnpj[N][19];
	char atividade[N][13]; 
	char cnpj_500[N][19];
	int num;
	int cont;
	int consumo[N];
	int pos_maior;
	int pos_menor;
	
	num=Le_Vetores(cnpj,atividade,consumo);
	
	cnpj_500[N][19] = Consumo_Superior_500(cnpj,atividade,consumo,num);

	Maior_Menor_Consumo(consumo,num,&pos_maior,&pos_menor);

	printf("Maior consumo: %d", pos_maior);
	printf("Menor consumo: %d", pos_menor);	

	Exibe_cnpj(cnpj_500, cont);
	
	
}

Pessoal Estou fazendo um trabalho e quando vou rodar ele só vai ate a parte de cadastrar e depois fala que o arquivo parou de funcionar .

Alguém por favor me ajuda !!!

Preciso disso pra amanha de manha, desde já agradeço 

Editado por Yago Henrique Rebello
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Yago Henrique Rebello    para postar seu código é melhor usar o botão  <>   que está lá na barra de ferramentas da janela de responder pois senão seu código fica faltando alguns caracteres como os [ i ]  que sumiram do seu código , e ele está dando erro por que você esqueceu de colocar as posições dos vetores na hora de comparar ,  lá na função consumo_maior_500 , então seu código com algumas modificações ficaria assim :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#define N 3
using namespace std;
int Le_Vetores(char cnpj[N][19],char atividade[N][13], int consumo[N]){
    int num = 0;
    do{
        printf("Digite o cnpj: ");
        fflush(stdin);
        gets(cnpj[num]);
        printf("Digite a atividade economica:");
        printf("\n Agronegocio \n Industria \n Tecnologia \n Comercio \n ");
        fflush(stdin);
        gets(atividade[num]);
        printf("Consumo de rede de dados (GB): \n");
        scanf("%d",&consumo[num]);
        num++;
    }while(num != N);
    return num;
}
char Consumo_Superior_500(char cnpj[N][19],char atividade[N][13], int consumo[N],int num){
    char cnpj_500[N][19];
    int *cont = 0, i = 0;
    do{
        if(atividade[i]=="agronegocio"){
            cnpj_500[i][19] = cnpj[i][19];
            (*cont)++;
        }
        i++;
    }while(i != num);
    return cnpj_500[N][19];
}
void Maior_Menor_Consumo(int consumo[N], int num,int *pos_maior,int *pos_menor) {
    int i;
    for(i = 0; i<num; i++){
            if (consumo[i] < consumo[*pos_maior]){
            *pos_maior=i;
            }
            if (consumo[i] > consumo[*pos_menor]){
            *pos_menor=i;
            }
    }
}
void Exibe_cnpj(char cnpj_500[N][19], int cont){
    printf("clientes com consumo superior a 500: \n");
    int i;
    for(i=0;i<cont;i++)
    {

    }
}
int main(){
    char cnpj[N][19];
    char atividade[N][13];
    char cnpj_500[N][19];
    int num;
    int cont;
    int consumo[N];
    int pos_maior;
    int pos_menor;
    num=Le_Vetores(cnpj,atividade,consumo);
    cnpj_500[N][19] = Consumo_Superior_500(cnpj,atividade,consumo,num);
    Maior_Menor_Consumo(consumo,num,&pos_maior,&pos_menor);
    printf("Maior consumo: %d\n", pos_maior);
    printf("Menor consumo: %d\n", pos_menor);
    Exibe_cnpj(cnpj_500, cont);
    system("pause");
    return 0;
}

 

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu código apresenta diversos problemas. Os mais fáceis de corrigir:

  • uso de `fflush(stdin)`: usar `fflush` em um `stdin` é comportamento indefinido.
  • uso de `gets()`: função extremamente perigosa. Qualquer compilador decente manda um aviso crítico ao usá-la. Pode substituí-la pela `scanf()`, a qual não é nenhuma maravilha, mas é muito melhor.
  • Há um ponteiro `cont` apontando para números, que não são endereços válidos de memória. Nesse mesmo trecho de código, a função deveria retornar caractere mas está retornando algo que não deveria, já que cnpj é um ponteiro para ponteiro de caracteres.


 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, devair1010 disse:

@Yago Henrique Rebello    para postar seu código é melhor usar o botão  <>   que está lá na barra de ferramentas da janela de responder pois senão seu código fica faltando alguns caracteres como os [ i ]  que sumiram do seu código , e ele está dando erro por que você esqueceu de colocar as posições dos vetores na hora de comparar ,  lá na função consumo_maior_500 , então seu código com algumas modificações ficaria assim :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
using namespace std;
int Le_Vetores(char cnpj[N][19],char atividade[N][13], int consumo[N]){
    int num = 0;
    do{
        printf("Digite o cnpj: ");
        fflush(stdin);
        gets(cnpj[num]);
        printf("Digite a atividade economica:");
        printf("\n Agronegocio \n Industria \n Tecnologia \n Comercio \n ");
        fflush(stdin);
        gets(atividade[num]);
        printf("Consumo de rede de dados (GB): \n");
        scanf("%d",&consumo[num]);
        num++;
    }while(num != N);
    return num;
}
char Consumo_Superior_500(char cnpj[N][19],char atividade[N][13], int consumo[N],int num){
    char cnpj_500[N][19];
    int *cont = 0, i = 0;
    do{
        if(atividade[i]=="agronegocio"){
            cnpj_500[i][19] = cnpj[i][19];
            (*cont)++;
        }
        i++;
    }while(i != num);
    return cnpj_500[N][19];
}
void Maior_Menor_Consumo(int consumo[N], int num,int *pos_maior,int *pos_menor) {
    int i;
    for(i = 0; i<num; i++){
            if (consumo[i] < consumo[*pos_maior]){
            *pos_maior=i;
            }
            if (consumo[i] > consumo[*pos_menor]){
            *pos_menor=i;
            }
    }
}
void Exibe_cnpj(char cnpj_500[N][19], int cont){
    printf("clientes com consumo superior a 500: \n");
    int i;
    for(i=0;i<cont;i++)
    {

    }
}
int main(){
    char cnpj[N][19];
    char atividade[N][13];
    char cnpj_500[N][19];
    int num;
    int cont;
    int consumo[N];
    int pos_maior;
    int pos_menor;
    num=Le_Vetores(cnpj,atividade,consumo);
    cnpj_500[N][19] = Consumo_Superior_500(cnpj,atividade,consumo,num);
    Maior_Menor_Consumo(consumo,num,&pos_maior,&pos_menor);
    printf("Maior consumo: %d\n", pos_maior);
    printf("Menor consumo: %d\n", pos_menor);
    Exibe_cnpj(cnpj_500, cont);
    system("pause");
    return 0;
}

 

Amigo quando coloco o código que você mandou no dev c++ ele não reconhece using namespace std e quando eu tiro e rodo ele continua dando o mesmo problema 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Yago Henrique Rebello    qual versão do seu dev c++ você está usando ?  por que aqui na versão 4.9.9.2 está rodando normal veja o print dele rodando  :

5b022af8b0580_devc.thumb.png.38b2a348ae75cc7b7a7f5b19f2e4fb40.png

 e ele só faz o cadastro por que o código que você fez só faz isso mesmo  .

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 Ele está provavelmente fazendo um programa em C e não em C++.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Davi Silva Santos    mas no dev c++ todo código é da linguagem c++ .  apesar de que ele roda os código da linguagem c também .

Editado por devair1010
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, devair1010 disse:

@Yago Henrique Rebello    qual versão do seu dev c++ você está usando ?  por que aqui na versão 4.9.9.2 está rodando normal veja o print dele rodando  :

5b022af8b0580_devc.thumb.png.38b2a348ae75cc7b7a7f5b19f2e4fb40.png

 e ele só faz o cadastro por que o código que você fez só faz isso mesmo  .

O meu é a versão 5.11 e o programa teria que exibir os clientes com consumo superior a 500 e é nessa parte que ele trava 

adicionado 1 minuto depois
3 minutos atrás, Davi Silva Santos disse:

@devair1010 Ele está provavelmente fazendo um programa em C e não em C++.

Isso é em C

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Você colocou um loop infinito no Exibe_cnpj. E o @devair1010 consertou vários erros do seu código.

Editado por Charl
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Charl disse:

Você colocou um loop infinito no Exibe_cnpj.

se eu colocar isso dentro do for ajuda :

 

printf("Cliente: %c", cnpj_500);

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Yago Henrique Rebello @Yago Henrique Rebello   então seu dev c++ está com uma configuração diferente do normal    ,  experimente outro compilador   como o code blocks da versão 16.01  que é bem melhor do que esse dev c++.  e que com certeza vai funcionar bem  .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
int Le_Vetores(char cnpj[N][19],char atividade[N][13], int consumo[N]){
    int num = 0;
    do{
        printf("Digite o cnpj: ");
        fflush(stdin);
        gets(cnpj[num]);
        printf("Digite a atividade economica:");
        printf("\n Agronegocio \n Industria \n Tecnologia \n Comercio \n ");
        fflush(stdin);
        gets(atividade[num]);
        printf("Consumo de rede de dados (GB): \n");
        scanf("%d",&consumo[num]);
        num++;
    }while(num != N);
    return num;
}
char Consumo_Superior_500(char cnpj[N][19],char atividade[N][13], int consumo[N],int num){
    char cnpj_500[N][19];
    int *cont = 0, i = 0;
    do{
        if(atividade[i]=="agronegocio"){
            cnpj_500[i][19] = cnpj[i][19];
            (*cont)++;
        }
        i++;
    }while(i != num);
    return cnpj_500[N][19];
}
void Maior_Menor_Consumo(int consumo[N], int num,int *pos_maior,int *pos_menor) {
    int i;
    for(i = 0; i<num; i++){
            if (consumo[i] > consumo[*pos_maior]){
            *pos_maior=i;
            }
            if (consumo[i] < consumo[*pos_menor]){
            *pos_menor=i;
            }
    }
}
void Exibe_cnpj(char cnpj_500[N][19], int cont){
    printf("clientes com consumo superior a 500: \n");
    int i;
    for(i=0;i<cont;i++)
    {

    }
}
int main(){
    char cnpj[N][19];
    char atividade[N][13];
    char cnpj_500[N][19];
    int num;
    int cont;
    int consumo[1];
    int pos_maior = 0;
    int pos_menor = 0;
    num=Le_Vetores(cnpj,atividade,consumo);
    cnpj_500[N][19] = Consumo_Superior_500(cnpj,atividade,consumo,num);
    Maior_Menor_Consumo(consumo,num,&pos_maior,&pos_menor);
    printf("Maior consumo: %d\n", pos_maior);
    printf("Menor consumo: %d\n", pos_menor);
    Exibe_cnpj(cnpj_500, cont);
    system("pause");
    return 0;
}

Testa ai esse código. Se der certo depois digo as modificações que eu fiz.

Editado por Charl
Um pequeno erro consertado
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, Charl disse:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
int Le_Vetores(char cnpj[N][19],char atividade[N][13], int consumo[N]){
    int num = 0;
    do{
        printf("Digite o cnpj: ");
        fflush(stdin);
        gets(cnpj[num]);
        printf("Digite a atividade economica:");
        printf("\n Agronegocio \n Industria \n Tecnologia \n Comercio \n ");
        fflush(stdin);
        gets(atividade[num]);
        printf("Consumo de rede de dados (GB): \n");
        scanf("%d",&consumo[num]);
        num++;
    }while(num != N);
    return num;
}
char Consumo_Superior_500(char cnpj[N][19],char atividade[N][13], int consumo[N],int num){
    char cnpj_500[N][19];
    int *cont = 0, i = 0;
    do{
        if(atividade[i]=="agronegocio"){
            cnpj_500[i][19] = cnpj[i][19];
            (*cont)++;
        }
        i++;
    }while(i != num);
    return cnpj_500[N][19];
}
void Maior_Menor_Consumo(int consumo[N], int num,int *pos_maior,int *pos_menor) {
    int i;
    for(i = 0; i<num; i++){
    		printf("\nValor do i %d\n", i);
            if (consumo[i] > consumo[*pos_maior]){
            *pos_maior=i;
            }
            if (consumo[i] < consumo[*pos_menor]){
            *pos_menor=i;
            }
    }
}
void Exibe_cnpj(char cnpj_500[N][19], int cont){
    printf("clientes com consumo superior a 500: \n");
    int i;
    for(i=0;i<cont;i++)
    {

    }
}
int main(){
    char cnpj[N][19];
    char atividade[N][13];
    char cnpj_500[N][19];
    int num;
    int cont;
    int consumo[1];
    int pos_maior = 0;
    int pos_menor = 0;
    num=Le_Vetores(cnpj,atividade,consumo);
    cnpj_500[N][19] = Consumo_Superior_500(cnpj,atividade,consumo,num);
    Maior_Menor_Consumo(consumo,num,&pos_maior,&pos_menor);
    printf("Maior consumo: %d\n", pos_maior);
    printf("Menor consumo: %d\n", pos_menor);
    Exibe_cnpj(cnpj_500, cont);
    system("pause");
    return 0;
}

Testa ai esse código. Se der certo depois digo as modificações que eu fiz.

Foi sim 

O que eu circulei em vermelho ele teria que mostrar quantos clientes tiveram mais que 500 o que não estou conseguindo fazer 

 

e o que foi circulado em laranja eu nao sei o que.

teste2.png

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Foi mal, é que para testar coloquei printf, mas já editei o código sem esse valor do i, é só copiar e colar. A modificação que eu fiz foi iniciar a pos_maior e pos_menor, toda variável antes do primeiro uso deveria ser inicializada. Também inverti o sinal do método Maior_Menor_Consumo.

Para fazer isso dai você tem que fazer um IF comparando se é maior de quê 500 lá no FOR.

Editado por Charl
Texto Confuso
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 minutos atrás, Charl disse:

Foi mal, é que para testar coloquei printf, mas já editei o código sem esse valor do i, é só copiar e colar. A modificação que eu fiz foi iniciar a pos_maior e pos_menor, toda variável antes do primeiro uso deveria ser inicializada. Também inverti o sinal do método Maior_Menor_Consumo, para fazer isso dai você tem que fazer um IF comparando se é maior de quê 500 lá no FOR.

No for do Exibir_cnpj?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, lá mesmo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
7 minutos atrás, Charl disse:

Sim, lá mesmo.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 2
int Le_Vetores(char cnpj[N][19],char atividade[N][13], int consumo[N]){
    int num = 0;
    do{
        printf("Digite o cnpj: ");
        fflush(stdin);
        gets(cnpj[num]);
        printf("Digite a atividade economica:");
        printf("\n Agronegocio \n Industria \n Tecnologia \n Comercio \n ");
        fflush(stdin);
        gets(atividade[num]);
        printf("Consumo de rede de dados (GB): \n");
        scanf("%d",&consumo[num]);
        num++;
    }while(num != N);
    return num;
}
char Consumo_Superior_500(char cnpj[N][19],char atividade[N][13], int consumo[N],int num){
    char cnpj_500[N][19];
    int *cont = 0, i = 0;
    do{
        if(atividade[i]=="agronegocio"){
            cnpj_500[i][19] = cnpj[i][19];
            (*cont)++;
        }
        i++;
    }while(i != num);
    return cnpj_500[N][19];
}
void Maior_Menor_Consumo(int consumo[N], int num,int *pos_maior,int *pos_menor) {
    int i;
    for(i = 0; i<num; i++){
    		
            if (consumo[i] > consumo[*pos_maior]){
            *pos_maior=i;
            }
            if (consumo[i] < consumo[*pos_menor]){
            *pos_menor=i;
            }
    }
}
void Exibe_cnpj(char cnpj_500[N][19], int cont,char cnpj[N][19],int consumo[N]){
   
    int i;
    for(i=0;i<cont;i++)
    {
 		if(consumo[i]>500){
            cnpj_500[i][19] = cnpj[i][19];
             printf("clientes com consumo superior a 500: \n",cnpj[N][19]);
             cont++;
        }
        i++;
    }
}
int main(){
    char cnpj[N][19];
    char atividade[N][13];
    char cnpj_500[N][19];
    int num;
    int cont;
    int consumo[1];
    int pos_maior = 0;
    int pos_menor = 0;
    num=Le_Vetores(cnpj,atividade,consumo);
    cnpj_500[N][19] = Consumo_Superior_500(cnpj,atividade,consumo,num);
    Maior_Menor_Consumo(consumo,num,&pos_maior,&pos_menor);
    printf("Maior consumo: %d\n", pos_maior);
    printf("Menor consumo: %d\n", pos_menor);
    Exibe_cnpj(cnpj_500, cont,cnpj,consumo);
    system("pause");
    return 0;
}

 

 

Ficaria assim? porque se for mesmo assim nao esta indo

Editado por Yago Henrique Rebello
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
11 minutos atrás, Yago Henrique Rebello disse:

cnpj_500[19] = cnpj[19];

Erro aqui que o @devair1010 tinha consertado:

 

1 hora atrás, devair1010 disse:

cnpj_500[i][19] = cnpj[i][19];

Seria bom checar o código do devair1010. Ou copia o último código que eu enviei e tenta fazer as alterações.

 

E em que parte do código você armazena os valores que são maiores que 500? E você concorda que para achar os valores maior e imprimir precisa do IF comparando se é maior do que 500?

Editado por Charl
Informação
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×