Professor, poderia fazer um vídeo igual ao anterior só que agora para matrizes, tentei seguir a lógica dele para matrizes, mas não deu muito certo, ai na hora de fazer a questão eu ficava clicando em executar e nunca dava o quadrado mágico kkkkkkkkkkkkkk ai quando vi o vídeo coloquei igual o seu. #include #include #include int main (){ int tam = 4; int l, c, mat[4][4]={16,3,2,13,5,10,11,8,9,6,7,12,4,15,14,1}, vet[(tam*2)+2], soma=0, fim=tam-1, magico=1;
Eu tentei gerar um código que parasse de testar assim que uma linha, coluna ou diagonal fosse diferente da constante mágica e foi muuuuito difícil pra mim. Tô feliz porque consegui, mas fica aquela sensação de que a lógica ainda é algo não trivial pra mim. Alguém aqui já passou por essa sensação e conseguiu vencer essa dificuldade?
#include #include #include int main() { int i, j, linhas, colunas; srand(time(NULL)); do{ printf("Digite a quantidade de linhas: "); scanf("%d", &linhas); printf("Digite a quantidade de colunas: "); scanf("%d", &colunas); }while(linhas != colunas); int matriz[linhas][colunas], soma_dp, soma_ds, soma_total_linhas, soma_total_colunas, total_l, total_c; //PREENCHENDO A MATRIZ for (i = 0; i < linhas; i++){ for (j = 0; j < colunas; j++){ matriz[i][j] = rand() % 3; } } // MOSTRANDO A MATRIZ GERADA printf(" IMPRIMINDO A MATRIZ
"); for (i = 0; i < linhas; i++){ for (j = 0; j < colunas; j++){ printf("%2d ", matriz[i][j]); } printf(" "); } // SOMANDO DIAGONAL PRINCIPAL soma_dp = 0; for (i = 0; i < linhas; i++){ soma_dp += matriz[i][i]; } printf(" Soma da diagonal principal: %d ", soma_dp); // SOMA DIAGONAL SECUNDARIA soma_ds = 0; for (i = 0; i < linhas; i++){ soma_ds += matriz[i][j - 1 - i]; } printf("Soma da diagonal secundaria: %d ", soma_ds); // SOMA TOTAL DE CADA LINHA total_l = 0; printf("
SOMA TOTAL DE CADA LINHA "); for (i = 0; i < linhas; i++){ soma_total_linhas = 0; for (j = 0; j < colunas; j++){ soma_total_linhas += matriz[i][j]; } printf("Soma da linha %d = %d ", i, soma_total_linhas); total_l += soma_total_linhas; } // SOMA TOTAL DE CADA COLUNA total_c = 0; printf("
SOMA TOTAL DE CADA COLUNA "); for (j = 0; j < colunas; j++){ soma_total_colunas = 0; for (i = 0; i < linhas; i++){ soma_total_colunas += matriz[i][j]; } printf("Soma das colunas %d = %d ", j, soma_total_colunas); total_c += soma_total_colunas; } printf(" Soma total das linhas: %d", total_l); printf(" Soma total das colunas: %d ", total_c); if(total_l != total_c){ printf(" "); }else{ if(soma_dp != soma_ds){ printf(" "); }else{ printf("QUADRADO PERFEITO "); } } return 0; } Eu fiz assim kkk.
Professor, seguindo a ideia do vídeo anterior, como eu poderia preencher uma matriz com valores aleatórios que não venham a se repetir? Tentei seguir a ideia do preenchimento do vetor mas não consegui.
A ideia é exatamente a mesma Marcos com algumas pequenas alterações. Para uma matriz você pode inicializar a mesma com um valor que está fora do intervalo dos números que serão sorteados, por exemplo -1 se sua matriz tiver apenas números positivos. Em seguida sorteia números e insere na matriz apenas se eles ainda não existirem na matriz. Perceba que para cada número sorteado você precisa percorrer a matriz verificando se ele já existe.
Terminada a sequência, rumo a playlist de strings, suas aulas estão sendo uma benção🙏
Está na bíblia. Não só de maratona de séries vive o homem. Não. Espera... É algo parecido. hahaha
Bons estudos Mario.
Parabéns pelo trabalho
vc é mt foda professor, tava caçando faz um tempo uma playlist de estrutura de dados em C. obrigado!!
Pronto, encontrou a melhor do youtube hahahaha
Espero que ajude Pedro. Abraços e bons estudos.
faltou colocar no título exercício 15
Professor, poderia fazer um vídeo igual ao anterior só que agora para matrizes, tentei seguir a lógica dele para matrizes, mas não deu muito certo, ai na hora de fazer a questão eu ficava clicando em executar e nunca dava o quadrado mágico kkkkkkkkkkkkkk ai quando vi o vídeo coloquei igual o seu.
#include
#include
#include
int main (){
int tam = 4;
int l, c, mat[4][4]={16,3,2,13,5,10,11,8,9,6,7,12,4,15,14,1}, vet[(tam*2)+2], soma=0, fim=tam-1, magico=1;
for(l=0; l
Eu tentei gerar um código que parasse de testar assim que uma linha, coluna ou diagonal fosse diferente da constante mágica e foi muuuuito difícil pra mim. Tô feliz porque consegui, mas fica aquela sensação de que a lógica ainda é algo não trivial pra mim. Alguém aqui já passou por essa sensação e conseguiu vencer essa dificuldade?
#include
#include
#include
int main()
{
int i, j, linhas, colunas;
srand(time(NULL));
do{
printf("Digite a quantidade de linhas: ");
scanf("%d", &linhas);
printf("Digite a quantidade de colunas: ");
scanf("%d", &colunas);
}while(linhas != colunas);
int matriz[linhas][colunas], soma_dp, soma_ds, soma_total_linhas, soma_total_colunas, total_l, total_c;
//PREENCHENDO A MATRIZ
for (i = 0; i < linhas; i++){
for (j = 0; j < colunas; j++){
matriz[i][j] = rand() % 3;
}
}
// MOSTRANDO A MATRIZ GERADA
printf("
IMPRIMINDO A MATRIZ
");
for (i = 0; i < linhas; i++){
for (j = 0; j < colunas; j++){
printf("%2d ", matriz[i][j]);
}
printf("
");
}
// SOMANDO DIAGONAL PRINCIPAL
soma_dp = 0;
for (i = 0; i < linhas; i++){
soma_dp += matriz[i][i];
}
printf("
Soma da diagonal principal: %d
", soma_dp);
// SOMA DIAGONAL SECUNDARIA
soma_ds = 0;
for (i = 0; i < linhas; i++){
soma_ds += matriz[i][j - 1 - i];
}
printf("Soma da diagonal secundaria: %d
", soma_ds);
// SOMA TOTAL DE CADA LINHA
total_l = 0;
printf("
SOMA TOTAL DE CADA LINHA
");
for (i = 0; i < linhas; i++){
soma_total_linhas = 0;
for (j = 0; j < colunas; j++){
soma_total_linhas += matriz[i][j];
}
printf("Soma da linha %d = %d
", i, soma_total_linhas);
total_l += soma_total_linhas;
}
// SOMA TOTAL DE CADA COLUNA
total_c = 0;
printf("
SOMA TOTAL DE CADA COLUNA
");
for (j = 0; j < colunas; j++){
soma_total_colunas = 0;
for (i = 0; i < linhas; i++){
soma_total_colunas += matriz[i][j];
}
printf("Soma das colunas %d = %d
", j, soma_total_colunas);
total_c += soma_total_colunas;
}
printf("
Soma total das linhas: %d", total_l);
printf("
Soma total das colunas: %d
", total_c);
if(total_l != total_c){
printf("
");
}else{
if(soma_dp != soma_ds){
printf("
");
}else{
printf("QUADRADO PERFEITO
");
}
}
return 0;
}
Eu fiz assim kkk.
Professor, seguindo a ideia do vídeo anterior, como eu poderia preencher uma matriz com valores aleatórios que não venham a se repetir? Tentei seguir a ideia do preenchimento do vetor mas não consegui.
A ideia é exatamente a mesma Marcos com algumas pequenas alterações.
Para uma matriz você pode inicializar a mesma com um valor que está fora do intervalo dos números que serão sorteados, por exemplo -1 se sua matriz tiver apenas números positivos.
Em seguida sorteia números e insere na matriz apenas se eles ainda não existirem na matriz.
Perceba que para cada número sorteado você precisa percorrer a matriz verificando se ele já existe.
tentei criar um quadrado magico com numeros aleatorios gerados pelo rand e meu pc ta trabalhando ate agr kkkkkkkkkkk:
#include
#include
#include
int main() {
int m[4][4];
int soma, diferente = 0;
srand(time(NULL));
do {
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
m[i][j] = rand() % 100;
}
}
// imprime a matriz
printf("
Matriz 4x4:
");
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
printf("%2d ", m[i][j]);
}
printf("
");
}
// verifica as linhas e colunas
for(int i = 0; i < 4; i++) {
// verifica as linhas
soma = 0;
for(int j = 0; j < 4; j++) {
soma += m[i][j];
}
if(soma != 34) {
diferente++;
}
// verifica as colunas
soma = 0;
for(int j = 0; j < 4; j++) {
soma += m[j][i];
}
if(soma != 34) {
diferente++;
}
}
// verifica a diagonal princial
soma = 0;
for(int i = 0; i < 4; i++) {
soma += m[i][i];
}
if(soma != 34) {
diferente++;
}
// verifica a diagonal secundaria
soma = 0;
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
if(i + j == 3) {
soma += m[i][j];
}
}
}
if(soma != 34) {
diferente++;
}
} while(diferente != 0);
// verifica se e um quadrado magico e imprime a resposta
if(diferente) {
printf("
Nao e um quadrado magico
");
} else {
printf("
E um quadrado magico
");
}
return(0);
}