Ir ao conteúdo

Posts recomendados

Postado

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 

  • Curtir 1
Postado

@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;
}

 

  • Curtir 1
Postado

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
Postado
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
Postado
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
Postado
#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.

  • Curtir 1
Postado
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
Postado

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.

  • Curtir 1
Postado
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
Postado
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

  • Curtir 1
Postado
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?

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!