Ir para conteúdo
Fórum Script Brasil

Fabin

Membros
  • Total de itens

    135
  • Registro em

  • Última visita

Tudo que Fabin postou

  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
  16. Boa tarde galera é o seguinte to com duvida em um codigo aqui, primeiramente fiz ele todo no int main e funcionou beleza, o programa pede para incialmente fazer uma matriz com bordas e com a posição digitada pelo usuário adicionar um + nessa posição codigo no int main #include <stdlib.h> #include <stdio.h> int main(){ int linha=20, coluna=10, l, c, posicao_um, posicao_dois, opcao, hor, ant_hor, vert, ant_ver; char brinq[linha][coluna]; for(l=0;l<linha;l++){//for para imprimir linhas e colunas com O maisculo de acor com exercicio printf("\n"); 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 } } //printf("\n\n"); //Parte a e b do exercicio 5 para usa-la desative parte c 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 printf("\n"); 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) ); Agora que estou tentando colocar ela em função está ocorrendo erro, o que estou errnado: #include <stdlib.h> #include <stdio.h> char imprime_matriz_borda(){ int linha=20, coluna=10, l, c; char brinq[linha][coluna]; 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(char mat[20][10]){ int linha=20, coluna=10, l, c, posicao_um, posicao_dois; char brinq[linha][coluna]; 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) ); } int main(){ char x[20][10]; imprime_matriz_borda(); sinal_indicado_matriz(x); printf("\n"); system("pause"); return 0; }
  17. galera conseguir resolver este problema limpando o buffer com a funçao fflush(stdin) for(l=0;l<linha;l++){ for(c=0;c<coluna;c++){ printf("Digite a marca de cerveja que deseja colocar na linha %d da %d coluna da Caixa de Cerveja.\n" "(a)ntartica, (b)rahma, (n)ova skin, (k)aiser, (l)ocal, (f)echar conta.\n",c,l); fflush(stdin); scanf("%c,%*c",&caixacerveja[linha][coluna]); } } agora minha duvida é o seguinte as restriçoes que devo colocar... é o seguinte agora é que deve aceitar somente as letras a,b,n,k,l,f se eu colocar um do-while ocorre algum erro vou colocar assim for(l=0;l<linha;l++){ for(c=0;c<coluna;c++){ do{ printf("Digite a marca de cerveja que deseja colocar na linha %d da %d coluna da Caixa de Cerveja.\n" "(a)ntartica, (b)rahma, (n)ova skin, (k)aiser, (l)ocal, (f)echar conta.\n",c,l); fflush(stdin); scanf("%c,%*c",&caixacerveja[linha][coluna]); }while((caixacerveja != 'f')||(caixacerveja == 'a')....) } } estou na duvida por causa do for pois quando ele digiitar algo diferente daquelas letras não vai contabilizar isso que eu quero e se ele digitar f teria que sair da conta sem fazer o preenchimento das outras partes da caixa que vai fica com o v de vazio... entenderam onde quero chegar?? valews obrigado
  18. mas este codigo já esta em c++... você quer transformalo em C?? abraço
  19. tenta fazer com do-while quando preciso fazer algo que vai repetir mais de uam vez uso o do-while abraço
  20. galera agora estou com duvida para fazer o programa que é o seguinte ai ele esta assim ate o momento int main(){ int linha=6, coluna=4, l, c; char caixacerveja[6][4],opcao,opcao_cerveja; printf("Sua Caixa de cerveja Atual (v = Vazio)\n"); for(l=0;l<linha;l++){ printf("\n"); for(c=0;c<coluna;c++){ caixacerveja[linha][coluna]='v'; printf("%c\t",caixacerveja[linha][coluna]); } } printf("\n\n\n"); for(l=0;l<linha;l++){ for(c=0;c<coluna;c++){ printf("Digite a marca de cerveja que deseja colocar na caixa.\n" "(a)ntartica, (b)rahma, (n)ova skin, (k)aiser, (l)ocal, (f)echar conta.\n"); scanf("%c,%*c",&caixacerveja[linha][coluna]); } } system("pause"); return(0); } esta faltando mta coisa porem estou testando primeiro se o programa esta lendo os 24 caracteres e é isso o meu problema ele não esta, quando começo a digitar lee le somente 13 porque? o que esta errado no meu codigo?? e ele esta imprimindo o digite a marca.. duas vezes por que? como faço para consertar isso? valews
  21. desculpa aew brother... mas como faria? no for das linhas colocava um printf("\n");?? seria isso? valews t+ conseguir fazer aqui coloquei assim int linha=6, coluna=4, l, c; char caixacerveja[linha][coluna]; for(l=0;l<linha;l++){ printf("\n"); for(c=0;c<coluna;c++){ caixacerveja[linha][coluna]='v'; printf("%c\t",caixacerveja[linha][coluna]); } } ai deu certo aqui valews ai pessoal que me ajudaram agora vou terminar aqui qualquer duvida posto aqui vou diexar etse tópico aberto para caso tiver mais duvidas ok valews t+
  22. conseguiram aew galera?? valews t+
  23. jonantahn não funciona testei aqui olha meu codigo int linha=4, coluna=6, l, c; char caixacerveja[linha][coluna]; for(l=0;l<linha;l++) for(c=0;c<coluna;c++){ caixacerveja[linha][coluna]='v'; printf("%c",caixacerveja[linha][coluna]);} se eu colocar quebra de linha antes do %c ele vai imprimir espaçao em branco e depois um v debaixo do outro tendeu não vai imprimir no estilo que quero... entedenu agora sabe como devo fazer? valews t+
  24. não adianta brotehr... pois vai sair um embaixo do outro entendeu... sei que no dos suporta 80 caracteres por linha deve haver uma funçao ou algo para que faça imprimir do jeito que coloquei ali... vou ficar aqui no aguardo por uma resposat mas valeu pela ajuda brother alguém ai tem mais dicas?
  25. Galera estou afzendo um programa em c que preciso imprimir na tela igual abaixo: v v v v v v v v v v v v v v v v v v v v v v v v estilo uma caixa de cerveja... como faço isso? já fiz o for e tals porem imprime um do lado do outro vvvvvvvvvvvvvvv queria que imprimisse do jeito acima entenderam obrigado obrigado
×
×
  • Criar Novo...