-
Posts
12 -
Cadastrado em
-
Última visita
Reputação
9-
C Codigo de lista não compila
Cristian Kirsch Foesch respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
@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"); } -
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: "); }
-
Galera eu quero preencher uma struct usando o scanf logo antes de digitar o ano para descobrir o semestre, e imprimir junto com o resultado (aprovado ou reprovado), mas não estou conseguindo, alguem pode ajudar? Gratidão /*seminario Comandos = if, switch Funções = soma, troca Vetores e tipo construído Como criar e preencher estrutura*/ #include <stdio.h> #include <stdlib.h> typedef struct{ //Tentativa de criar e preencher a struct char Nome; }Nome; float media (int n, float *vnotas); //Declarando a função media int main (void) { float vnotas[4]; int semestre; float media_notas; int i; for (i = 0; i < 4; i++) //Leitura das medias { printf("Digite os valores das notas: "); scanf("%f", &vnotas[i]); } printf("Digite o ano de ingresso para saber em que semestre o aluno esta:\n"); scanf("%d", &semestre); if(semestre <2017){ printf("error 404\n"); printf("Semestre inserido invalido\n"); } switch( semestre ){ case 2017 : printf("O aluno esta no Segundo semestre\n"); break; case 2018 : printf("O aluno esta no Primeiro semestre\n"); break; } //Chamada da função media_notas = media(4,vnotas); printf ( "\nMedia = %.1f \n", media_notas ); // Se a media for maior que 7, imprime que o aluno esta aprovado if(media_notas >=7){ printf("Aluno Aprovado\n"); printf("O aluno pode prosseguir para o proximo semestre\n");} // Se a media for menor que 7, imprime que o aluno esta repovado else{ printf("Aluno Reprovado\n"); printf("O aluno deve refazer a materia ou fazer a resolucao\n\n");} system("pause"); return 0; } /*Função para cálculo da média Parâmetros: Recebe a quantidade de elementos n Recebe o endereço inicial do vetor notas em *vnotas Retorno: Retorna a media na variavel m */ float media (int n, float *vnotas) { int i; //Realiza a soma das notas float m = 0, soma = 0; for (i = 0; i < n; i++) soma = soma + vnotas[i]; //Realiza a divisão das notas pelo numero de elementos m = soma / n; //Retorna a media return m; } Nome SetNome(char Nome){ printf("Digite o nome do Aluno\n"); scanf("%c", &Nome); }
-
C Como uma fazer struct
Cristian Kirsch Foesch respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
Sim sim ja corrigi, mas o que esta causando o erro, e como faco para imprimir junto com o resultado -
Pessoal estou tentando criar uma struct que le o nome do aluno, e o imprime junto com o resultado final que é aprovado ou reprovado mas esta dando erro. /*seminario Comandos = if, switch Funções = soma, troca Vetores e tipo construído Como criar e preencher estrutura*/ #include <stdio.h> #include <stdlib.h> typedef struct{ //Tentativa de criar e preencher a struct float Nome; }Nome; Nome SetNome(float Nome){ printf("Digite o nome do Aluno\n"); scanf("%f", &Nome); } float media (int n, float *vnotas); //Declarando a função media int main (void) { float vnotas[4]; int semestre; float media_notas; int i; for (i = 0; i < 4; i++) //Leitura das medias { printf("Digite os valores das notas: "); scanf("%f", &vnotas[i]); } printf("Digite o ano de ingresso para saber em que semestre o aluno esta:\n"); scanf("%d", &semestre); if(semestre <2017){ printf("error 404\n"); printf("Semestre inserido invalido\n"); } switch( semestre ){ case 2017 : printf("O aluno esta no Segundo semestre\n"); break; case 2018 : printf("O aluno esta no Primeiro semestre\n"); break; } //Chamada da função media_notas = media(4,vnotas); printf ( "\nMedia = %.1f \n", media_notas ); // Se a media for maior que 7, imprime que o aluno esta aprovado if(media_notas >=7){ printf("Aluno Aprovado\n"); printf("O aluno pode prosseguir para o proximo semestre\n");} // Se a media for menor que 7, imprime que o aluno esta repovado else{ printf("Aluno Reprovado\n"); printf("O aluno deve refazer a materia ou fazer a resolucao\n\n");} system("pause"); return 0; } /*Função para cálculo da média Parâmetros: Recebe a quantidade de elementos n Recebe o endereço inicial do vetor notas em *vnotas Retorno: Retorna a media na variavel m */ float media (int n, float *vnotas) { int i; //Realiza a soma das notas float m = 0, soma = 0; } for (i = 0; i < n; i++) soma = soma + vnotas[i]; //Realiza a divisão das notas pelo numero de elementos m = soma / n; //Retorna a media return m; }
-
Pessoal gostaria de saber se é possivel transformar meu vetor vnotas[4] em uma struct /*seminario Comandos = if, switch Funções = soma, troca Vetores e tipo construído Como criar e preencher estrutura*/ #include <stdio.h> #include <stdlib.h> float media (int n, float *vnotas); //Declarando a função media int main (void) { float vnotas[4]; int semestre; float media_notas; int i; for (i = 0; i < 4; i++) //Leitura das medias { printf("Digite os valores das notas: "); scanf("%f", &vnotas); } printf("Digite o ano de ingresso para saber em que semestre o aluno esta:\n"); scanf("%d", &semestre); if(semestre <2017){ printf("error 404\n"); printf("Semestre inserido invalido\n"); } switch( semestre ){ case 2017 : printf("O aluno esta no Segundo semestre\n"); break; case 2018 : printf("O aluno esta no Primeiro semestre\n"); break; } //Chamada da função media_notas = media(4,vnotas); printf ( "\nMedia = %.1f \n", media_notas ); // Se a media for maior que 7, imprime que o aluno esta aprovado if(media_notas >=7){ printf("Aluno Aprovado\n"); printf("O aluno pode prosseguir para o proximo semestre\n");} // Se a media for menor que 7, imprime que o aluno esta repovado else{ printf("Aluno Reprovado\n"); printf("O aluno deve refazer a materia ou fazer a resolucao\n\n");} system("pause"); return 0; } /*Função para cálculo da média Parâmetros: Recebe a quantidade de elementos n Recebe o endereço inicial do vetor notas em *vnotas Retorno: Retorna a media na variavel m */ float media (int n, float *vnotas) { int i; //Realiza a soma das notas float m = 0, soma = 0; for (i = 0; i < n; i++) soma = soma + vnotas; //Realiza a divisão das notas pelo numero de elementos m = soma / n; //Retorna a media return m; }
-
C Função troca e preenchimento de estrutura
Cristian Kirsch Foesch respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
E teria como eu transformar esse vetor em uma struct? -
C Função troca e preenchimento de estrutura
Cristian Kirsch Foesch respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
Exato estou falando de struct adicionado 7 minutos depois E na verdade o que eu mais preciso é de uma função troca -
Galera estou fazendo esse codigo para a faculdade e precisso fazer uma função de troca, e criar e preencher uma estrutura. Não sei se ja não criei e preenchi uma estrutura se sim por gentileza mostre onde. E gostaria de uma função de troca que seja util nesse codigo. Gratidão /*seminario Comandos = if, switch Funções = soma, troca Vetores e tipo construído Como criar e preencher estrutura*/ #include <stdio.h> #include <stdlib.h> float media (int n, float *vnotas); //Declarando a função media int main (void) { float vnotas[4]; int semestre; float media_notas; int i; for (i = 0; i < 4; i++) //Leitura das medias { printf("Digite os valores das notas: "); scanf("%f", &vnotas); } printf("Digite o ano de ingresso para saber em que semestre o aluno esta:\n"); scanf("%d", &semestre); if(semestre <2017){ printf("error 404\n"); printf("Semestre inserido invalido\n"); } switch( semestre ){ case 2017 : printf("O aluno esta no Segundo semestre\n"); break; case 2018 : printf("O aluno esta no Primeiro semestre\n"); break; } //Chamada da função media_notas = media(4,vnotas); printf ( "\nMedia = %.1f \n", media_notas ); // Se a media for maior que 7, imprime que o aluno esta aprovado if(media_notas >=7){ printf("Aluno Aprovado\n"); printf("O aluno pode prosseguir para o proximo semestre\n");} // Se a media for menor que 7, imprime que o aluno esta repovado else{ printf("Aluno Reprovado\n"); printf("O aluno deve refazer a materia ou fazer a resolucao\n\n");} system("pause"); return 0; } /*Função para cálculo da média Parâmetros: Recebe a quantidade de elementos n Recebe o endereço inicial do vetor notas em *vnotas Retorno: Retorna a media na variavel m */ float media (int n, float *vnotas) { int i; //Realiza a soma das notas float m = 0, soma = 0; for (i = 0; i < n; i++) soma = soma + vnotas; //Realiza a divisão das notas pelo numero de elementos m = soma / n; //Retorna a media return m; }
-
C expected primary-expression before ' ' token?
Cristian Kirsch Foesch respondeu ao tópico de Cristian Kirsch Foesch em C/C#/C++
Opa valeu ai cara -
Galera estou fazendo um codigo e ele esta dando erro neste case, alguem pode ajudar? EU gostaria que caso fosse inserido um numero menor que 2017 ele imprimisse error 404 obs: tem que usar o case
-
Galera seguinte, eu sei que não é o objetivo do forum, mas estou a algum tempo sem programar e preciso fazer um trabalho em C com os seguintes "comandos" nele Comandos = if, switch Funções = soma, troca Vetores e tipo construído Como criar e preencher estrutura
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