Ir ao conteúdo
  • Cadastre-se

Mateus Nunes

Membro Pleno
  • Posts

    28
  • Cadastrado em

  • Última visita

Reputação

1
  1. Boa noite, pessoal! Estou passando por um probleminha (imagino eu, simples) com o MatLab. Tenho duas variáveis Ca (concentração) e tr (tempo de residência). Contudo, a primeira depende da segunda e eu gostaria de ver o comportamento gráfico disto, ou seja, Ca versus tr. Para tanto, escrevi o seguinte código - onde Cao e k são constantes ao longo do processo: %Parâmetros k=1; Cao=1; %Condição inicial Ca(1)=0; tr(1)=0; %Modelo for i=1:0.1:3.5 Ca(i+1)=k*Ca(i)^2+i*Ca(i)-i*Cao; %Aqui, onde há "i" seria o tr, no modelo matemático proposto tr(i+1)=i; %comando para ajustar a escala de tempo (para que a mesma comece em 0) end Ao tentar rodar, recebo a seguinte mesnsagem: "Array indices must be positive integers or logical values." Este é o meu primeiro contato com o MatLab e eu confesso que não consegui ainda pegar nada bem a lógica da programação! Caso alguém consiga me ajudar, muito obrigadoo!!!
  2. Mateus Nunes

    Matrizes

    Muito Obrigado!!!!! Peguei a ideia! Valeu
  3. Mateus Nunes

    Matrizes

    Cara, na verdade, eu só usei o define pra não entrar com tantos valores toda hora. Tu tá querendo dizer que para cada ordem, a condição muda? Desculpa se eu não entendi.... adicionado 39 minutos depois Sim, matriz quadrada!
  4. Mateus Nunes

    Matrizes

    Pessoal, alguém sabe como ficaria a condição para verificar se a diagonal principal da matriz é igual a secundária?? O que eu fiz não está correto. O problema está no final, acredito.... Obrigado! #include <stdio.h> #include <locale.h> #define nlin 2 #define ncol 2 main() { int mat[nlin][ncol],col,lin,diag_p[nlin],diag_s[nlin],k=0,aux=0; setlocale(LC_ALL,"portuguese"); printf("Informe %d valores: ",nlin*ncol); for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { scanf("%d",&mat[lin][col]); } } system("pause"); system("cls"); printf("Valores armazenados na matriz:\n\n"); for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { printf("%d\t",mat[lin][col]); } printf("\n"); } //DIAGONAL PRINCIPAL for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { if(lin==col){diag_p[k]=mat[lin][col];k++;} } } printf("\nDiagonal Principal:\n\n"); for(k=0;k<=lin-1;k++) { printf("%d\t",diag_p[k]); } //DIAGONAL SECUNDÁRIA k=0; for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { if(lin==nlin-1-col){diag_s[k]=mat[lin][col];k++;} } } printf("\n\nDiagonal Secundária:\n\n"); for(k=0;k<=lin-1;k++) { printf("%d\t",diag_s[k]); } //TESTE for(k=0;k<=lin-1;k++) { if(diag_p[k]==diag_s[k]){aux=1;} } if(aux=1){printf("\n\nAs diagonais são iguais!");} else {printf("\n\nAs diagonais são diferentes!");} printf("\n\n\nFim da Programação!!!!"); printf("\n\n\n\n"); }
  5. Boa noite! Faço uma disciplina de algoritmos na faculdade e estou com um problema em entender uma questão (na realidade sua resolução). O enunciado é o seguinte: elaborar um programa que leia uma matriz 5x4 e crie um vetor com todos os números pares da matriz. Em seguida, o programa deverá escrever as posições ocupadas do vetor. Abaixo segue o "gabarito". Alguém pode me explicar COMO os valores pares estão sendo passados para o "vet[z]"??? Está relacionado com a contagem feita acima, mas não estou conseguindo entender como os valores pares foram passados, uma vez que "cont" e "z" não estiveram no mesmo laço de repetição nenhuma vez...... Obrigado!!!!!!!!!!! #include <stdio.h> #include <locale.h> #define nlin 2 #define ncol 2 main() { int mat[nlin][ncol],col,lin,pos,vet[20],z,cont=0; double resto; setlocale(LC_ALL,"portuguese"); //ZERANDO O VETOR for(z=0;z<=19;z++) { vet[z]=0; } printf("Informe %d valores: ",nlin*ncol); for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { scanf("%d",&mat[lin][col]); } } system("pause"); system("cls"); printf("Valores armazenados na matriz:\n\n"); for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { printf("%d\t",mat[lin][col]); } printf("\n"); } //////VERFICANDO SE HÁ VALORES PARES for(lin=0;lin<=nlin-1;lin++) { for(col=0;col<=ncol-1;col++) { resto=mat[lin][col]%2; if(resto==0){vet[cont]=mat[lin][col];cont++;} } } printf("\n\n\VETOR:\n"); for(z=0;z<=19;z++) { printf("%d\n",vet[z]); } printf("\n"); system("pause"); system("cls"); if(cont!=0) { printf("\nO vetor teve as seguintes posições ocupadas por valores pares:\n"); for(z=0;z<=19;z++) { if(vet[z]!=0){printf("Posição %d\n",z);} } } else{printf("\nNão há valores pares na matriz.");} printf("\n\n\nFim da Programação!!!!"); printf("\n\n\n\n"); }
  6. Sim, mas qual o objetivo do retorna++ naquela linha, o que ele desempenha?? Vou dar um exemplo de função, porém a que eu necessito deve fazer processamento em um conjunto de caracteres, e a do exemplo faz processamento com números. Primeiramente, para deixar claro, gostaria de criar uma função que realiza-se algum processamento, de forma que esta fica armazenada em uma biblioteca.h com um certo nome e certos parâmetros. Assim, quando eu quiser utilizá-la, apenas a chamo pelo "nome" na função main() Isso é uma das exigências do projeto...........segue abaixo o exemplo, note que, em forma de comentário, eu aponto as funções (acredito que no caso do projeto - primeira postagem - a função deva ser do tipo char, pois a professora pede que seja realizado um processamento de caracteres na função) Obrigado pela atenção!!!!!! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <math.h> #include <conio.h> #include "Biblioteca_Projeto.h" main() { float a,b; double c; int qtd; setlocale(LC_ALL,"portuguese"); printf("\t\t\t\tFUNÇÃO AFIM"); printf("\n\nPara a função do tipo y=ax+b, determine os parâmetros:"); printf("\n\nDigite o valor de a: "); scanf("%f",&a); printf("\nDigite o valor de b: "); scanf("%f",&b); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat); ///Função void preenche_mat_y(qtd,mat,a,b); ///Função void show_mat_pontos(qtd,mat); ///Função void } //////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////// //MINHA BIBLIOTECA (SALVA COM O NOME DE Biblioteca_Projeto.h) void preenche_mat_x(int qtd, float mat[qtd][2]) { int index; for(index=0;index<=qtd-1;index++) { printf("\nEntre com valor real para x%d: ",index+1); scanf("%f",mat[index]); } return; } /////////////////////////////////////////////////////////////////////////// void preenche_mat_y(int qtd, float mat[qtd][2], float a, float b ) { int index; for( index=0;index<=qtd;index++) { mat[index][1]=a*mat[index][0]+b; } return; } ////////////////////////////////////////////////////////////////////////////////// void show_mat_pontos(int qtd, float mat[qtd][2] ) { int index; system("cls"); printf("Pontos (x ; y):"); for(index=0;index<=qtd-1;index++ ) { printf("\n\n%dº Ponto: (%.2f ; %.2f)\n",1+index,mat[index][0],mat[index][1]); } return; } ///////////////////////////////////////////////////////////////////////////////////
  7. Index começa em zero; caso qtd seja igual a 5, eu necessito que index vá até qtd-1, isto é, 5-1=4 (posição 4). Assim temos 5 posições: 0,1,2,3 e 4. O programa é bem mais extenso, postei apenas um pedaço, onde eu tinha dúvida! Trata-se de, dada uma quantidade de pontos x, calcular os pontos y correspondentes para diversas funções.
  8. Boa tarde galera. Me deparei com um jogo da forca em C - versão simplificada - e queria tirar algumas dúvidas com quem estiver disposto. Primeiramente, gostaria de saber como a função strlen funciona. Além disso, acredito que há 5 contadores no algoritmo (life, retorna, points, cont e cont2) e estes em algumas partes aparecem da seguinte forma: retorna++; points++......para quê isso é feito?? Por fim, pergunto se há alguma forma de elaborar uma função que realize esse processamento, de forma que eu possa adicioná-la numa espécie de biblioteca.h e, posteriormente, chamá-la pelo nome na função main() - se a resposta for sim, tem como me mostrar como fica? Obrigado pela força aí!!! #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <math.h> /////// #include "Biblioteca_Projeto.h" [?] EU QUERIA ADICIONAR AQUI E SÓ CHAMAR NA FUNÇÃO MAIN, PELO NOME main() { char word[21]; //Player 1 char gap[21]="-"; //Lacunas char letra[21]; char erros[21]; char tam; int life=5; int retorna; int points=0; int cont=0; int cont2=0; setlocale(LC_ALL,"portuguese"); printf("Jogador 1, digite a palavra para o Jogador adivinhar: "); gets(word); system("cls"); for(cont=0;cont<strlen(word);cont++) // [?] strlen { gap[cont]="-"; tam=strlen(word); }//Fim do 1ºfor while(life>0) { retorna=0; printf("\n\t%s\n",gap); printf("\tDigite uma letra: "); gets(letra); system("cls"); printf("\n\n\tLetra Digitada: %s\n",letra); for(cont=0;cont<strlen(word);cont++) { if(letra[0]==word[cont]) { gap[cont]=word[cont]; retorna++; ////// [?] o que é o ++, que função está desempenhando nesse caso? points++; }//Laço do 1º if }//Laço do for if(retorna==0) { life--; if(life==0) { printf("\n\tGAME OVER!\n"); printf("\n\tA palavra cera era: %s\n",word); break; } else { printf("\n\tVocê errou uma letra. Restam %d vidas\n\n\n",life); system("pause"); system("cls"); erros[cont2]=letra[0]; cont2++; } } else { if(points==tam) { printf("\n\tVocê acertou a palavra. Parabéns!\n"); break; } else { printf("\n\n\tVocê acertou uma letra. Continue assim!\n\n\n"); system("pause"); system("cls"); } } } }
  9. Putz cara, muitíssimo obrigado pela ótima explicação. Uma vez que a professora exige também o uso de vetores, eu dou um jeito de implementar na tarefa 2! Vou te incomodar só uma última vez! Abaixo, segue o código quase pronto (no case 2 do primeiro switch eu devo elaborar uma função que realize algum tipo de processamento em um conjunto de caracteres - vou ver o que faço depois). O que eu gostaria de saber é se há alguma possibilidade de implementar alguma função do tipo int, float ou double e se as funções já utilizadas (void) contam como passagem de parâmetros (acredito que sim, né?). #include <stdio.h> #include <locale.h> #include <math.h> #include "Biblioteca_Projeto.h" main() { char option,optionf; float a,b; double c; int qtd; setlocale(LC_ALL,"portuguese"); printf("\t\t\t\tMENU PRINCIPAL"); printf("\n\n1- Valores de y=f(x) para as funções: "); printf("\n a- Função Afim;"); printf("\n b- Função Linear;"); printf("\n c- Função Constante;"); printf("\n d- Função Exponencial;"); printf("\n e- Função Polinomial de Segundo Grau."); printf("\n2- Indefinido"); printf("\n3- Sair"); printf("\n\nDigite a opção desejada: "); scanf("%d",&option); system("cls"); switch(option) { case 1: do{ printf("\t\t\t\tMenu - Funções"); printf("\n\nFunções: "); printf("\n 1- Função Afim;"); printf("\n 2- Função Linear;"); printf("\n 3- Função Constante;"); printf("\n 4- Função Exponencial;"); printf("\n 5- Função Polinomial de Segundo Grau;"); printf("\n 6- Voltar ao menu principal."); printf("\n\nDigite a opção desejada: "); scanf("%d",&optionf); system("cls"); while(getchar() != '\n')continue; //[?] limpa o stream da telca ENTER; switch(optionf) { case 1: {printf("\t\t\t\tFUNÇÃO AFIM"); printf("\n\nPara a função do tipo y=ax+b, determine os parâmetros:"); printf("\n\nDigite o valor de a: "); scanf("%f",&a); printf("\nDigite o valor de b: "); scanf("%f",&b); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat); preenche_mat_y(qtd,mat,a,b); show_mat_pontos(qtd,mat);} break; case 2: {int index; printf("\t\t\t\tFUNÇÃO LINEAR"); printf("\n\nPara a função do tipo y=ax, determine o parâmetro:"); printf("\n\nDigite o valor de a: "); scanf("%f",&a); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat); for(index=0;index<=qtd-1;index++) { mat[index][1]=a*mat[index][0]; } show_mat_pontos(qtd,mat);} break; case 3: {int index; printf("\t\t\t\tFUNÇÃO CONSTANTE"); printf("\n\nPara a função do tipo y=b, determine o parâmetro:"); printf("\n\nDigite o valor de b: "); scanf("%f",&b); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat); for(index=0;index<=qtd-1;index++) { mat[index][1]=b; } show_mat_pontos(qtd,mat);} break; case 4: {int index; printf("\t\t\t\tFUNÇÃO EXPONENCIAL"); printf("\n\nPara a função do tipo y=c^x, determine o parâmetro:"); printf("\n\nDigite o valor de c: "); scanf("%lf",&c); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat); for(index=0;index<=qtd-1;index++) { mat[index][1]=pow(c,mat[index][0]); } show_mat_pontos(qtd,mat);} break; case 5: {int index; double a_p; float c_p; printf("\t\t\t\tFUNÇÃO POLINOMIAL"); printf("\n\nPara a função do tipo y=ax^2+bx+c, determine os parâmetros:"); printf("\n\nDigite o valor de a: "); scanf("%lf",&a_p); printf("\nDigite o valor de b: "); scanf("%f",&b); printf("\nDigite o valor de c: "); scanf("%f",&c_p); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat); for(index=0;index<=qtd-1;index++) { mat[index][1]=pow(a_p*mat[index][0],2)+b*mat[index][0]+c_p; } system("cls"); printf("Pontos (x ; y):"); for(index=0;index<=qtd-1;index++) { printf("\n\n%dº Ponto: (%.2f;%.2lf)\n",1+index,mat[index][0],mat[index][1]); }} break; case 6: return main(); default: printf("Opção Inválida! Tente novamente."); } printf("\n\n"); system("pause"); system("cls"); }while(option!=6); case 2: //Sei Lá!!!!!!!! case 3: printf("\n\t\t\t\tFIM DO PROGRAMA!!"); printf("\n\n\n"); } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////// Biblioteca_Projeto void preenche_mat_x(int qtd, float mat[qtd][2]) { int index; for(index=0;index<=qtd-1;index++) { printf("\nEntre com valor real para x%d: ",index+1); scanf("%f",mat[index]); } return; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// void preenche_mat_y(int qtd, float mat[qtd][2], float a, float b ) { int index; for( index=0;index<=qtd;index++) { mat[index][1]=a*mat[index][0]+b; } return; } ////////////////////////////////////////////////////////////////////////////////// void show_mat_pontos(int qtd, float mat[qtd][2] ) { int index; system("cls"); printf("Pontos (x ; y):"); for(index=0;index<=qtd-1;index++ ) { printf("\n\n%dº Ponto: (%.2f ; %.2f)\n",1+index,mat[index][0],mat[index][1]); } return; } ///////////////////////////////////////////////////////////////////////////////////
  10. Hum....mas e vetores, propriamente ditos? Por exemplo, eu monto uma matriz com 2 linhas e 2 coluna: mat[2][2]; Quando eu digito mat[2][0] e mat[2][1], esse 0 e esse 1 se referem as duas colunas? porque no programa, eu declaro float mat[qtd][2]; Depois, pego os valores de x e preencho um VETOR mat[index], correto?; O que seria o mat[index][0] e mat[index][1]??? Deu pra entender???? Desculpa pela confusão, mas essa lógica não entra na minha cabeça...
  11. SIM!!! Acabei conseguindo agora a pouco! Cara, está correto dizer que meu programa contém vetores e matrizes???? Fico na dúvida porque a função preenche mat é patricamente um preenche vet, entende?
  12. Pessoal, um dos requisitos de um projeto que eu estou fazendo é a utilização de vetores e também de matrizes (vetores bidimensionais). Alguém pode, primeiramente, me explicar o que está ocorrendo nesses laços de repetição?? No código abaixo, há tanto vetores quanto matrizes ou apenas vetores??? Muito Obrigado!!!! #include <stdio.h> #include <locale.h> #include <math.h> main() { char option,optionf; float a,b; double c; int qtd,index; setlocale(LC_ALL,"portuguese"); printf("\t\t\t\tFUNÇÃO AFIM"); printf("\n\nPara a função do tipo y=ax+b, determine os parâmetros:"); printf("\n\nDigite o valor de a: "); scanf("%f",&a); printf("\nDigite o valor de b: "); scanf("%f",&b); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; for(index=0;index<=qtd-1;index++) { printf("\nEntre com valor real para x%d: ",index+1); scanf("%f",mat[index]); } for(index=0;index<=qtd-1;index++) { mat[index][1]=a*mat[index][0]+b; } for(index=0;index<=qtd-1;index++) { printf("%dº Ponto(%.2f;%.2f)\n",1+index,mat[index][0],mat[index][1]); } }
  13. O que seria unsigned?? Há alguma possibilidade de implementar função float? Aqui não estou conseguindo fazer dar certo, segue o que fiz abaixo #include <stdio.h> #include <locale.h> #include <math.h> #include "Biblioteca_Projeto.h" main() { char option,optionf; float a,b; double c; int qtd; setlocale(LC_ALL,"portuguese"); printf("\t\t\t\tFUNÇÃO AFIM"); printf("\n\nPara a função do tipo y=ax+b, determine os parâmetros:"); printf("\n\nDigite o valor de a: "); scanf("%f",&a); printf("\nDigite o valor de b: "); scanf("%f",&b); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; preenche_mat_x(qtd,mat[qtd][2]); for(index=0;index<=qtd-1;index++) { mat[index][1]=a*mat[index][0]+b; } for(index=0;index<=qtd-1;index++) { printf("%dº Ponto(%.2f;%.2f)\n",1+index,mat[index][0],mat[index][1]); } } /////////////////////////////////////////////////////////////////////////// CÓDIGO DA BIBLIOTECA void preenche_mat_x(unsigned qtd, float mat[qtd][2]) { int index; for(index=0;index<=qtd-1;index++) { printf("Entre com valor real para x%d: ",index+1); scanf("%f",mat[index]); } }
  14. Boa noite, abaixo segue um pedaço de um código em que estou trabalhando. Um dos requisitos desse trabalho, envolve o uso de funções do tipo void e do tipo float ou double. Notem, por favor, que o pedaço extraído se encontra dentro de um case do switch e que as partes contendo pontos de interrogação se referem-se aquelas em que o uso de funções seria apropriado (eu acredito). Caso alguém aí possa me mostrar como ficaria, pra esse caso em especial, a função, eu agradeço!! OBS.: meu objetivo é adicionar a função numa biblioteca e chamá-la na função main(). case 1: {int index; printf("\t\t\t\tFUNÇÃO AFIM"); printf("\n\nPara a função do tipo y=ax+b, determine os parâmetros:"); printf("\n\nDigite o valor de a: "); scanf("%f",&a); printf("\nDigite o valor de b: "); scanf("%f",&b); printf("\nInforme o número de pontos, da coordenada x: "); scanf("%d",&qtd); float mat[qtd][2]; for(index=0;index<=qtd-1;index++) ///// ???????? função do tipo void (eu acredito), pois apenas preenche a matrix { printf("Entre com valor real para x%d: ",index+1); scanf("%f",mat[index]); } for(index=0;index<=qtd-1;index++) //////// ???????????? função do tipo void { mat[index][1]=a*mat[index][0]+b; } for(index=0;index<=qtd-1;index++) /////// ??????????????????? função do tipo float ou double, pois me retorna um valor { printf("%dº Ponto(%.2f;%.2f)\n",1+index,mat[index][0],mat[index][1]); }} break;

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...