Ir ao conteúdo
  • Cadastre-se

alefsilvaf

Membro Júnior
  • Posts

    8
  • Cadastrado em

  • Última visita

Tudo que alefsilvaf postou

  1. Isso mesmo! E as duas são obrigatoriamente de tamanhos diferentes pra ficar mais legal. Meu professor é um crânio!
  2. Eu tenho as funções de inserir no fim e no começo, ainda não sei como definir a direção, mas vou ter que descobrir háháhá ( ) o próximo exercício pede que eu simule duas engrenagens com listas circulares duplamente encadeadas e gire elas, uma no sentido horário e outro no anti-horário até que o inicio de ambas se encontrem em um ponto kkk
  3. void inverter(listaC *resp){ no* atual = resp->inicio; resp->inicio= NULL; while (atual) { no* corrente = atual; atual = atual->prox; corrente->prox = resp->inicio; resp->inicio = corrente; } swap(resp->inicio,resp->fim); } Consegui saciar o que pedia no exercício, não sei se é o jeito certo, mas foi! Então vim compartilhar a solução. Se você que está lendo conhecer outra maneira, por favor, pode dizer.
  4. Olá, programadores. Tenho tido dificuldade pra entender sobre manipulação de uma lista circular, uma vez que os conteúdos encontrados na interwebs sobre o assunto mudam bastante de artigo pra artigo. O que mais me incomoda é que não consigo entender como implementar uma função que inverta uma lista circular, fazendo com que, por exemplo: Ela passe de 1-2-3-4-5 para 5-4-3-2-1. Todo material que encontrei fez a função sem ter uma "cabeça", mesmo assim tentei desenvolver o algoritmo, e ele inverte uma lista quase que por completo, com exceção do primeiro elemento. Alguém pode me dar uma dica de como "consertar" o algoritmo para que ele faça direito sua função de inverter? #include<bits/stdc++.h> #define TRUE 1 #define FALSE 0 using namespace std; struct no { int dado; struct no *prox; }; typedef struct { struct no *inicio; struct no *fim; } listaC; void create(listaC *q) { q->inicio=NULL; q->fim=NULL; } int isEmpty(listaC q) { if (q.inicio==NULL) return (TRUE); else return (FALSE); } int insereinicio(listaC *q, int d) { struct no *aux; if (q->inicio == NULL) { aux= (struct no *) malloc(sizeof(struct no)); aux->dado = d; q->inicio = aux; q->fim = aux; aux->prox = q->inicio; return(TRUE); } aux= (struct no *) malloc(sizeof(struct no)); aux->dado = d; aux->prox = q->inicio; q->inicio = aux; q->fim->prox = aux; return(TRUE); } void inverter(listaC *resp){ no* atual = resp->inicio; resp->inicio = NULL; do{ no* corrente = atual; atual = atual->prox; corrente->prox = resp->inicio; resp->inicio = corrente; }while (atual); } void imprime(listaC q) { struct no *aux; if (!isEmpty(q)) { aux = q.inicio; if (aux != q.fim) { do { printf("%d->%d ", aux->dado,aux->prox->dado); aux = aux->prox; } while (aux != q.inicio); } else printf("%d->NULL ", aux->dado); } else cout<<"Lista vazia..."<<endl; } int main() { int x,q,res=0; listaC L; create(&L); insereinicio(&L,1); insereinicio(&L,2); insereinicio(&L,3); insereinicio(&L,4); insereinicio(&L,5); cout<<"Antes de inverter: \n"; imprime(L); inverter(&L); cout<<"\nDepois de inverter: \n"; imprime(L); return 0; } Desde já, obrigado.
  5. #include<bits/stdc++.h> int main() { int i, num[20], par[20], impar[20],x=0,y=0; printf("Digite 20 numeros inteiros:\n\n"); for (i=0; i<20; i++) //preenchimento do vetor// scanf("%d",&num[i]); for (i=0; i<20; i++) { if(num[i]%2 == 0)//verificação se o número é par// { par[x]=num[i];//Armazenamento dos numeros pares no vetor par// x++; //incremento do índice do vetor par// } else //se o numeto inteiro não é par, é ímpar!// { impar[y]=num[i];//Armazenamento dos numeros ímpares no vetor ímpar// y++; //incremento do índice do vetor ímpar// } } printf("\nNumeros pares digitados\n"); //impressão do vetor par// for (i=0; i<x; i++) printf("%d\n",par[i]); printf("\nNumeros impares digitados\n");//impressão do vetor ímpar// for (i=0; i<y; i++) printf("%d\n",impar[i]); system("pause"); } O seu código, colega. Confere aí se roda...
  6. #include<bits/stdc++.h> int main() { int tamanhodotrem[8],i,j=0; for(i=0; i<8; i++) { scanf("%d",&tamanhodotrem[i]); } int inferno=tamanhodotrem[7]; for(i=0; i<7; i++) { if(tamanhodotrem[i]==inferno) { printf("%d\n",i); j++; } } if(j==0) printf("valor nao encontrado\n"); return 0; } Resolvido.
  7. Manos, zerei uma prova de EAD1 ontem e peguei a mesma pra corrigir em casa, mas eu não tô conseguindo desenvolver o código pra fazer o que eu preciso. O exercício pede pra comparar o ultimo elemento do vetor com os outros elementos dentro dele, e por fim printar a posição do vetor quando for igual. #include<bits/stdc++.h> int main(){ int tamanhodotrem[8],i; for(i=0;i<8;i++) { scanf("%d",&tamanhodotrem[i]); if(tamanhodotrem[i]==tamanhodotrem[7]) printf("%d\n",i); } return 0; } Por mim esse código leria(no for) todos elementos do vetor e depois compara-los (no if que tá no for), o que eu tô fazendo de errado?
  8. Galera, eu tenho um exercício da faculdade em que preciso criar um programa que compare dois vetores, sendo o primeiro tipo um alfabeto e o segundo uma frase aleatória. Nisso tenho que descobrir quantas vezes os elementos de a estão em b, é semelhante ao que fazíamos nas funções em matemática no ensino médio.. dar a imagem da função, só que com quantidade. Ex: a= aeiou, b=o rato roeu a roupa do rei de roma. A resposta disso seria: 16. ENFIM. Consegui montar o código que satisfaz o que foi pedido, mas não sei como parar o mesmo: #include<bits/stdc++.h> int main() { char vogais[1000],frase[1500]; int cont=0,a,b,i=0,j=0; while(scanf("%s",vogais)!=EOF) { cont=0; scanf(" %[^\n]",frase); a=strlen(vogais); b=strlen(frase); for(i=0; i<a; i++) { for(j=0; j<b; j++) { if(vogais[i]==frase[j]) cont++; } } printf("%d\n",cont); } return 0; } Alguém pode me dar uma luz nesse problema? Não consigo entender como o !=EOF vai parar o negócio. Desde já, obrigado.

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!