-
Posts
10 -
Cadastrado em
-
Última visita
Reputação
7-
Tenho que fazer esse programa: mas eu acho q a logica esta certa, so que to tendo alguns problemas na sintaxe. alguem poderia me dar uma luz? Faça um programa para preenchimento de uma lista encadeada de produtos (código, nome e preço), utilizando como base as funções apresentadas. Você deve apresentar ao usuário um menu com as seguintes opções: 1- Inserir produto 2- Exibir todos os produtos 3- Buscar um produto pelo código 4- Remover um produto 5- Sair <CODE> #include <stdio.h> #include <stdlib.h> #include <string.h > typedef struct produto{ int cod; float preco; char nome[10]; struct no *prox; }produto; int op; produto prod; produto *inicioL; void cria_lista () { inicioL = NULL; } int lista_vazia () { if (inicioL== NULL) return 1; return 0; } produto* cria_prod (int cod, float preco, char *nome){ produto *aux; aux = (produto*) malloc(sizeof(produto)); if (aux!=NULL){ aux->cod= cod; aux->preco= preco; strcpy(aux->nome,nome); aux->prox=NULL; } return aux; } void inserirProd (int cod, float preco, char *nome){ produto* aux; aux = cria_prod (cod, preco, nome); aux->prox= inicioL; inicioL = aux; } void exibir (){ produto *aux; aux = inicioL; while (aux!=NULL){ printf("%d", aux->cod); printf("%f", aux->preco); printf("%c", aux->nome); aux = aux->prox; } } void buscarProd (int cod){ produto *aux; aux = inicioL; while (aux!=NULL){ printf("%d", aux->cod); aux = aux->prox; } } void remover (int cod){ produto* ant = NULL; produto* aux = inicioL; if(!listaVazia()){ while(aux!=NULL) && (aux->cod!=cod){ ant= aux; aux = aux->prox; } if (aux==NULL){ printf("Produto nao encontrado!"); } else{ if(ant==NULL) inicioL= aux->prox; else ant->prox=aux->prox; free(aux); } } else{ printf("Nao tem produtos cadastrados!"); } int main(){ printf ("1-Inserir produto \n2-Exibir todos os produtos \n3-Buscar um produto pelo código \n4-Remover um produto\n5-Sair"); printf("\n\nDigite sua opcao!"); scanf("%d", &op); switch (op){ case 1: printf("Informe o nome do produto: "); fflush(stdin); gets(prod.nome); printf("Informe o preco do produto: "); scanf ("%d", &prod.preco); printf("Informe o codigo do produto:"); scanf ("%d", &prod.cod); inserirProd (int cod, float preco, char nome); break; case 2: exibir (); break; case 3: buscarProd (int cod); break; case 4: printf("Qual produto deseja remover?"); scanf("%d", &cod); remover (int cod); break; case 5: printf("Saindo..."); default : printf ("Opcao invalida!\n"); } }
-
muito obrigado gente!! realmente eu estava printando sem copiar os vetores, por isso no terceiro vetor tava dando uma coisa estranha
-
To com duvida nesse exercicio da faculdade. Nao to conseguindo fazer esse terceiro vetor, ta imprimindo um valor errado, n sei se a solução esta certa também Faça um programa que crie e preencha dois vetores dinâmicos, de números inteiros, com tamanhos estipulados pelo usuário. Após a leitura dos dois vetores, o programa deve criar um terceiro vetor, dinamicamente, que tenha um tamanho para permitir a união dos dois vetores inicialmente criados. Faça essa união e exiba o vetor resultante. <CODE> #include <stdlib.h> #include <stdio.h> int main (){ int *v,*v2,*vF; int qtde,i,qtde2,qtdeF; printf("Informe o tamanho do primeiro vetor: "); scanf("%d", &qtde); v = (int*) malloc(qtde*sizeof(int)); if(v==NULL){ printf("Nao foi possivel alocar espaco!"); exit(0); } for (i=0; i<qtde;i++){ printf("Informe um numero: "); scanf("%d", &v[i]); } for (i=0;i<qtde;i++){ printf("%d", v[i]); } printf("\n Informe o tamanho do segundo vetor: "); scanf("%d", &qtde2); v2 = (int*) malloc(qtde2*sizeof(int)); if(v2==NULL){ printf("Nao foi possivel alocar espaco!"); exit(0); } for (i=0; i<qtde2;i++){ printf("Informe um numero: "); scanf("%d", &v2[i]); } for (i=0;i<qtde2;i++){ printf("%d", v2[i]); } qtdeF = qtde + qtde2; vF = (int*) malloc(qtdeF*sizeof(int)); if(vF==NULL){ printf("Nao foi possivel alocar espaco!"); exit(0); } printf("\n Vetor final\n"); for (i=0;i<qtdeF;i++){ printf("%d", vF[i]); } }
-
C Exercicio Lista em C - inserir elementos em determinada posicao
Victor Vilardo respondeu ao tópico de Victor Vilardo em C/C#/C++
@mauro_b é sim, é da minha faculdade. to tentando resolver aqui com as orientações do post -
C Exercicio Lista em C - inserir elementos em determinada posicao
Victor Vilardo postou um tópico em C/C#/C++
Entao... eu tenho que fazer a implementação um procedimento para inserir um item em uma determinada posição da lista. Ja tenho a função de inserir, remover, buscar, mas de inserir em uma determinada posição eu to travado. Eu sei o que tenho que fazer... Que é inserir na posição que eu quero, e pegar os elementos que estão la e arrastar pra direita. Mas nao to conseguindo passar isso pro codigo <CODE> #include <stdio.h> #include <stdlib.h> #define M 100 void inserePosicao (int pos, int *n, int *L) { int i, pos; if (pos>0 && pos <=M) if (pos==0) inserir(x,&n, L); else //...... } int buscarSeq( int x, int n, int *L) { int i=0; while (i<= n){ if (L[i] == x) { return i; } i++; } return -1; } void inserir(int x, int *n, int *L){ if (*n < M-1) { if (buscarSeq(x,*n,L) == -1){ *n = (*n)+1; L[*n]=x; } else printf("\nElemento j? existe\n"); } else printf("\nLista cheia!\n"); } void remover(int x, int *n, int *L){ int i, indice; if (*n >= 0) { indice= buscarSeq(x,*n,L); if (indice != -1){ for (i=indice; i<*n; i++) L[i]=L[i+1]; (*n)--; } else printf("\nElemento n?o existe\n"); } else printf("\nLista vazia!\n"); } void imprimir(int n, int *L){ int i; if (n>=0){ printf("\nIMPRESS?O DA LISTA\n"); for(i=0; i<=n;i++){ printf("%d ",L[i]); } printf("\n"); } else{ printf("\nLista vazia!\n"); } } int main(){ int L[M]; int n=-1, op,x, pos; do{ system("cls"); printf("\nMenu de op??es - Lista Sequencial\n"); printf("1- Inserir valor\n"); printf("2- Buscar por um valor\n"); printf("3- Remover um valor\n"); printf("4- Exibir a lista\n"); printf("5- Sair\n"); printf ("6- Inserir posicao"); printf("Informe sua op??o: "); scanf("%d", &op); switch(op){ case 1:{ printf("Informe o valor a ser inserido na lista: "); scanf("%d",&x); inserir(x,&n, L); break; } case 2:{ int res; printf("Informe o valor a ser encontrado na lista: "); scanf("%d",&x); res = buscarSeq(x,n,L); if(res==-1){ printf("\nO valor n?o foi encontrado na lista!\n"); } else{ printf("\nO valor %d foi encontrado na posi??o %d da lista\n",L[res], res); } break; } case 3:{ printf("Informe o valor a ser removido da lista: "); scanf("%d",&x); remover(x, &n, L); break; } case 4:{ imprimir(n, L); break; } case 5:{ printf("\nFinalizando o programa\n"); break; } case 6:{ printf("Em que posicao [de 1 a %d] voce deseja inserir : ", M); scanf("%d",&pos); inserePosicao (pos,L); } default:{ printf("\nOp??o inv?lida!\n"); break; } } system("Pause"); }while(op!=5); } -
caramba kkk nao acredito que esqueci algo estão simples muito obrigado
-
Gente eu tenho que fazer uma função recursiva em C pra calcular uma potencia. Eu fiz mas ele nao esta fazendo a conta, nao sei o que esta de errado. Alguem pode me ajudar? <CODE> int potencia (int num, int exp){ if (exp == 0) { return 1; } else { num = num * potencia (num, exp-1); return num; } } int main (){ int numero, expoente, resultado; printf ("Informe o numero da base: "); scanf ("%d", &numero); printf ("Informe o expoente: "); scanf ("%d", &expoente); resultado = potencia (numero, expoente); printf ("Resultado da potencia e: ", resultado); }
-
aii funcionou de novo, nao sabia que tinha que deixar os parametros dessa forma desculpa mas obrigado!!
-
@Midori funcionou!! mas em relação a usar o fgets, aqui no devcc++ ele da erro, ele rodou so com o gets é problema do compilador?
-
então eu tenho que fazer esse exercicio, mas ela so ta lendo a minha string, ela nao ta imprimindo. o que tem de errado no meu codigo? lembrando q nao posso utilizar a função strcopy #include <stdio.h> //Faça um programa que leia uma string de até 50 caracteres e faça uma cópia para outra string. //Para isso, o programa deve implementar um procedimento que execute essa operação, //recebendo por parâmetro a string de origem e a de destino. Ao final, o programa deve exibir as strings na tela. //função void copiarString (char *original, char *copia){ while (*original != '\0'){ *original = *copia; original++; copia++; } *original = '\0'; } int main (){ char str1 [50]; char str2 [50]; printf ("Informe a string: "); gets(str1); copiarString (str1, str2); printf ("%s", str2); }
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