3:41 eu vez do nome do argumento do vetor na funcao ser "n", como a passagem é feita por referencia , eu podia nomear na mesma "v" certo , ficando ("int *v)? Que é o vetor que ta a passar como parametro
Para matrizes você pode usar os parâmetros assim: void imprime(int n, int m, int matriz[n][m]); Com n e m sendo definidos antes de definir a matriz, assim não precisa usar um número fixo nas colunas da matriz do protótipo da função.
Pois é cara, isso é bastante intuitivo, mas todo mundo, fala que é errado determinar o tamanho de um array ou matriz através de uma variável, até mesmo o professor deste vídeo, logo nos primórdios desta série. Mas ele não determina o porquê.
Claro que sim Maico. Você itera sobre os valores do array usando um for o a variável tam (que é o tamanho do vetor) e para cada posicão testa se o valor é menor que o menor numero até o momento, se for ele será o novo menor número da array. Ao final da iteração você devolve o menor número encontrado pela sua função. int menor(int *vetor, int tam){ int menor_num = vetor[0], i = 0; for (i; i < tam; i++){ if (vetor[i] < menor_num) menor_num = vetor[i]; }; return menor_num; }
ta muito bom mesmo as aulas. vou ter prova de estrutura de dados, estou estudando bastante passagem por referencia e por valor, e tinha uma certa dificuldade pra entender a passagem de um array como parametro. com esse vídeo de 7 minutinhos consegui entender muito bem hehe obrigado ai !!
você passa por referência e usa alocação dinâmica para alocar o quanto de memória você queira. ex: void alocar( int *var ) { int value = 0; scanf( " %d ", &value); var = (int *)calloc( value, sizeof( int ) ); //- e quando nao for usar a variavel mais só liberar a memoria free( var ); return ; }
Professor boa dia. Nessa aula 49 fiquei com uma duvida no for da função na parte do printf. No caso ele deveria imprimir so ate 4. Pois quando chega no i = 5 a condição da falsa, pois o i = 5 e o m = 5. i < m (5 < 5) isso e falso pois 5 = 5 ele pula o printf. Eu testei e ele está imprimindo ate 5. Não estou afirmando, so estou enviando a duvida.
i=0, m=5, n = v[5]={1,2,3,4,5} No for, o índice vai de 0 até 4(5 posições), e ele printa na tela os valores de n, na posição do índice. 1[0] 2 [1] . . .
Linguagem C Programação Descomplicada No caso uma preciso de outra função uma com (int matriz [][])... Tava com dúvida, pensei que o ponteiro ia apontar para o primeiro espaço de memória da matriz estática...
Ótima aula!!! Parabéns. Fiquei com uma dúvida, eu consegui criar uma matriz por referência sem demonstrar o valor das linhas e das colunas nos parâmetros. Este modelo está correto? Quando eu rodo o programa a matriz é executada normalmente. #include void printvetor (int *v, int tam) { int i=0; int n=0; for(i=0;i
muito bom!!!
Man, o tanto que tu me ajudou n tá escrito... Obrigado!!
Estamos aqui para ajudar!
O Bem-te-vi Ganhou seu minuto de fama nessa aula rsrs, boa aula professor.
gênio
3:41 eu vez do nome do argumento do vetor na funcao ser "n", como a passagem é feita por referencia , eu podia nomear na mesma "v" certo , ficando ("int *v)? Que é o vetor que ta a passar como parametro
Sim, o nome não importa no parâmetro. Pode ser qualquer um.
Na aula 49 no tempo 07:00 não entendi porque ele faz a mesma impressão sendo que estamos trabalhando com matriz. Porque
ele imprime um vetor puro.
Não entendi a sua dúvida
Para matrizes você pode usar os parâmetros assim:
void imprime(int n, int m, int matriz[n][m]);
Com n e m sendo definidos antes de definir a matriz, assim não precisa usar um número fixo nas colunas da matriz do protótipo da função.
Pois é cara, isso é bastante intuitivo, mas todo mundo, fala que é errado determinar o tamanho de um array ou matriz através de uma variável, até mesmo o professor deste vídeo, logo nos primórdios desta série. Mas ele não determina o porquê.
Porque o certo é usar uma constante usando o #define. Não uma variável em si.
parabéns explicou de forma muito simples, me ajudou muito aqui, muito obrigado!
FINALMENTE !Uma aula em que explicam direito. Mais um inscrito.
MDS!!! Aulas maravilhosas, simples e muito bem explicadas!!! Meu prof demorou 2h pra explicar tal assunto de maneira bem complicada.
Muito Obrigado!
Parecia que o pássaro tava cantando aqui kkkkkkk
obrigado pela ótima aula, todas tem sido de grande ajuda. abraços!!!
infinitamente melhor que na faculdade...
Quem ouviu o lindo canto do Bem-te-vi aos 6:42 da like!
gostaria de saber se dar para usar o array como uma função para escolher um valor menor entre varios valores
Claro que sim Maico. Você itera sobre os valores do array usando um for o a variável tam (que é o tamanho do vetor) e para cada posicão testa se o valor é menor que o menor numero até o momento, se for ele será o novo menor número da array. Ao final da iteração você devolve o menor número encontrado pela sua função.
int menor(int *vetor, int tam){
int menor_num = vetor[0], i = 0;
for (i; i < tam; i++){
if (vetor[i] < menor_num)
menor_num = vetor[i];
};
return menor_num;
}
Parabéns excelente aula
uma alternativa para se trabalhar com matrizes em funções seria o ponteiro para ponteiros não?
Sim.
ta muito bom mesmo as aulas. vou ter prova de estrutura de dados, estou estudando bastante passagem por referencia e por valor, e tinha uma certa dificuldade pra entender a passagem de um array como parametro. com esse vídeo de 7 minutinhos consegui entender muito bem hehe obrigado ai !!
como faço para passar um array como parametro sem tamanho definido?
você passa por referência e usa alocação dinâmica para alocar o quanto de memória você queira.
ex:
void alocar( int *var )
{
int value = 0;
scanf( " %d ", &value);
var = (int *)calloc( value, sizeof( int ) );
//- e quando nao for usar a variavel mais só liberar a memoria
free( var );
return ;
}
E quando eu não sei as dimensões da matriz, pq será o usuário que irá defini-la?
int iBytesiMatriz = 4;
int iMatriz[4][4];
int iTamiMatriz = sizeof(iMatriz) / (iBytesiMatriz*iBytesiMatriz);
você criar uma variável do um ponteiro tipo que você que e alocando memória.
E tem problema se eu por o & na frente do nome do array qd for passa-lo para a função?
Nops. Não é preciso, mas não há problemas.
Professor boa dia. Nessa aula 49 fiquei com uma duvida no for da função na parte do printf. No caso ele deveria imprimir so ate 4. Pois quando chega no i = 5 a condição da falsa, pois o i = 5 e o m = 5.
i < m (5 < 5) isso e falso pois 5 = 5 ele pula o printf. Eu testei e ele está imprimindo ate 5.
Não estou afirmando, so estou enviando a duvida.
i=0, m=5, n = v[5]={1,2,3,4,5}
No for, o índice vai de 0 até 4(5 posições), e ele printa na tela os valores de n, na posição do índice.
1[0]
2 [1]
.
.
.
Vc é o cara (:
#include
#include
#include
int l, c, i;
void printarMaior(int **p, int l, int c){
int i, j, maior = p[0][0];
printf("[");
for(i=0; i
Suas funções recebem como parâmetro um ponteiro para ponteiro (int **p), isso não é o mesmo que uma matriz estática.
Linguagem C Programação Descomplicada No caso uma preciso de outra função uma com (int matriz [][])... Tava com dúvida, pensei que o ponteiro ia apontar para o primeiro espaço de memória da matriz estática...
Ótima aula!!! Parabéns.
Fiquei com uma dúvida, eu consegui criar uma matriz por referência sem demonstrar o valor das linhas e das colunas nos parâmetros.
Este modelo está correto? Quando eu rodo o programa a matriz é executada normalmente.
#include
void printvetor (int *v, int tam)
{
int i=0;
int n=0;
for(i=0;i
Não estão. O que vc quer fazer, exatamente?