Aula bem completona, eu tava com duvidas na ultima aula mas acho q agr n, eu sem querer fiz o exercicio dessa aula na outra kkk. Eu fiz um algoritmo que usava 2 vetores para ordenação.
Professor, eu tinha realizado um algoritmo um pouco diferente, eu fixava o primeiro valor e ia alterando ele sempre que encontrasse um número menor, mas dessa forma com menor número de repeticões é muito mais interessante mesmo! Inclusive fica até mais fácil de entender o que esta acontecendo. Meu código tinha ficado assim: int main(){ setlocale(LC_ALL, "Portuguese"); int vetor[100], aux = 0; srand(time(NULL)); for(int i = 0; i < 100; i++){ vetor[i] = rand() % 1000; } printf(" Vetor: "); for(int i = 0; i < 100; i++) printf("%3d ", vetor[i]); for(int i = 0; i < 100; i++){ for(int j = i; j < 100; j++){ aux = vetor[i]; if(vetor[j] < aux){ vetor[i] = vetorO[j]; vetor[j] = aux; } } } printf("
Vetor ordenado: "); for(int i = 0; i < 100; i++) printf("%3d ", vetor[i]); getchar(); return 0; }
Perfeito Marcos. Ordenar o vetor "carregando" o menor elemento para o início é bem similar, a única diferença é que a troca agora ocorre quando você encontra um valor menor e não maior. Você pode aplicar a mesma ideia no seu algoritmo para identificar se o vetor já está ordenado.
🤔 🤔 🤔 Confesso que fiquei sem saber o que dizer agora rsrsrs Você assistiu o vídeo? O objetivo é ordenar um vetor de inteiros. Para ordenar números eu preciso comparar esses números de dois em dois para descobrir quem é maior e quem é menor. É isso que eu faço, pego um número e comparo com o número seguinte no vetor. Como estamos dentro de um for com a variável i, para cada valor de i eu vou comparar o número na posição i com o próximo. Como eu pego o próximo? É a posição seguinte do vetor, i + 1. Se o i vale 3, vou comparar o número da posição 3 com o da posição 4 ( i + 1 ). Se o i vale 79, vou comparar o número da posição 79 com o número da posição 80 ( i + 1 ).
Voltei na ativa professor, estou fazendo lógica 2 na faculdade, tá difícil convencer o povo que seu curso da 10 a 0 no Guanabara 😂 mas uma hora vão se dar conta.
😅 😅 😅 Seja bem vinda de volta Caren rsrsrs Muito obrigado pelo incentivo. De fato, a teoria parcial (incompleta) pode complicar bastante para quem está aprendendo.
creio q estejas equivocado meu amigo. São cursos para propósitos diferentes. O do Guanabara de lógica foi feito para pessoas q estavam entrando no mundo da programação, portanto é bom para iniciantes que nunca tiveram contato com programação principalmente. Na minha facul de ADS o professor começou dando lógica em C com exercícios similares a mesma e ensinava bem, porém a galera empacava porque nunca viu uma linguagem de programação na vida, e enquanto alguns tinham muita dificuldade, outros conseguiam entender boa parte do c, mas eram minoria. Já esse curso acredito que seja para quem esteja mais avançado no mundo da programação (talvez para alguém q tenha feito o do Guanabara), e já tenha começado a estudar os assuntos, ou pessoas que querem se arriscar pulando direto para lógica com a própria linguagem, o que pode dar bom ou dar mtt ruim.
@@Rafael-fp9xc mas sem dúvida que esse curso vem depois de lógica de programação, mas eu paguei mensalidade por 6 meses no curso do Guanabara, em línguagem C no estudo nalta, ele se quer chegou em vetor, mas o curso de Java dele e sensacional, só comecei a entender os conceitos de programação orientada a objeto com os vídeos dele, estava me referindo a linguagem C..
@@Rafael-fp9xc e no curso de Python ele deixa desafios de coisas que ainda não ensinou, frustrei um pouco de não conseguir fazer, aqui, consegui fazer tudo, pois as aulas conceituais foram bem explicadas, nos dando a base para resolver os exercícios sozinho..
Vindo aqui de novo em matrizes pq encontrei uma dificuldade tentando fazer programas sozinho, bem professor como faço pra trocar as linhas pelas colunas de uma matriz? eu tentei fazer um código que a partir do scanf pegasse os valores normalmente assim como o senhor ensinou, fiz a impressão dessa matriz, mas ai eu pensei em pegar essa matriz e em vez de fazer a transposta, inverter os valores que são das linhas fossem para coluna. eu tentei fazer um bolha (segue abaixo) mas deu errado dmskkkkk aux = matriz[i][j]; aux2 = matriz[j][i]; matriz[j][i] = aux; matriz[i][j] = aux2;
Olá Mario. Você disse que não está fazendo a matriz transposta, mas fazendo com que a linha vire a coluna. Isso é uma matriz transposta. A ideia é esta mesma, copiar o elemento da posição ij para a posição ji, mas você precisa de outra matriz para copiar de uma matriz A para uma matriz B, senão os elementos ficarão todos embaralhados. Você teria percebido isso se tivesse desenhado uma matriz pequena em um papel e tentado fazer esse passo a passo. Vamos lá. Imagine a seguinte matriz: 3 5 7 8 9 4 1 6 2 Você disse que está trocando os elementos da linha com a coluna, então a linha 3 5 7 irá se tornar a primeira coluna enquanto a coluna 3 8 1 irá se tornar a primeira linha. 3 8 1 5 9 4 7 6 2 Até aí tudo bem. Agora vem o problema. Observe que o 5 e o 7 já foram trocados, mas quando você chegar na linha de índice 1 o 5 será trocado novamente e quando você chegar na linha de índice 2 o 7 será trocado novamente. Isso ocorre porque você está tentado gerar a matriz transposta manipulando uma única matriz. O algoritmo bolha é um algoritmo de ordenação, ele não vai te ajudar muito não.
Salvando os estudantes de TI do Brasil
Com certeza! Um dos melhores cursos que tem no youtube!
muito bom
Obrigado Jefersson.
@@programeseufuturo , professor nota 1000000000
Suas aulas são top. Tem alguma aula sobre ordenação quick sort em C?
muito bom para explicar
Muito bom!
Ótima didática. 👍
Obrigado, aprendi muito com vc!
Que bom Caio :)
Por nada e obrigado pelo feedback :)
Muito obrigado! Pude compreender o Bubble Sort perfeitamente!
Por nada Look :)
Queria te agradecer, estou tendo aula de estrutura de dados no terceiro semestre da faculdade e esses seus vídeos estão me ajudando demais
Opa, que bom saber que estão ajudando André :)
Obrigado pelo feedback e bons estudos.
Aula bem completona, eu tava com duvidas na ultima aula mas acho q agr n, eu sem querer fiz o exercicio dessa aula na outra kkk. Eu fiz um algoritmo que usava 2 vetores para ordenação.
rsrsrs faz parte Ryan, mas fique atento ao que o exercício de fato está pedindo, isso pode ser decisivo em uma avaliação rsrs.
Muito bom! Você tem videos sobre quick e merge sort?
faltou colocar no título exercício 7
JOGA O FINO DA BOLA!
🤔 🤔 🤔
@@programeseufuturo kkkkkkkkkkkkkkk
Professor, eu tinha realizado um algoritmo um pouco diferente, eu fixava o primeiro valor e ia alterando ele sempre que encontrasse um número menor, mas dessa forma com menor número de repeticões é muito mais interessante mesmo! Inclusive fica até mais fácil de entender o que esta acontecendo. Meu código tinha ficado assim:
int main(){
setlocale(LC_ALL, "Portuguese");
int vetor[100], aux = 0;
srand(time(NULL));
for(int i = 0; i < 100; i++){
vetor[i] = rand() % 1000;
}
printf("
Vetor: ");
for(int i = 0; i < 100; i++)
printf("%3d ", vetor[i]);
for(int i = 0; i < 100; i++){
for(int j = i; j < 100; j++){
aux = vetor[i];
if(vetor[j] < aux){
vetor[i] = vetorO[j];
vetor[j] = aux;
}
}
}
printf("
Vetor ordenado: ");
for(int i = 0; i < 100; i++)
printf("%3d ", vetor[i]);
getchar();
return 0;
}
Perfeito Marcos. Ordenar o vetor "carregando" o menor elemento para o início é bem similar, a única diferença é que a troca agora ocorre quando você encontra um valor menor e não maior. Você pode aplicar a mesma ideia no seu algoritmo para identificar se o vetor já está ordenado.
professor, não entendi pq usou i + 1 no for que ordena, poderia dar uma breve explicaçao?
🤔 🤔 🤔
Confesso que fiquei sem saber o que dizer agora rsrsrs
Você assistiu o vídeo?
O objetivo é ordenar um vetor de inteiros. Para ordenar números eu preciso comparar esses números de dois em dois para descobrir quem é maior e quem é menor. É isso que eu faço, pego um número e comparo com o número seguinte no vetor. Como estamos dentro de um for com a variável i, para cada valor de i eu vou comparar o número na posição i com o próximo. Como eu pego o próximo? É a posição seguinte do vetor, i + 1.
Se o i vale 3, vou comparar o número da posição 3 com o da posição 4 ( i + 1 ).
Se o i vale 79, vou comparar o número da posição 79 com o número da posição 80 ( i + 1 ).
😘
:)
Voltei na ativa professor, estou fazendo lógica 2 na faculdade, tá difícil convencer o povo que seu curso da 10 a 0 no Guanabara 😂 mas uma hora vão se dar conta.
Ele não dá a teoria suficiente para gente resolver os desafios, dai frusta muito.
😅 😅 😅
Seja bem vinda de volta Caren rsrsrs
Muito obrigado pelo incentivo. De fato, a teoria parcial (incompleta) pode complicar bastante para quem está aprendendo.
creio q estejas equivocado meu amigo. São cursos para propósitos diferentes. O do Guanabara de lógica foi feito para pessoas q estavam entrando no mundo da programação, portanto é bom para iniciantes que nunca tiveram contato com programação principalmente. Na minha facul de ADS o professor começou dando lógica em C com exercícios similares a mesma e ensinava bem, porém a galera empacava porque nunca viu uma linguagem de programação na vida, e enquanto alguns tinham muita dificuldade, outros conseguiam entender boa parte do c, mas eram minoria. Já esse curso acredito que seja para quem esteja mais avançado no mundo da programação (talvez para alguém q tenha feito o do Guanabara), e já tenha começado a estudar os assuntos, ou pessoas que querem se arriscar pulando direto para lógica com a própria linguagem, o que pode dar bom ou dar mtt ruim.
@@Rafael-fp9xc mas sem dúvida que esse curso vem depois de lógica de programação, mas eu paguei mensalidade por 6 meses no curso do Guanabara, em línguagem C no estudo nalta, ele se quer chegou em vetor, mas o curso de Java dele e sensacional, só comecei a entender os conceitos de programação orientada a objeto com os vídeos dele, estava me referindo a linguagem C..
@@Rafael-fp9xc e no curso de Python ele deixa desafios de coisas que ainda não ensinou, frustrei um pouco de não conseguir fazer, aqui, consegui fazer tudo, pois as aulas conceituais foram bem explicadas, nos dando a base para resolver os exercícios sozinho..
Vindo aqui de novo em matrizes pq encontrei uma dificuldade tentando fazer programas sozinho, bem professor como faço pra trocar as linhas pelas colunas de uma matriz? eu tentei fazer um código que a partir do scanf pegasse os valores normalmente assim como o senhor ensinou, fiz a impressão dessa matriz, mas ai eu pensei em pegar essa matriz e em vez de fazer a transposta, inverter os valores que são das linhas fossem para coluna.
eu tentei fazer um bolha (segue abaixo) mas deu errado dmskkkkk
aux = matriz[i][j];
aux2 = matriz[j][i];
matriz[j][i] = aux;
matriz[i][j] = aux2;
Olá Mario.
Você disse que não está fazendo a matriz transposta, mas fazendo com que a linha vire a coluna. Isso é uma matriz transposta.
A ideia é esta mesma, copiar o elemento da posição ij para a posição ji, mas você precisa de outra matriz para copiar de uma matriz A para uma matriz B, senão os elementos ficarão todos embaralhados. Você teria percebido isso se tivesse desenhado uma matriz pequena em um papel e tentado fazer esse passo a passo.
Vamos lá. Imagine a seguinte matriz:
3 5 7
8 9 4
1 6 2
Você disse que está trocando os elementos da linha com a coluna, então a linha 3 5 7 irá se tornar a primeira coluna enquanto a coluna 3 8 1 irá se tornar a primeira linha.
3 8 1
5 9 4
7 6 2
Até aí tudo bem. Agora vem o problema. Observe que o 5 e o 7 já foram trocados, mas quando você chegar na linha de índice 1 o 5 será trocado novamente e quando você chegar na linha de índice 2 o 7 será trocado novamente. Isso ocorre porque você está tentado gerar a matriz transposta manipulando uma única matriz.
O algoritmo bolha é um algoritmo de ordenação, ele não vai te ajudar muito não.
essa questão eu tive que bater cabeça, mas o erro foi so na hora deu colocar o valor do meu j
#include
#include
#include
int main (){
int i, j, vet[100], aux;
srand(time(NULL));
for(i = 0; i < 100; i++){
vet[i] = 1 + rand() % 100;
printf("%3d ", vet[i]);
}
printf("
");
for(i = 0; i < 100; i++){
for(j = i; j < 100; j++){
if(vet[i] > vet[j]){
aux = vet[i];
vet[i] = vet [j];
vet[j] = aux;
}
}
printf("%3d ", vet[i]);
}
return 0;
}