-
Posts
180 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Igor Vargas postou
-
C Lista Encadeada, retirar Ultimo elemento
Igor Vargas respondeu ao tópico de UmPrograma em C/C#/C++
@Josesousa "novo" = novo nó "prox" = ponteiro que guarda a memória do prox valor inserido. "l" =cabeça da lista. "l" é a lista, mas como ela vai estar vazia ele vai receber NULL ou seja o ponteiro novo->prox= l vai apontar pro vazio que no momento é "l" pois não tem nada dentro ainda . No próximo valor inserido que vai ser o seu novo "NOVO" teu "NOVO->prox = l" recebe o resto da lista ou seja "l" vai ter o nó anterior e o teu "NOVO->prox" vai apontar pra ele. EX: 1->2->NULL quero adicionar o numero 3. passo o valor "novo->dado = 3", "l =1->2->NULL", "novo->prox=l" quando for adicionado meu novo "novo->prox " vai apontar pro numero "1" então 3->1->2->NULL. A a inserção de valores é sempre no inicio então se já tiver um nó na lista o próximo valor vai ser inserido atrás dele. Espero ter ajudado de alguma forma se ficou muito confuso desenhar é a melhor forma e praticar bastante. -
C Lista Encadeada, retirar Ultimo elemento
Igor Vargas respondeu ao tópico de UmPrograma em C/C#/C++
Cara o que me ajudou a entender listas encadeadas foi desenhar ela . E entender do zero o que cada função/estrutura esta fazendo. Se tiver dúvidas eu tenho uma lista com algumas funções. https://github.com/igorvargasp/C--codes Sua função inserir pode ser algo mais simples. Pequena sugestão. Lista* inserir(Lista *l, int valor){ Lista* novo= (Lista*)malloc(sizeof(Lista)); if(!novo){ printf("SEM MEMORIA!\n"); exit(1); } novo->dado = valor; novo->prox = l; return novo; } } -
C++ Programinha em C que pede 10 numeros
Igor Vargas respondeu ao tópico de thiagocarmin em C/C#/C++
@thiagocarmin A geral. int x,soma; for(x=0; x<10; x++{ soma+=vet[x]; } -
Exercício em C: identificação de ovelhas
Igor Vargas respondeu ao tópico de Alex Brito Brito em C/C#/C++
Se tiver como postar o que já foi feito. A partir dai podemos ajudar. -
strcmp() compara letra por letra. Não sei se entendi. Mas o certo seria. if(strcmp(ch1,ch2)==0) { printf("acesso permitido"); }else printf("acesso negado"); caso seja de exemplo, erro meu.
-
C++ Programinha em C que pede 10 numeros
Igor Vargas respondeu ao tópico de thiagocarmin em C/C#/C++
Para achar o maior. int x,maior=0; for(x=0; x<10; x++{ if(vet[x] > maior){ maior = vet[i]; } } Para achar o menor. int x,menor=0; for(x=0; x<10; x++{ if(vet[x] < menor){ menor= vet[i]; } } Para saber os negativos. int x,cont=0; for(x=0; x<10; x++{ if(vet[x] < 0){ cont++; } } Não entendi essa. A soma do maior e menor ou a soma geral? -
C Crie matriz onde os números de linhas e colunas serão digitados pelo usuário
Igor Vargas respondeu ao tópico de Luis Gonzales em C/C#/C++
Alocando memória dinamicamente. Da uma olhada no malloc(); -
No do - while tu define a saída do laço. Ex: int x=0; do{ }while(x!=1); //enquanto o x nao for 1 ele fica repetindo sobre o switch. Você coloca a variável a ser usada. Ex int num; printf("1:Arroz"); printf("2:Batata"); do{ switch(num){ case 1:printf("informações sobre arroz"); break; case 2: printf("informações sobre Batata"); break; default: //Escolher qualquer opção que nao esteja no switch entra em default e termina o programa }while(num !=0); //coloque uma opção de saída para o usuário
-
Olá estou tentando implementar uma fila de prioridade, mas a minha função de inserção não esta funcionando. #include <stdio.h> #include <stdlib.h> #define MAX 10 void insercao(int vet[MAX],int i){ int cont=-1; cont++; vet[cont]=i; } void troca(int vet[MAX],int a, int b){ int aux; aux = vet[a]; vet[a] = vet[b]; vet[b] = aux; } void pai(int vet[MAX], int i){ while( i > 0 && vet[i]<vet[i/2]){ troca(vet,i,i/2); i = i/2; } } void imprime(int vet[MAX]){ int x; for(x = 0; x<MAX; x++){ printf("[%d]-",vet[x]); } } int vet[MAX]; main(){ printf("Digite um Numero na heap:"); insercao(vet,10); insercao(vet,35); insercao(vet,30); imprime(vet); }
-
@AnsiC Agora funcionou!!. Obrigado pela ajuda mesmo. Desculpa ocupar muito do teu tempo.
-
@AnsiC Essa parte esta correta. Estou com dúvidas na parte de inserção de um novo contato. Pois quando eu exibo a lista ela duplicado o contato.
-
@AnsiCEsta acontecendo esse problema. letra_t *insere_char(contato *c, letra_t *iniciais). depois de inserido a primeira palavra fica assim. i: igor. Quando é inserido a segunda fica assim. Na exibição. i: igor,joao. j: joao. imagem abaixo
-
@AnsiCAgora funcionou a parte de excluir. Estou tentando arrumar essa questão. depois de inserido a primeira palavra fica assim. i: igor. Quando é inserido a segunda fica assim. Na exibição. i: igor,joao. j: joao.
-
@AnsiCMais ou menos isso ?. Ta funcionando mas acho que estou retornando algo errado pois a lista fica vazia quando apago um contato da letra. Função de busca letra_t *busca_letra(letra_t *l, char nome){ letra_t *busca = l; letra_t *ant=NULL; while(busca!=NULL){ ant = busca->prox; if(busca->letra == nome){ return ant; } busca = busca->prox; } } Função de retirar a letra. Caso não tenha nome com a letra inicial dela. letra_t *letra_retira(letra_t *l,char nome){ letra_t *p = l; letra_t *marcador =busca_letra(marcador,nome); if(marcador!=NULL){ p = marcador->prox; marcador->prox = p->prox; } return l ; }
-
@AnsiC Não estou conseguindo fazer a parte de se a letra estiver sem contato.A letra ser deletada. letra_t *retira_letra(letra_t *l){ letra_t *p =l; letra_t *ant=NULL; while(p!=NULL){ ant = p; p = p->prox; } if(ant->prox = NULL){ l = p->prox; }else{ ant->prox = p->prox; } return l; }
-
@AnsiC Entendi, de qualquer foma valeu pela ajuda, tenho uns 12 dia pra entregar ainda. O meu professor não ajudou muito com as explicações dele, ai to tentando me virar com o o que eu sei.
-
Olá. Estou estou com uma dúvida onde preciso adicionar um contato de uma lista normal para outra lista favoritos. Só que não pode fazer a cópia do contato da lista normal. Favoritos: Uma outra lista, com ponteiros para os contatos favoritos deve ser criada. Contatos marcados como favoritos na agenda devem ser adicionados ao final da lista de favoritos. Contatos podem ser removidos apenas da lista de favoritos. Contatos removidos da agenda, caso sejam favoritos, devem ser removidos dos favoritos. Por fim, deve ser possível visualizar a lista dos contatos favoritos. typedef struct CONTATO{ char *nome; char *sobrenome; int numeroT; char *email; struct CONTATO *prox; }contato; typedef struct FAVORITOS{ struct contato * listadeContatos; struct Favoritos * prox; }favorito; favorito *inserir_Fav(favorito *f, contato *c, char nome[TAM], char sobrenome[TAM]){ contato *contato_= c,*ant; favorito *favorito_ =(favorito*)malloc(sizeof(favorito)); while(contato_!=NULL){ ant = contato_; if(nome[TAM] == contato_->nome && sobrenome[TAM] == contato_->sobrenome){ favorito_->listadeContatos = contato_; favorito_->prox =NULL; }else{ contato_=contato_->prox; } } return favorito_; }
-
@AnsiC Me confundi. É isso que devo fazer. Favoritos: Uma outra lista, com ponteiros para os contatos favoritos deve ser criada. Contatos marcados como favoritos na agenda devem ser adicionados ao final da lista de favoritos. Contatos podem ser removidos apenas da lista de favoritos. Contatos removidos da agenda, caso sejam favoritos, devem ser removidos dos favoritos. Por fim, deve ser possível visualizar a lista dos contatos favoritos. Dei uma editada no código, gostaria que você desse uma olhada, se der. https://pastebin.com/7wcimDws
-
@AnsiC Estou com uma certa dúvida numa parte desse trabalho que estou fazendo. O trabalho pede pra mim criar uma lista favoritos, receber ela da lista contatos, caso a pessoa queira adicionar um contato aos favoritos, se a pessoa excluir um contato da lista de favoritos ele ser excluido da lista normal. O problema é que o professor não quer que seja uma copia, pois precisaria deletar da lista favoritos e da lista normal. Tentei fazer uma função mas acho que esta faltando algo. A ideia que eu tive era pegar o endereço de memoria onde esse nome esta e excluir caso eu queira, ou buscar ele. typedef struct CONTATO{ char *nome; char *sobrenome; int numeroT; char *email; struct CONTATO *prox; }contato; typedef struct FAVORITOS{ struct contato * listadeContatos; struct Favoritos * prox; }favorito; favorito *insercao_Fav(favorito *f, contato *c, char *nome, char *sobrenome){ contato *contato_= c,*ant; favorito *favorito_ =(favorito*)malloc(sizeof(favorito)); while(contato_!=NULL){ ant = contato_ if(nome == contato_->nome && sobrenome == contato_->sobrenome){ favorito_->listadeContatos = contato_; favorito_->prox =ant; }else{ ontato_=contato_->prox; } } return favorito; }
-
C é interessante mas as vezes é uma dor de cabeça, recomendo python. Você precisa tentar resolver o código e mandar aqui quando tiver dúvidas.
-
eu tenho que apontar a letra pro nome que tem o mesmo inicio só que em ordem?. Tem algum material que tu possa me recomendar pra dar uma lida ? @AnsiC
-
@AnsiC Fiz a ordenação dessa maneira, mas acho que esta faltado algo. Porque ele mostra duas vezes o nome da pessoa. Digamos na lista que tem os nomes com "i" e depois mostra na lista certa. void ordena_alfa(letra_t * l) { if (l == NULL || l - > prox == NULL) return; //se for nulo(vazio), ou apenas 1 elemento letra_t * aux = l; letra_t * t; char s; while (aux != NULL) { t = aux - > prox; while (t != NULL) { if (aux - > letra > t - > letra) { //se vir depois s = aux - > letra; aux - > letra = t - > letra; t - > letra = s; } t = t - > prox; } aux = aux - > prox; } }
-
@AnsiC valeu pela ajuda, não consegui entender direito listas ainda, mas to me esforçando haha. No caso da ordenação eu terei que fazer pela letra, certo?
-
@AnsiC Eu acho que entendi. Vai ficar algo assim? letra_t *insereChar(contato *c,letra_t *iniciais){ //aqui eu coloco os contatos na lista da letra contato *novo_contato= malloc(sizeof(contato)); char inicial_do_novo_contato= novo_contato->nome[0]; if(iniciais == NULL){ iniciais= malloc(sizeof(letra_t)); iniciais->letra = c->nome; iniciais->lista_de_contatos=c; iniciais->prox = NULL; }else{ letra_t *buscar=iniciais; while(buscar !=NULL){ if(buscar->letra == inicial_do_novo_contato){ c->prox = buscar->lista_de_contatos; buscar->lista_de_contatos = c; break; }else{ buscar=buscar->prox; } } if(buscar == NULL){ letra_t *tmp_iniciais= malloc(sizeof(letra_t)); tmp_iniciais->letra= c->nome; tmp_iniciais->lista_de_contatos= c; tmp_iniciais->prox= iniciais; iniciais= tmp_iniciais; } } return iniciais; } A minha função de impressão, não ta imprimindo a letra. void imprime(contato *c, letra_t *l){ contato *p=c; letra_t *t=l; while(p!=NULL && t!=NULL){ //printf("\n"); printf("%c ->%s %s\n",t->letra,p->nome,p->sobrenome); t =t->prox; p=p->prox; } }
-
@AnsiC essa variavel, eu pego como?. Desse jeito?
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