Ir ao conteúdo

Posts recomendados

Postado

Alguém pode me ajudar, por que ele não esta compilando?

É para um trabalho

 

#include <stdio.h> // Printf e Scanf
#include <stdlib.h> // System Pause
#include <string.h> // palavras
#include <math.h> // formulas

typedef struct lista{
	int info;
	struct lista *prox;
}Lista;

Lista *insere (Lista*l, int i){
	Lista *novo=(Lista*) malloc(sizeof(Lista));
	novo->info=i;
	novo->prox=l;
	return novo;
}

void imprime (Lista*l){
	Lista*p;
	for (p=l;p!=NULL;p=p->prox){
		printf ("| %d |",p->info);
	}
	printf (" \n");
}

Lista* ins_ordenado(Lista* L, int mat, char* nome, float nota)
{
Lista* p = L;
Lista ant = NULL;
Lista* novo = (Lista*)malloc(sizeof(Lista));
novo ->mat = mat;
strcpy(novo->nome, nome);
novo->media = nota;
novo->prox = NULL;
if (p==NULL) return novo;
while ((p!=NULL) && (novo->mat > p->mat))
{ ant = p; p = p->prox;}
if (ant == NULL) {novo->prox = p; return novo;}
novo ->prox = ant->prox;
ant->prox = novo;
return L;
}

Elemento* lst_cria (void)
{
 return NULL;
}

Lista* separa (Lista* l, int n) 
{
     Lista* p;   
     Lista* q;   

       for (p = l; p != NULL ; p = p->prox)

          if (p->info == n) 
          {
              q = p->prox; 
              p->prox = NULL; 
          return q;
          }
return NULL;
}

Lista* conecta (Lista*l,Lista*l2){
Lista *p,*q,
if (l1==NULL) return l2;
p=l1;
do { q=p;
p=p -> prox;
}
while (p!=NULL);
q-> prox=l2;
return l1;
}

Lista* transformar (int n, int* v)
{
Lista* p; 
Lista* q; 
int i;
q = NULL;
for(i=n-1; i>=0; i--)
{ p = (Lista*) malloc(sizeof(Lista));
p->prox = q;
p->info = v[i];
q = p;
}
return q;
}

Lista* retira_prefixo (Lista* l, int n)
{
Lista* p; 
Lista* q; 
int m = 1;
p = l;
while(p != NULL && m <= n)
{ m = m+1;
q = p->prox;
free(p);
p = q;
}
return p;
}

void opções (){
	printf ("Escolha a opcao\n");
	printf ("1 - Inserir Lista \n");
	printf ("2 - Imprimir lista\n");
	printf ("3 - Ordenar Lista\n");
	printf ("4 - Criar Lista \n");
	printf ("5 - Separar Lista \n");
    printf ("6 - Conectar Lista n");
    printf ("7 - Transformar Lista n");
	printf ("8 - Conectar Lista n");
	printf ("9 - Sair\n"); 
    printf ("Digite um valor: ");
		}

 

  • Curtir 1
Postado

@Cristian Kirsch Foesch    seu código está com muitos erros, seria melhor se você fizer aos poucos , uma função de cada vez e testa-la para ver se está funcionando bem e então fazer a outra,  e você não incluiu a função main pois sem ela nenhum código funciona e também as variáveis não podem ter acentos ou cedilha nem til , então apenas ajeitei seu código para ele compilar, então você vai verificando as funções uma a uma para acerta-las e seu código ficou assim :

#include <stdio.h> // Printf e Scanf
#include <stdlib.h> // System Pause
#include <string.h> // palavras
#include <math.h> // formulas
#include <conio.h>
int op;
typedef struct lista{
	int info;
	struct lista *prox;
}Lista;

Lista *insere (Lista*l, int i){
	Lista *novo=(Lista*) malloc(sizeof(Lista));
	novo->info=i;
	novo->prox=l;
	return novo;
}

void imprime (Lista*l){
	Lista*p;
	for (p=l;p!=NULL;p=p->prox){
		printf ("| %d |",p->info);
	}
	printf (" \n");
}

Lista* ins_ordenado(Lista* L, int mat, char* nome, float nota)
{
Lista* p = L;
/*Lista ant = NULL;*/
Lista* novo = (Lista*)malloc(sizeof(Lista));
/*novo ->mat = mat;*/
/*strcpy(novo->nome, nome);*/
/*novo->media = nota;*/
novo->prox = NULL;
if (p==NULL) return novo;
/*while (/*(p!=NULL) && (novo->mat > p->mat))
{ ant = p; p = p->prox;}
if (ant == NULL) {novo->prox = p; return novo;}
novo ->prox = ant->prox;
ant->prox = novo;
return L;*/
}

/*Elemento* lst_cria (void)
{
 return NULL;
}*/

Lista* separa (Lista* l, int n)
{
     Lista* p;
     Lista* q;

       for (p = l; p != NULL ; p = p->prox)

          if (p->info == n)
          {
              q = p->prox;
              p->prox = NULL;
          return q;
          }
return NULL;
}

