Ir ao conteúdo
  • Cadastre-se

Victor Vilardo

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

Reputação

7
  1. 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"); } }
  2. muito obrigado gente!! realmente eu estava printando sem copiar os vetores, por isso no terceiro vetor tava dando uma coisa estranha
  3. 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]); } }
  4. @mauro_b é sim, é da minha faculdade. to tentando resolver aqui com as orientações do post
  5. 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); }
  6. caramba kkk nao acredito que esqueci algo estão simples muito obrigado
  7. 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); }
  8. aii funcionou de novo, nao sabia que tinha que deixar os parametros dessa forma desculpa mas obrigado!!
  9. @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?
  10. 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

×
×
  • Criar novo...