Ir para conteúdo
Nélio Junior

como programar uma linha como um limite e criar uma nova linha como reflexão?

Recommended Posts

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


  • Conteúdo Similar

    • Por Lelre Ferreira
      Boa noite a todos.
       
      Estou com uma atividade no qual necessito informar se a matriz é simétrica ou não com base nos valores digitados pelo usuário. O meu código está meio caminho andado. Uma matriz simétrica é a matriz na qual os valores abaixo da diagonal principal são iguais os valores acima da diagonal principal. Logo pensei, se (i < j) valores acima da diagonal e (i  > j) valores abaixo da diagonal. Fiz os testes em um FOR, onde se as condições atenderem os requisitos os valores seriam armazenados em vetores distintos, um vetor para valores acima da diagonal e outro vetor para valores abaixo.
       
      Depois eu ia comprar os dois vetores para ver se os valores são iguais mas me deparei com um erro de lógica. Vou postar o código e comentar o erro.
      #define TAM 3 #include <stdio.h> #include <stdlib.h> #include <locale.h> void receberMatriz(int matriz[TAM][TAM]); void acimaDiagonal(int matriz[TAM][TAM], int acimaD[TAM]); void abaixoDiagonal(int matriz[TAM][TAM], int abaixoD[TAM]); void TesteValorVetor(int matriz[TAM][TAM], int acimaD[TAM], int abaixoD[TAM]); int main(void) { setlocale(LC_ALL, ""); int matriz[TAM][TAM] = {0}; int abaixoD[TAM] = {0}; int acimaD[TAM] = {0}; receberMatriz(matriz); acimaDiagonal(matriz, acimaD); abaixoDiagonal(matriz, abaixoD); TesteValorVetor(matriz, acimaD, abaixoD); return 0; } void receberMatriz(int matriz[TAM][TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { printf("Insira valor pos. [%i][%i]: ", i, j); scanf("%i", &matriz[i][j]); } } } void acimaDiagonal(int matriz[TAM][TAM], int acimaD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i < j) { acimaD[j] = matriz[i][j]; } } } } void abaixoDiagonal(int matriz[TAM][TAM], int abaixoD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i > j) { abaixoD[j] = matriz[i][j]; } } } } void TesteValorVetor(int matriz[TAM][TAM], int acimaD[TAM], int abaixoD[TAM]) { int i, j; system("cls"); for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { printf("[%i] ", matriz[i][j]); } printf("\n"); } printf("\n"); for(i = 0; i < TAM; i++) { printf("[%i]", acimaD[i]); } printf("\n"); for(i = 0; i < TAM; i++) { printf("[%i]", abaixoD[i]); } }  
      Nas funções:
       
      void acimaDiagonal(int matriz[TAM][TAM], int acimaD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i < j) { acimaD[j] = matriz[i][j]; } } } } void abaixoDiagonal(int matriz[TAM][TAM], int abaixoD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i > j) { abaixoD[j] = matriz[i][j]; } } } }  
       
      Eu faço a verificação (i < j), acima do diagonal e vise-versa e então armazeno em um vetor. Quando mando mostrar o vetor para ver quais valores tenho lá. Supondo que eu coloque 1, 2, 3, 4, 5, 6, 7, 8, 9... Os valores deveriam ser para o primeiro vetor: [2][3][6] referente aos valores acima da diagonal principal. E [4][7][8] valores abaixo da diagonal principal... Mas ao invés disso o código está me retornando o seguinte: [0][2][6] e [7][8][0]... Ou seja, não está atribuindo alguns valores.
       
      A11, A12, A13
      A21, A22, A23
      A31, A32, A33
       
      Eu identifiquei um erro, na primeira função void acimaDiagonal() quando ele faz a primeira verificação no A11, como a condição se só atribui se for i < j, na primeira casa do primeiro vetor ele ignora qualquer alteração deixando o [0]... Como posso corrigir isso? Fui claro na minha dúvida?
    • Por Lelre Ferreira
      Boa noite a todos. Estou preso em na seguinte questão: Dada uma matriz de 4 x 5 elementos inteiros, calcular a soma de cada linha, de cada coluna e de todos os seus elementos. 
      Obs: Utilize um vetor para armazenar o resultado da soma de cada linha e outro para a soma de cada coluna. Então o programa pede o seguinte:   12345 = [15]
      67890 = [30]
      98765 = [35]
      43212 = [12]   Armazenar a soma de cada linha da matriz em um vetor: VetorLinha[4] onde = [15], [30], [35], [12] estariam armazenados, assim como vetorColuna com seus respectivos valores
      Eis o meu código:
          #include <stdio.h> #include <stdlib.h> #include <locale.h> void receberMatriz(int matriz[4][5]); void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]); void resultadoMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]); int main(void) { setlocale(LC_ALL, ""); int matriz[4][5]; int vetorA[5]; int vetorB[4]; receberMatriz(matriz); processarMatriz(matriz, vetorA, vetorB); resultadoMatriz(matriz, vetorA, vetorB); return 0; } void receberMatriz(int matriz[4][5]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 5; j++) { printf("Insira valor posição [%i][%i]: ", i, j); scanf("%i", &matriz[i][j]); } } } void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 5; j++) { vetorA[j] = matriz[i][j]; soma = soma + vetorA[j]; vetorA[j] = soma; } } for(j = 0; j < 5; j++) { for(i = 0; i < 4; i++) { vetorB[i] = matriz[j][i]; soma = soma + vetorB[i]; vetorB[i] = soma; } } } void resultadoMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]) { int i, j; }  
             
      Claramente eu não alcancei a lógica e queria entender como eu faria esse algoritmo. Não sei o que devo fazer para concluir com êxito nessa parte do código:      void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 5; j++) { vetorA[j] = matriz[i][j]; soma = soma + vetorA[j]; vetorA[j] = soma; } } for(j = 0; j < 5; j++) { for(i = 0; i < 4; i++) { vetorB[i] = matriz[j][i]; soma = soma + vetorB[i]; vetorB[i] = soma; } } }  
    • Por macielcr7
      Estou usando o sdk dahua para conectar-me a um DVR. Até então. Estou tendo problemas para obter os bytes
      retornados de uma câmera. e exportar em formato de imagem. Sou iniciante e não tenho ideia. como.
       
      // real-time monitoring method g_lRealHandle = CLIENT_RealPlayEx(g_lLoginHandle, command_options.dvr_channel, NULL, emRealPlayType); //set-callback CLIENT_SetRealDataCallBackEx(g_lRealHandle, &RealDataCallBackEx, NULL, dwFlag) //bytes de retorno da camera void CALLBACK RealDataCallBackEx(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LONG param, LDWORD dwUser) { // if more than one real-time monitoring use same data callback, we can judge by parameter lRealHandle. //NESTA PARTE QUE QUERIA PEGAR OS FRAMES DOS BYTES E SALVAR A IMAGEM fwrite (pBuffer, 1, dwBufSize, file); fflush(file); //original A/V hybrid data //printf("receive real data, param: lRealHandle[%ld], dwDataType[%u], pBuffer[%p], dwBufSize[%u], param[%d], dwUser[%ld] - [%d]\n", lRealHandle, dwDataType, pBuffer, dwBufSize, param, dwUser, bInput); }
    • Por Nadiah
      Gostaria de saber, como faço para manipular um arquivo em PDF, em C.
      A questão é a seguinte: Gostaria de fazer o mesmo que faço em txt por exemplo, entretanto, em PDF, de modo que eu consiga abri-lo.
      Seria para extrair relatórios no caso, de coisas digitadas no prompt. 
    • Por Anderson Jesus
      O enunciado diz: "1. Escreva um programa que leia vários números inteiros e positivos e que calcule e mostre o maior e o menor número lido. Considere que:
      Para encerrar a entrada de dados, deve ser digitado zero.
      Para valores negativos, deve ser enviada uma mensagem, informando que o valor é negativo.
              Os valores negativos ou iguais a zero não entrarão nos cálculos.
      "
       
      Até o momento fiz da seguinte forma:
       
      #include <stdio.h> #include <stdlib.h> int main (void) {     int quant_val=0,numero=1,soma=0,maior=0,menor=0;          printf("Insira o numero positivo: ");     scanf("%d",&numero);          while(numero>=1 || numero!=0){                  quant_val++;         soma=soma+numero;         if(numero<0){             printf("Valor e negativo!\n");         }                  if(numero==1){             maior=numero;             menor=numero;         }                  if(numero>maior){             maior=numero;         }                  if(numero<menor){             maior=numero;         }              printf("Insira o numero positivo: ");     scanf("%d",&numero);          }          printf("O numero maior e: %d\n",maior);     printf("O numero menor e: %d\n",menor);     printf("A soma dos numeros e: %d\n",soma);          system("pause");     return 0;          }  
      O problema é que não estou conseguindo remover os número negativos do cálculo.
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: