Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!