Ir ao conteúdo
  • Cadastre-se

C++ funções soma, par e impar filas


Visitante

Posts recomendados

typedef struct lista{
    int info;
    struct lista *seguinte;
}TLista;

typedef struct fila{
    TLista *inicio;
    TLista *final;
    
}TFila;

TFila* inicializa(){
    TFila *f = (TFila*) malloc(sizeof(TFila));
    f->inicio = f->final = NULL;
    return f;
}

int vazia(TFila *f){
    if(f->inicio == NULL)
	    return 1;
    else
	    return 0;
}

 TFila* insere (TFila *f, int elem){
    TLista *novo = (TLista*)malloc(sizeof(TLista));
    novo->info = elem;
    novo->seguinte = NULL;
    
    if(f->final){
        f->final->seguinte= novo;
    }
    f->final = novo;
    if(!f->inicio){
        f->inicio = novo;
    }
}

int retira(TFila *f){
    if(vazia(f))
        return 0;
    int elem = f->inicio->info;
    TLista *a = f->inicio;
    f->inicio = f->inicio->seguinte;
    if(f->inicio == NULL){
        f->final = NULL;
    }
	    free(a);
    return elem;
}

void libera(TFila *f){
    TLista *q = f->inicio;
    TLista *a;
    while(q){
        a = q;
        q = q->seguinte;
        free(a);
    }
    free(f);
}

int soma_positivo(TFila *f){
	if(vazia(f))
		return 0;
	TFila* insere (TFila *f, int elem);
	int i,elem,soma=0;
	for(i=0;i<elem;i++){
		soma=soma+i;
	}
	printf("\nA soma eh %d",soma);
	return soma;
}
void separa_filas(TFila* f, TFila* par, TFila* impar){
	if(vazia(f))
	return;
}

 

O que está errado na minha função soma? E porque ela imprime um valor aleatório no main?

Como eu faço a separação das filas em par e impar?

Link para o comentário
Compartilhar em outros sites

#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 

#define tamanho 5 

struct tfila {  
int dados[tamanho];  
int ini;  
int fim;  
};


struct tfila fila; 
int op,cont=0;

//Protipação 
void fila_entrar(); 
void fila_sair(); 
void fila_mostrar(); 
void menu_mostrar(); 
void somaparimpar();


int main(){  
setlocale(LC_ALL, "Portuguese");      
	op = 1;    
	fila.ini = 0;  
	fila.fim = 0;  
	
	while (op != 0) {    
	system("cls");      
	fila_mostrar();    
	menu_mostrar(); 
	
	scanf("%d", &op);    
		switch (op) {      
		case 1:        
		fila_entrar();      
		break;
		case 2:        
		fila_sair();      
		break; 
		case 3:
		somaparimpar();
		break;   
		}        
	}    
	return(0); 
	}
//Adicionar um elemento no final da Fila 
	void fila_entrar(){  
		if (fila.fim == tamanho) {    
		printf("\nA fila está cheia, volte outro dia!\n\n");              
		system("pause");        
		}    
		else {        
		printf("\nDigite o valor a ser inserido: ");            
		scanf("%d", &fila.dados[fila.fim]);      
		fila.fim++;
		cont++;    
	}  
}

		//Retirar o primeiro elemento da Fila 
		void fila_sair() {  
		if (fila.ini == fila.fim) {    
		printf("\nFila vazia, mas logo aparece alguém!\n\n");              
		system("pause");        
		}   
		else {    
		int i;      
		for (i = 0; i < tamanho; i++) {      
		fila.dados[i] = fila.dados[i+1];              
		}      
		fila.dados[fila.fim] = 0;    
		fila.fim--; 
		cont--; 
		}  
	}
	
//Mostrar o conteúdo da Fila 
		void fila_mostrar() {  
		int i;    
		printf("[  ");         
 		for (i = 0; i < tamanho; i++) {   
  		printf("%d  ", fila.dados[i]);           
  		 }  
   		printf("]\n\n");        
   	}
   	
   	//soma elementos da fila mostra par e impar 
		void somaparimpar() {  
		int i,soma=0;           
 		for (i = 0; i < tamanho; i++) 
  		soma+= fila.dados[i];         
   		printf("a soma da fila é %d\n",soma); 
		for (i = 0; i < cont; i++)
		if (fila.dados[i]%2==1) 
		printf("impar: %d \n",fila.dados[i]);
		else
		printf("par: %d \n",fila.dados[i]);
		system("pause");
   	}
   
//Mostrar o menu de opções 
	void menu_mostrar() {  
	printf("\nEscolha uma opção:\n");          
	printf("1 - Incluir na Fila\n");              
	printf("2 - Excluir da Fila\n"); 
	printf("3 - Soma Par e Impar\n");             
	printf("0 - Sair\n\n");          
	}

 

Link para o comentário
Compartilhar em outros sites

int soma_positivo(TFila *f){
	if(vazia(f))
		return 0;
	TFila* insere (TFila *f, int elem);
	int i,elem,soma=0;
	for(i=0;i<elem;i++){
		soma=soma+i;
	}
	printf("\nA soma eh %d",soma);
	return soma;
}

O que pretende fazer com a 4 linha? Declarou algo ali?  Qual a lógica de soma_positivo? Os elementos não deveriam vir a fila?

 

Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!