Ir para conteúdo
Fórum Script Brasil

Fabin

Membros
  • Total de itens

    135
  • Registro em

  • Última visita

Sobre Fabin

Perfil

  • Gender
    Male

Últimos Visitantes

1.288 visualizações

Fabin's Achievements

0

Reputação

  1. Fabin

    Ajuda com algoritmo!

    Você já tem algo feito? ou nem tentou fazer ainda? Manda o que você já tem ai flws
  2. Fabin

    ajuda com fila

    você já tem algum de pliha pronto? o que você quer é fila dinamica ou estatica? flws t+
  3. Boa tarde pessoal! Estou com duvida em um exercicio aqui consiste em um cadastro de carros para entrarem na cegonha 1 - usuário digita quantos carros serao entregues e todos são lidos e guardados em um vetor dinamico 2 - logo apos são ordenados de forma decrescente 3 - são inseridos na pilha 4 - são retirados elementos da pilha esta desorganizado ainda pois estou fazendo os teste primeiros connsegui cadastarr e ordenar de forma decrescente porem não estou conseguindo inserir na pilha alguém pode me ajudar #include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct TIPO_NO* TIPO_APONTADOR; typedef struct TIPO_NO { int info; TIPO_APONTADOR next; }TIPO_NODO; typedef struct{ TIPO_APONTADOR inicio; TIPO_APONTADOR fim; }TIPO_TADS; typedef struct { int NF; char modelo[50]; int ordem_entrega; }TIPO_CARRO; void inserir_carro(TIPO_CARRO *y, int qtde_carros); void mostra_carros(TIPO_CARRO *y, int qtde_carros); void selecao_direta(TIPO_CARRO *y , int qtde_carros); void inicializa_pilha(TIPO_TADS *pilha); void insere_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros); TIPO_CARRO retira_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros); int main() { TIPO_CARRO *car; TIPO_TADS pilha; int qtde_carro; char op; inicializa_pilha(&pilha); printf("Digite a quantidade de carros a ser entregues:\t"); scanf("%d",&qtde_carro); car = (TIPO_CARRO *)malloc(sizeof(TIPO_CARRO) * qtde_carro); inserir_carro(car, qtde_carro); //mostra_carros(car, qtde_carro); selecao_direta(car, qtde_carro); printf("\nOrdenacao de Pedidos decrescente para coloca-los na Cegonha\n"); mostra_carros(car, qtde_carro); printf("Deseja inserir elementos na fila (S)im/(N)ao:\t"); scanf("%c",&op); switch(op) { case 'S': insere_pilha(&pilha, car,qtde_carro); break; case 'N': break; } system("pause"); return 0; } void inserir_carro(TIPO_CARRO *y, int qtde_carros) { TIPO_CARRO *carro = y; for(int i=0;i<qtde_carros;i++) { system("cls"); printf("Digite o numero da nota fiscal do pedido %d:\t",i+1); scanf("%d",&carro[i].NF); printf("Digite o modelo do carro do pedido %d:\t",i+1); fflush(stdin); gets(carro[i].modelo); printf("Digite a ordem que foi entregue o carro do pedido %d:\t",i+1); scanf("%d",&carro[i].ordem_entrega); } } void mostra_carros(TIPO_CARRO *y, int qtde_carros) { TIPO_CARRO *carro = y; for(int i=0; i<qtde_carros;i++) { printf("\n\n"); printf("NF:\t%d\n",carro[i].NF); printf("Modelo:\t%s\n",carro[i].modelo); printf("Ordem:\t%d\n",carro[i].ordem_entrega); } } void selecao_direta(TIPO_CARRO *y , int qtde_carros) { TIPO_CARRO *carro = y, aux, maior; int i,j,posicao_maior; for(i=qtde_carros - 1;i>0;i--) { maior = carro[i]; posicao_maior = i; for(j=i - 1;j>=0;j--) { if(carro[j].ordem_entrega < maior.ordem_entrega) { maior = carro[j]; posicao_maior = j; } } aux = maior; carro[posicao_maior] = carro[i]; carro[i] = aux; } } void inicializa_pilha(TIPO_TADS *pilha) { pilha -> inicio = NULL; //base pilha -> fim = NULL; //topo } void insere_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros) { TIPO_CARRO *carro = y; TIPO_APONTADOR aux; aux = (TIPO_APONTADOR)malloc(sizeof(TIPO_NODO)); if(aux == NULL) { printf("Erro: Fila cheia!\n"); system("pause"); }else{ for(int i=0; i<qtde_carros; i++){ aux -> info = carro[qtde_carros]; aux -> next = fim; fila -> fim = aux; } } } TIPO_CARRO retira_pilha(TIPO_TADS *pilha, TIPO_CARRO *y, int qtde_carros) { TIPO_APONTADOR aux; TIPO_CARRO *carro = y; carro[qtde_carros] = pilha -> fim -> info; pilha -> fim = pilha -> fim--; if(pilha -> fim == NULL) { pilha -> inicio = NULL; } free(aux); return carro[qtde_carros]; }
  4. brother tu deve dar aula melhor que meu professor rsrs.. to aprendendo muito desenvolvio programa verifica se ficou legal e que posso melhorar /*1. Melhore o programa de agenda criado nas aulas de revisão através da utilização de estruturas.*/ #include <stdlib.h> #include <stdio.h> #include <string.h> //------------------------------------------------- // Declaração das Estruturas Usadas no Programa //------------------------------------------------- typedef struct { char nome[20]; char telefone[14]; }contato; //------------------------------------------------- // Declarações das Funções usadas no Programa //------------------------------------------------- void limpar_agenda(contato x[10]); void pesquisar_agenda(contato x[10]); void inserir(contato x[10]); void alterar(contato x[10]); void excluir(contato x[10]); int menu(void); //-------------------------------------------------------- int main() //Função Principal do Para execução do Programa { contato agenda[10]; int opcao; limpar_agenda(agenda); do{ opcao = menu(); switch(opcao) { case 1: pesquisar_agenda(agenda); break; case 2: inserir(agenda); break; case 3: alterar(agenda); break; case 4: excluir(agenda); break; case 9: limpar_agenda(agenda); break; case 0: // sai do programa break; default: printf("\nOPCAO INVALIDA! \n"); system("pause"); break; } }while(opcao!= 0); system("pause"); return 0; } //------------------------------------------------------------------------------------------- // Declaração dos Escopos das funções //------------------------------------------------------------------------------------------- int menu(void) //função para mostrar menu na tela e returna opção escolhida { int op; system("cls"); printf("***Menu de Opcoes***\n"); printf("1 - Pesquisar Contatos \n"); printf("2 - Inserir Contatos \n"); printf("3 - Alterar Contatos \n"); printf("4 - Excluir Contatos \n"); printf("9 - Limpar Agenda \n"); printf("0 - Sair \n"); printf("\n\t Digite uma Opcao: \n"); scanf("%d",&op); return op; } //-------------------------------------------------------------------------------------------- void limpar_agenda(contato x[10])//função para limpar agenda { for(int posicao=0;posicao<10;posicao++) { strcpy(x[posicao].nome, "");//copia vazio para nome e telefone para cada posição da agenda strcpy(x[posicao].telefone, ""); } printf("Agenda Apagada!\n"); } //---------------------------------------------------------------------------------------------- void pesquisar_agenda(contato x[10]) //função para pesquisar contato na agenda { int posicao; system("cls"); printf("***Pesquisar Contato***\n\n"); do{ printf("Digite uma posição de 1 a 10:\t"); //do para garantir que usuário irá digitar posição de 1 a 10 scanf("%d",&posicao); }while(posicao < 1 || posicao > 10); posicao--; //diminui uma posição poi vetor começa do 0 e termina no 9 if(strcmp(x[posicao].nome,"") == 0) //compara posição se estiver vazia entra neste if { printf("não há contato nesta posicao!\n"); system("pause"); } else // senão imprime na tela posição com contato solicitado pelo usuário { printf("Nome: \t%s.\n",x[posicao].nome); printf("Telefone: \t%s.\n",x[posicao].telefone); system("pause"); } } //-------------------------------------------------------------------------------------------------- void inserir(contato x[10]) //função para inserir contato na agenda { int posicao = 0; while((strcmp(x[posicao].nome,"") == 0) && posicao < 9) //aqui incrementa na posição enquanto estiver vazia e for menor que 9 { posicao++; } if(posicao < 10 && ((strcmp(x[posicao].nome,"")==0))) //se posição menor que 10 e estiver vazia ira inserir { printf("Digite o Nome:\t\n"); getchar(); gets(x[posicao].nome); printf("Digite o Telefone: \t\n"); getchar(); gets(x[posicao].telefone); } else //senão retorna que agenda está cheia { printf("Agenda Cheia!\n"); system("pause"); } } //--------------------------------------------------------------------------------------------------- void alterar(contato x[10]) //função para alterar contato { int posicao; char confirma; do{ printf("Informe uma posição de 1 a 10 para alterar:\t\n"); scanf("%d",&posicao); }while(posicao < 1 || posicao > 10); //do para garantir que usuário irá digitar posição de 1 a 10 posicao--; if(strcmp(x[posicao].nome,"")== 0) //se posição estiver vazia retorna que não há contato na posição { printf("Sem contato nessa posicao.\n"); system("pause"); } else { printf("Nome:\t%s\n",x[posicao].nome); //senão entra no else para verificar se usuário deseja alterar nome e telefone printf("Deseja alterar o nome? (s)im / (n)ao\n"); getchar(); scanf("%c",&confirma); if(confirma == 's') { printf("Digite o Nome:\t"); getchar(); gets(x[posicao].nome); printf("Nome alterado com Sucesso!.\n"); } printf("Telefone:\t%s\n",x[posicao].telefone); printf("Deseja alterar o telefone? (s)im / (n)ao\n"); getchar(); scanf("%c",&confirma); if(confirma == 's') { printf("Digite o telefone:\t"); getchar(); gets(x[posicao].telefone); printf("Telefone alterado com sucesso!\n"); system("pause"); } } } //------------------------------------------------------------------------------------------------------------------ void excluir(contato x[10])// função para excluir contato { int posicao; char confirma; do{ printf("Informe uma posição de 1 a 10 para excluir:\t\n"); scanf("%d",&posicao); //do para garantir que usuário irá digitar posição de 1 a 10 }while(posicao < 1 || posicao > 10); posicao--; if(strcmp(x[posicao].nome,"")== 0) //se posição estiver vazia retorna que não há contato na posição para excluir { printf("Sem contato nessa posicao.\n"); system("pause"); } else { printf("Nome:\t%s\n",x[posicao].nome); //senão entra no else para verificar se usuário deseja excluir nome e telefone printf("Deseja excluir o nome? (s)im / (n)ao\n"); getchar(); scanf("%c",&confirma); if(confirma == 's') { strcpy(x[posicao].nome, ""); printf("Nome excluido com Sucesso!.\n"); } printf("Telefone:\t%s\n",x[posicao].telefone); printf("Deseja excluir o telefone? (s)im / (n)ao\n"); getchar(); scanf("%c",&confirma); if(confirma == 's') { strcpy(x[posicao].telefone, ""); printf("Telefone excluido com sucesso!\n"); system("pause"); } } } //-------------------------------------------------------------------------------------------------------------------- valews brother abraço t+
  5. entendo CPP, foi mal pelo vacilo vou ir fazendo o restante aqui... te mandei uma mensagem depois da uma lolhada la abraço t+
  6. não ta complicando não, afinal vou ver essa materia hoje de ponteiros ai é bom que tento entender mais tarde a 2 opção que me passou, a primeira eu entendi melhor agora com a explicação agora outra duvida estou fazendo uma função para pesquisar, porem quando a posição está vazia ('') ele está passando direto pelo if e executando o else, o que pode ser void pesquisar_agenda(contato x[10]) { int posicao; system("cls"); printf("***Pesquisar Contato***\n\n"); do{ printf("Digite uma posição de 1 a 10:\t"); scanf("%d",&posicao); }while(posicao < 1 || posicao > 10); posicao--; if(x[posicao].nome == '') { printf("Não há contato nesta posição!\n"); system("pause"); } else { printf("Nome: \t%s.\n",x[posicao].nome); printf("Telefone: \t%s.\n",x[posicao].telefone); } }
  7. O primeiro Metodo acho que entendi, me corrija se estiver errado, no casos ele vai copiar vazio para cada posição em nome e telefone da agenda certo, agora o outro metodo você está usando ponteiro sei pouca coisa e tambem o professor vai dar essa materia hoje então não vou usa-la por enquanto mas qualquer duvida posto aqui novamente valews t+
  8. Bom dia pessoal! O meu problema é banal porem não sei como resolver, sempre que compilo o programa ocorre o erro: incompatible types in assignment of `char' to `char[20]' estou fazendo aos poucos meu codigo, estou fazendo as funçoes e testando. ta ai o codigo #include <stdlib.h> #include <stdio.h> typedef struct { char nome[20]; char telefone[14]; }contato; void limpar_agenda(contato x[10]); int main() { contato agenda[10]; limpar_agenda(agenda); system("pause"); return 0; } void limpar_agenda(contato x[10]) { for(int posicao=0;posicao<10;posicao++) { x[posicao].nome = ''; x[posicao].telefone = ''; } printf("Agenda Apagada!"); } vlaews pela ajuda
  9. brother você é to bom mesmo, parabens... tenho muito que aprender e estudar para chegar no seu nivel, você tem alguma certificação? abraço t+
  10. por enquanto esclareceu todas vou ler novamente, para fixar, mas tu é pocara brother ... você ta estudando ou já é formado? abraço t+
  11. opa ficou mais que claro entendi perfeitamente se puder responder o restante fico grato avalews t+
  12. CPP mano que código fino hein, o meu não chega nem aos pés do seus rsrsr... to com algumas duvidas e já vo logo perguntando rsrsr... -o DEFINE que voce usou, poderia me explicar sua definição e onde usou ele no codigo que não conseguir identificar? -vi que para você preencher a matriz usou apenas 2 ifs, qual foi meu erro em usar tantos? -unsigned char escolha, me explique o maximo que puder rsrsrs? e o kbhit() também -vejo que voce declarou uma variavel imprime? não entendi muito bem o porque? -e vi que você utilizou if(imprime), o que este if está comparando, ele imprime a matriz e comprara o que, não entendi muito bem essa parte? -vi que voce criou uma variavel opcao, ok, ai depois vem as duvidas novamente o if(kbhit()) compara o que? E o escolha = getchar() o que significa? E tem opcao que é um int e voce fez opcao = escolha - '' apesar de ter o comnetario não entendi nada me explicque ai -Na parte do if (opcao==2 || opcao==4 || opcao==6 || opcao==8) o que faz o imprime=1 e vi é que la que você apaga a posição anterior me explique essa parte do if por completo por enquanto é só, a medida que for utilizando o debug e surgir mais duvidas te pergunto? cara, muito obrigado você é o cara rsrsr t+
  13. obrigado !! voce tem o enunciado ai, ou pode explicar melhor o que quer? flws t+
  14. CPP vou colocar o meu codigo final e o que o exercicio propos, me fale o que eu posso melhorar no meu codigo para ele ficar menor, mais bonito e tals valews t+ /*Exercício 4. 4. Escreva um programa que crie uma matriz de 22 x 70 elementos, todos eles preenchidos por espaços, à exceção da borda da matriz (as colunas laterais e as linhas superior e inferior), cujos elementos devem ser preenchidos por “O” (letra o maiúscula). 5. A partir do exercício acima, crie: a. uma rotina (função) que coloque um sinal “+” em um ponto qualquer, segundo requisitado pelo usuário. b. Faça um laço na função acima, que permita ao usuário reescrever o sinal em qualquer posição quantas vezes quiser. c. Baseado nas rotinas acima, reescreva o programa de modo que o sinal “+” seja inicialmente escrito no centro da matriz, mas que permita ao usuário movimentá-lo, com o uso das teclas 4 (esquerda), 6 (direita), 8 (cima), 2 (baixo).*/ #include <stdlib.h> #include <stdio.h> char brinq[20][10]; // MATRIZ DECLARADA COMO GLOBAL E VISIVEL POR TODAS AS FUNÇÕES DO MÓDULO //Declarações das funçoes usadas char imprime_matriz_borda(); void sinal_indicado_matriz(); void movimentando_sinal_matriz(); int main() //função principal para execução do programa { imprime_matriz_borda(); //sinal_indicado_matriz(); //parte a e b do exercicio 5 movimentando_sinal_matriz(); printf("\n"); system("pause"); return 0; } //abaixo declarações e escopos das funções char imprime_matriz_borda() //função para imprimir borda com O na matriz { int linha=20, coluna=10, l, c; for(l=0;l<linha;l++){//for para imprimir linhas e colunas com O maisculo de acor com exercicio for(c=0;c<coluna;c++){ if(l==0){ brinq[l][c]='O';//preenche coluna superior com O }else{ if(l>=1 && c==0){ brinq[l][c]='O'; //preenche primeira coluna lateral com O }else{ if(l>=0 && c==9){ brinq[l][c]='O';//preenche ultima coluna lateral com O }else{ if(l==19){ brinq[l][c]='O';//preenche ultima linha com O }else{ brinq[l][c]=' '; } } } } printf("%c\t",brinq[l][c]); // imprime matriz completa na tela } } return brinq[linha][coluna]; } void sinal_indicado_matriz()// função para exercicio a e b colocando sinal onde quiser na matriz { int linha=20, coluna=10, l, c, posicao_um, posicao_dois; do{ //primeiro do para certificar que usuário não ira digita um aposição maior ou menor que a ultima linha e coluna da matriz do{ //os quatros do's contando com este é para certificar que usuário não ira digitar uma posição que é da borda da matriz do{ // já explicado do{ // já explicado do{ // já explicado do{ // este do é caso o usuário queira sair ele aperta a letra f que sai da repetição e termina programa printf("Digite um posiçao onde deseja colocar o sinal +:\t"); scanf("%d",&posicao_um); scanf("%d",&posicao_dois); if(posicao_um == 'f' || posicao_dois == 'f'){ system("pause"); //return 0; } if(posicao_um==0){ //ifs para emitir mensagem quando usuário digitar posiçao pertencente a borda da matriz printf("Essa posição faz parte da borda. Digite outra diferente.\n"); }else{ if(posicao_um>=1 && posicao_dois==0){ printf("Essa posição faz parte da borda. Digite outra diferente.\n"); }else{ if(posicao_um>=0 && posicao_dois==9){ printf("Essa posição faz parte da borda. Digite outra diferente.\n"); }else{ if(posicao_um==19){ printf("Essa posição faz parte da borda. Digite outra diferente.\n"); } } } } brinq[posicao_um][posicao_dois] = '+'; printf("\n"); for(l=0;l<linha;l++){ //for's para imprimir matriz com sinal de + na posição escolhida pelo usuário for(c=0;c<coluna;c++){ printf("%c\t",brinq[l][c]); } } printf("\n"); }while(posicao_um != 'f' || posicao_dois != 'f'); }while(posicao_um == 19); }while(posicao_um >=0 && c ==9); }while(posicao_um >=1 && posicao_dois == 0); }while(posicao_um == 0); }while((posicao_um > 19 && posicao_dois > 9) || (posicao_um < 0 && posicao_dois > 0) ); } void movimentando_sinal_matriz() //ultima parte do exercicio movimentando sinal pela matriz { int linha=20, coluna=10, l, c, opcao, hor, ant_hor, vert, ant_ver; brinq[9][4] = '+'; //coloca o + no centro da matriz for(l=0;l<linha;l++){ // imprime a matriz na tela com o + no centro //printf("\n"); for(c=0;c<coluna;c++){ printf("%c\t",brinq[l][c]); } } hor = 4; //variavel declarada para manipulação na horizontal do + na matriz recebendo 4 q é a coluna que representa o centro da matriz vert = 9;// variavel declarada para manipulação na vertical do + na matriz recebendo 9 que é a linha que representa o centro da matriz do{ // do para movimentar o + na matriz quando for igual a 1 sai do programa printf("Digite um dos numeros para movimentar o + na matriz:\n4(esquerda)\t6(direita)\t8(cima)\t2(baixo)\t1(para sair)\n"); scanf("%d",&opcao); printf("\n"); if(opcao == 4){ // opçao para movimentar o + para esquerda if(hor == 1){ //caso variavel hor for igual a 1 incrementa um pois se refere a borda da matriz não ultrapassando ou sobrepondo a mesma hor++; } hor--; //decrementa variavel para que diminua uma posição na vertical quando digitado 6 brinq[vert][hor] = '+'; //matriz recebe o + já com hor subtraido para mostralo na posição antecessora ant_hor = hor + 1; //variavel para armazenar posição anterior da decrementada brinq[vert][ant_hor] = ' '; // aqui a matriz recebe na posição anteriro decrementada vazio pois senao iria imprimiar um mai atras do outro for(l=0;l<linha;l++){ //printf("\n"); for(c=0;c<coluna;c++){ printf("%c\t",brinq[l][c]); } } printf("\n"); } if(opcao == 6){//mesmo esquema da opção 4 porem invertido if(hor == 8){ hor--; } hor++; brinq[vert][hor] = '+'; ant_hor = hor - 1; brinq[vert][ant_hor] = ' '; for(l=0;l<linha;l++){ //printf("\n"); for(c=0;c<coluna;c++){ printf("%c\t",brinq[l][c]); } } printf("\n"); } if(opcao == 8){ if(vert == 1){ //se variavel vert igual a 1 incrementa +1 para não sobrepor ou ultrapassar a borda da matriz vert++; } vert--;// decremneto na vertical que seria a coluna da matriz brinq[vert][hor] = '+'; //matriz vai receber o mais na coluna anteriror graçaas variavel vert que está sendo decremnetada ant_ver = vert + 1; // aqui variavel ant_ver recebe posição anterior ddo decremento brinq[ant_ver][hor]= ' ';//aqui usa a posição anterior para colocar vazio senao imprimiria um + atraz do outro for(l=0;l<linha;l++){ //printf("\n"); for(c=0;c<coluna;c++){ printf("%c\t",brinq[l][c]); } } printf("\n"); } if(opcao == 2){// mesmo esquema da posição 8 porem invertido if(vert == 18){ vert--; } vert++; brinq[vert][hor] = '+'; ant_ver = vert - 1; brinq[ant_ver][hor] = ' '; for(l=0;l<linha;l++){ //printf("\n"); for(c=0;c<coluna;c++){ printf("%c\t",brinq[l][c]); } } printf("\n"); } }while(opcao != 1); }
  15. Opa, claro que não me ofendo, te agradeço pois dessa forma que melhoramos, vou fazer dessa forma que você informou, em relação ao if em qual parte do código você está falando, para eu tentar consertar? Não usei variavel global justamente por que professor fala da não necessidade hoje de usar variaveis globais alem de poder complicar o codigo, mas neste caso acho que não há problmea ne? tem uma outra parte do programa aqui vou tentar fazer qualquer coisa coloco minhas duvidas aqui novamente ok? muito obrigado brother obrigado mesmo
×
×
  • Criar Novo...