Ir ao conteúdo
  • Cadastre-se

giovany93

Membro Júnior
  • Posts

    11
  • Cadastrado em

  • Última visita

posts postados por giovany93

  1. Sim , quase isso . Eu sei fazer em C mas quero ver com funções do c++.Mas o que eu realmente qro fazer eh o seguint.Dada duas listas

    verificar se elas sao iguais . Caso nao  for, devemos verificar se fazendo uma corrida ao "contrário na segunda"(partindo do fim da 2ª até o inicio da 2ª) se  a comparação dela com a primeira lista eh igual.

    • Obrigado 1
  2. Please!!! Someone helpe me!!!

      Eu estou tentando pegar duas listas de int e comparar um a um , mas esta dando algo errado.

    Segue a lógica: 

    Se pelo uma das listas tiver um unico elemento , compare  esse  com o ultimo elemento da outra lista (se for igual retorna 1) senao compara

         com o  primeiro dessa outra lista.  

    Caso as lista tenham ambas mais de um elemento vamos comparar desde do inicio de ambas se nao as listas nao for iguais , compararemos desde o inicio da primeira até o fim desta e desde o fim da segunda até o inicio desta.

    O erro eh q eh para apresentar yes quando sao iguais e no quando nao .Em alguns casos esta acontecendo erro...

    #include <iostream>

    #include <list>
    using namespace std;
    int iteration(list<int> lista,list<int> lista2);
    int main(){
        list<int>lista,lista2;
        int n,i,v;
        cin>>n;
        while(n){
            for(i=1;i<=n;i++)lista2.push_back(i);
             
           while(cin>>v&&v){
                       lista.push_front(v);
                       for(i=1;i<n;i++){
                           cin>>v;
                           lista.push_front(v);
                       }
                if(iteration(lista,lista2))cout<<"Yes"<<endl;
                else cout<<"No"<<endl;
             lista.clear();
                }       
                lista2.clear();
       cin>>n;
        }
        //lista.push_back(i);
        //lista.push_front(i);
        //cout << lista.front() << endl;
        //cout << lista.back() << endl;
        //cout << lista.size() << endl;
       // lista.insert(it,2,11);

        cout << endl;
       //lista.erase(it);// printa o 3 que agora é o novo ultimo elemento da listacout << lista.back() << endl;
           //cout << lista.size() << endl;
    return 0;
        
    }

    int iteration(list<int> lista,list<int> lista2)
    {
    list<int>::iterator it;
    list<int>::iterator iat;
    int b=0;
     if(lista.begin()==--lista.end()||lista2.begin()==--lista2.end())
       {
           cout<<*it<<*iat<<endl;
            if(lista.begin()==--lista2.end())
             return 1;
            else
             return --lista.end()==lista2.begin();
       }
    it = lista.begin();iat=lista2.begin();
            
             while(it!=lista.end()&&iat!=lista2.end())
             {
              if(*it!=*iat){
                         b=0;
                           break;
                 }
                        else b=1;    
                         it++,iat++;
             }           
     if(b)return 1;
         else{
                 iat =--lista2.end();
                 while(it!=lista.end()&&iat!=--lista2.begin())
                 {
                          
                 if(*it!=*iat){
                     b=0;
                       break;
                    }
                    else b=1;    
                     it++,iat--;
                 }
            
            
        }
    return b;
    }

    • Amei 1
  3. Alguem me ajude!!!

    Fiz uma funcao desimpilhar nao sei onde esta o erro, exemplo:

    Dada a pilha 654321

    Era para desimpilhar tudo ...

    só que esta desimpilhando só o primeiro e o final da pilha esta sem o NULL...

     

    int desempilhar(p_no p)
            {
                int c;
                p_no topo;
                topo=p;
                    if(topo!=NULL)
                    {c=topo->dado;
                    p=p->prox;
                     free(topo);
                return c;}
                          exit(1);
                    }

    }

  4. Estou fazendo fazendo um exercício que é para pegar um valor n de testes e escanear valores e letras referentes aos tipos de animais .Mas não sei onde está o erro ,acredito que seja no while.obs:quando digito um n ele roda n/2 vezes era para ser n vezes.

     

     

     

    #include<stdlib.h>
    int main()
    {
        int i,N,r,s,c,Quantia;
        char Tipo;
        r=0;
        s=0;
        c=0;
        scanf("%d",&N);
        for(i=0; i<N; i++)
        {
            scanf("%d",&Quantia);
            while(Quantia<1||Quantia>15)
            {
                scanf("%d",&Quantia);
            }
            scanf("%c",&Tipo);

            switch(Tipo)
            {
            case 'S':
            {
                s=s+Quantia;
                break;
            }

            case 'R':
            {
                r=r+Quantia;
                break;
            }
            case 'C':
            {
                c=c+Quantia;
                break;
            }

            }
        }


        printf("Total: %d cobaias\n %d\nTotal de coelhos: %d"
               "\nTotal de ratos: %d"
               "\nTotal de sapos: %d"
               "\nPercentual de coelhos: %.2d %%"
               "\nPercentual de ratos: %.2d %%"
               "\nPercentual de sapos: %.2d %%",c+r+s,c,r,s,c/(r+s+c),r/(r+s+c),s/(r+s+c));
    }
     

    • Curtir 1
    • Obrigado 1
  5. Mas não entendi sua dúvida, o que quer dizer com "porque você não preenche a palavra?" ? A palavra é fornecida pelo usuário no scanf("%s", p);  Eu quero dizer se o caractere de fim de string é preenchido sozinho ou devemos fazer com que seja atribuída a última posição o '\0'.Outra coisa,eu entendei que a função limpa o espaço para depois desalocar,mas não entendi o código.

  6. Ah sim , Eh verdade o ponteiro pode ser visto como vetor né? aih eu não preciso e nem posso fazer scanf("%s",*p);

    Outra coisa você sabe me dizer porque quando digito a palavra (sem digitar o tamanho),o código não dah erro ?Por exemplo:

    No código tá assim:

    printf ("DIGITE O TAMANHO DA PALAVRA...\n"); scanf ("%d", &n);

    mas se eu digitar qualquer palavra , o codigo já imprime a criptografia e a palavra normal ,porque não dah erro?

    Queria saber mais coisa ainda...Aqui você aloca n+1 por causa do caracter do fim de string né? Se sim porque você não preenche a palavra?Ela eh automaticamente preenchida?

    char *p; p = (char*) malloc (n * sizeof(char) + 1); /* aloco o valor digitado */ scanf ("%s", p); /* armazeno na variável */ printf("original :: %s\n", p); /* imprimo a palavra normalmente */ criptografia (p, n);

     

    E aqui embaixo eu não entendi ,é que eu  sou "calouro em C"kkk.A função free já não faz essa limpeza.Me explique pfv ,pois eu não entendi o while nem char *limit = p - 1; p += n.Desde já agradeço!!!

     

    /* boa prática: limpe o contéudo, libere memória sem uso. */ char *limit = p - 1; p += n; while (limit <-- p){ *p = 0; } free (p); return 0; }

  7. Eu estou tentando fazer um código em c no qual uma palavra deve ser criptografada.Eu não sei o que está dando errado.

    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int n;

        printf("DIGITE O TAMANHO DA PALAVRA...\n");
        scanf("%d",&n);
        char *p;
        p=(char*) malloc(n*sizeof(char));//aloco o valor digitado
    scanf("%s",p);//armazeno na variável
    printf(" %s",*p);//imprimo a palavra normalmente
        criptografia(*p,n);
    }
    void criptografia(char palavra[ ],int n)
    {
        int i;
        for(i=0; i<n; i++)
        {
            switch(palavra)
            {
            case 'A':palavra='J';
            case 'B':palavra='K';
            case 'C':palavra='L';
            case 'D':palavra='M';
            case 'E':palavra='N';
            case 'F':palavra='O';
            case 'G':palavra='P';
            case 'H':palavra='Q';
            case 'I':palavra='R';
            case 'J':palavra='S';
            case 'K':palavra='T';
            case 'L':palavra='U';
            case 'M':palavra='W';
            case 'N':palavra='X';
            case 'O':palavra='Y';
            case 'P':palavra='Z';
            case 'Q':palavra='A';
            case 'R':palavra='B';
            case 'S':palavra='C';
            case 'T':palavra='D';
            case 'U':palavra='E';
            case 'V':palavra='F';
            case 'W':palavra='G';
            case 'X':palavra='H';
            case 'Y':palavra='I';
            case 'Z':palavra='J';

            }
        printf("%s",palavra);
        }

    }

  8. Gente estou fazendo um código para ler 6 números e verificar a quantidade de positivos e fazer a média aritmética dos positivos .Me ajudem o que têm de errado:

    Obs:Usei ponteiro e função porque estou aprendendo ,então quero aplicar em exercícios simples primeiro.

    #include<stdlib.h>
    #include<stdio.h>
    verifica(double c,int *cont,double media);
    int main()
    {
        double a,b,c,d,e,f,media;
    int cont1;

    media=0;
    cont1=0;
    scanf("%f %f %f %f %f %f",&a,&b,&c,&d,&e,&f);

    verifica(a,&cont1,media);
    verifica(b,&cont1,media);
    verifica(c,&cont1,media);
    verifica(d,&cont1,media);
    verifica(e,&cont1,media);
    verifica(f,&cont1,media);
    media=media/ cont1;
    printf("%d\n %d\n",cont1,media);
    }
    verifica(double c,int *cont,double media)
    {
        if(c>0){
                *cont=*cont+1;
             media=media+c;
                }
    return media;
    }
     

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!