/*Lista* conecta (Lista*l,Lista*l2){
Lista *p,*q,*/
/*if (l1==NULL) return l2;*/
/*p=l1;
do { q=p;
p=p -> prox;
}
while (p!=NULL);
q-> prox=l2;
return l1;
}*/

/*Lista* transformar (int n, int* v)
{
Lista* p;
Lista* q;
int i;
q = NULL;
for(i=n-1; i>=0; i--)
{ p = (Lista*) malloc(sizeof(Lista));
p->prox = q;
p->info = v[i];
q = p;
}
return q;
}*/

/*Lista* retira_prefixo (Lista* l, int n)
{
Lista* p;
Lista* q;
int m = 1;
p = l;
while(p != NULL && m <= n)
{ m = m+1;
q = p->prox;
free(p);
p = q;
}
return p;
}*/

void opções (){
	printf ("Escolha a opcao\n");
	printf ("1 - Inserir Lista \n");
	printf ("2 - Imprimir lista\n");
	printf ("3 - Ordenar Lista\n");
	printf ("4 - Criar Lista \n");
	printf ("5 - Separar Lista \n");
    printf ("6 - Conectar Lista \n");
    printf ("7 - Transformar Lista \n");
	printf ("8 - Conectar Lista \n");
	printf ("9 - Sair\n");
    printf ("Digite um valor: ");
    scanf("%d",&op);
}
int main(){
    opções();
    printf("\nVoce Digitou %d.      Tecle !\n\n",op);
    getch();
    return 0;
}

 

  • Curtir 1
Postado

@devair1010 Eu tenho esse código aqui que fiz agora que ele compila mas quando eu vou realizar alguma função ele fecha, pode me ajudar, acho que esta com menos erros

 

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

typedef struct lista{
	int info;
	struct lista *prox;
 }Lista;

Lista *cria(){
	return NULL;
}


Lista* insere_ordenado (Lista*l, int v){
    Lista* novo = cria ();
    Lista* ant = NULL;
    Lista* p = l;
while (p!=NULL && p->info < v){
	ant=p;
	p=p->prox;
}
if(ant==NULL){
	novo->prox=l;
	l=novo;
}
else {
	novo->prox= ant->prox;
	ant->prox=novo;
}
return l;
}

Lista *conecta(Lista* l1, Lista *l2){
	lista*p,*q;
	
if(l1=NULL) return l2;
	p=l1;
do{q=p;
	p=p->prox;
	}
while(p!=NULL);
	q->prox=l2;
	
return l1;
}

Lista *separa(Lista*l,int n){
	lista *p, *q;
	
	for(p=l;p!=NULL;p=p->prox)
	   if(p->info==n){
	   	q=p->prox=NULL;
	   }
	return q; 
}
   
Lista* constroi (int n,int* v){
	Lista*p;
	Lista*q;
	int i;
	q=NULL;
for(i=n-1;i<=0;i--)
{p=(Lista*)malloc(sizeof(Lista));
	p->prox=q;
	p->info=v[i];
	q=p;
}
return q;
}

Lista* retira_prefixo (Lista* l, int n) {
	Lista* p;
	Lista* q;
	int m=1;
	p=l;
	while (p != NULL && m<=n) {
		m=m+1;
		q=p->prox;
		free(p);
		p=q;
		}
		return p;
}

void opções (){
	printf ("Escolha a opcao\n");
	printf ("1 - Inserir um dado\n");
	printf ("2 - Conecta listas \n");
	printf ("3 - Separa listas\n ");
	printf ("4 - Retirar um Elemento\n");
	printf ("5 - Insere Ordenado\n");
	printf ("6 - Sair\n");
	printf ("Digite um valor fora da lista para repetir o menu\n");
}

main ()
{
	Lista *l,*l1,*l2=NULL, *ret;	
	int op, a, x, v;	
	opções ();
	scanf ("%d",&op);

	while (op!=6){
		switch (op){
		case 1:
			printf ("Digite o valor\n");	
			scanf ("%d",&a);
			l=insere_ordenado(l,a);
		break;
		case 2:printf ("Digite o valor da lista 1\n");	
			   scanf ("%d",&a);
	    	l1=insere_ordenado(l,a);
		printf ("Digite o valor da lista 2 \n");	
		scanf ("%d",&a);
		 	l2=insere_ordenado(l,a);
		l=conecta (l1,l2); break;
		case 3: printf ("Digite o valor aonde voce quer separar a lista\n");	
			scanf ("%d",&a);
		l=separa (l,a); break;
		case 4: 
			printf ("Informe o valor para remover da lista\n");
			scanf ("%d",&v);
			ret=retira_prefixo (l,v);break;
		case 5:printf ("Informe o valor para remover da lista\n");
			scanf ("%d",&v); 
		l=insere_ordenado (l,v);break;
		default: printf ("\nOpcao invalida\n\n");
			opções();
		}
	printf ("\nInforme a opcao\n");
	scanf ("%d",&op);
}
system ("pause");	
} 

 

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