-
Posts
8 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que alefsilvaf postou
-
Isso mesmo! E as duas são obrigatoriamente de tamanhos diferentes pra ficar mais legal. Meu professor é um crânio!
-
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
-
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.
-
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.
-
#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...
-
#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.
-
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?
-
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