Ir ao conteúdo
  • Cadastre-se

giovany93

Membros Juniores
  • Total de itens

    10
  • Registro em

  • Última visita

  • Qualificações

    N/D
  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.
  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; }
  3. //Procuro indicação de livro bom para iniciantes em C# com linguagem orientada a objetos... se tiver link melhor ainda...
  4. 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); } }
  5. 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)); }
  6. 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.
  7. 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; }
  8. 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); } }
  9. 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 publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!