Ir ao conteúdo
  • Cadastre-se

Victor Vilardo

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

posts postados por Victor Vilardo

  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");

        }

            
    }

    • Curtir 1
  2. 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]);
        }
        
    }
     

  3. 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);
        
    }

     

    • Obrigado 1
  4. 29 minutos atrás, devair1010 disse:

    @Victor Vilardo    os cálculos estão funcionando ,  porém você não colocou o especificador no printf  %d ,  e assim não mostra nenhum resultado , e então seu código com algumas modificações poderia ser assim  :

    
    #include <stdio.h>
    #include <windows.h>
    int potencia(int,int);
    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("\nResultado da potencia e: %d\n\n\n",
               resultado);
        FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));       // aqui é igual o comando getch();
        WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), INFINITE); // porém sem usar a biblioteca conio.h
        return 32768;                                                  
    }
    int potencia (int num, int exp)
    {
        if( exp == 0 )
        {
            return 1;
        }
        else
        {
            num = num * potencia( num, exp-1 );
            return num;
        }
    }

     

    caramba kkk nao acredito que esqueci algo estão simples 😅 muito obrigado

    • Obrigado 1
  5. 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);
        
    }

     

    • Curtir 1
  6. 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);
        
        
        
        }

     

    • Curtir 1

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!