-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
@Cristiano Nogueira Boa Noite, Não estou conseguindo ler o seu código, é importante saber o que ele faz, mas um teste de mesa com estes nomes de variáveis que você colocou limitou muito o entendimento, ficou particular. Dou-te um conselho, você refazer o código sem alocação dinâmica e sem entrada de dados, focando apenas na tarefa principal que é a multiplicação das matrizes. Às vezes é melhor, resolver o problema principal e depois criar uma função exclusiva para o código.
-
@Luis Felipe Favaretto Boa noite Luis, Não tenho conhecimento de Função para este fim. Com relação a solução que conseguiu usando loop FOR, ou usando loop WHILE não tem muito haver com otimização apenas uma questão de gosto mesmo, ambos laços são usuais e certamente você fez um bom código.
-
@Mateus NunesBoa tarde, A matriz é necessariamente uma Matriz (i ,j) 2x2? Sim, então: Na condição de (diag. Principal == diag. Segundaria) é preciso que todos os elemento sejam iguais. De maneira alguma, ---Não, mesmo! Porém se o problemas estivesse em uma matriz quadrada de ordem 2, o solução é simples. A matriz é necessariamente uma Matriz (i ,j) quadrada? Quero dizer que i será sempre igual a j. No esquema acima é possível determinarmos alguns noções, duas noções na verdade. Logo a seguir estão estas noções: x = j = i, logo x é tanto a linha(i), quanto coluna(j): se x = 0, incrementamos x 1 a 1 descolaremos i, j simultaneamente, com isso teremos a diagonal principal. No instante do começo do laço i = 1, j = 4, no segundo instante do laço i = 2, j = 3. logo notamos que para cada incremento de i, existe um decremento de j, com isso teremos a diagonal segundaria. O código //Mauro Britivaldo #include <stdio.h> int main( void ) { int Matrix[2][2] = { { 2, 2 }, { 2, 3 }}; int i,j,x; x = 0, i = 0, j = 1; for( ; x < 2 ;x++, i++, j-- ) { printf( "%d == %d? %s\n", Matrix[x][x], Matrix[i][j], Matrix[x][x] == Matrix[i][j]? "SIM":"NAO"); } return 0; }
-
Boa tarde @Luis Felipe Favaretto Na matemática o problema chamasse permutações simples. Step1: O programa vai primeiro verificar o número de letras e calcular o fatorial. Step2: A letra inicial da palavra vai troca de lugar com sua vizinha no sentido horário E.i: Palavra(G>A>T>O) >> Palavra(A>G>T>O) >> Palavra( A>T>G>O ) >> Palavra Até que G torne-se a ultima letra do array; Quando isso acontece o processo se repete com a primeira letra, agora será Palavra(A>T>O>G)... assim até que a palavra GATO retome sua forma.
-
#include <stdio.h> #include <stdlib.h> #define SIZE_VET 4 void average( int l,int c[][SIZE_VET] ); int main( void ) { int alunos[3][SIZE_VET]; int i,j; int soma=0, media=0; for(i=0;i<3;i++) { printf("turma %i\n",i); for (j=0;j<4;j++) { printf("Digite a nota dos alunos: "); scanf( "%i",&alunos[i]+j ); } } average( 3,SIZE_VET ); system("pause"); return 0; } void average( int l,int c[][SIZE_VET] ) { float media; printf( "****Media da Classe." ); int i,j; for( j = 0;j < SIZE_VET;j++ ) { media = .0f; for( i = 0;i < l;i++ ) { media += c[i][j]; } printf( "Media da nota #%d: %.1f\n",j + 1,media / i ); } }
-
AAAAH sim entendi; Sim, de fato uma matriz como no exemplo fica assim dentro da perspectiva mecânica da linguagem: Quadro de Células de Memória (RAM) C00 => é primeiro local na memória que foi reservado, então quando eu declaro um C[ i ][ j ], seu índices reais são: C[ i - 1][ j - 1]. No caso acima se i = 2, j = 2 então C[ 2 ][ 2 ], tem índices C[ 2 - 1][ 2 - 1], o menor valor para linhas e colunas é 0, maior valor para linha e colunas e i - 1, j - 1 respectivamente para acesso as células de memória. Observe: Declaramos por exemplo: int C[2][2]; para acessar o primeiro elemento da matriz faremos: C[ 0 ][ 0 ], pois o primeiro elemento é C + 0 * j + 0 = C; para acessar o segundo elemento da matriz faremos: C[ 0 ][ 1 ], aqui a mecânica da linguagem faz sua mágica o primeiro índice (linhas) soma ao múltiplo o segundo índice (colunas), logo teremos dentro da mecânica de linguagem C[0][1] = C + 0 * 2 + 1 = C + 1 = Segundo elemento do Vetor ou linha 1, coluna 2; da matriz ainda podemos... C[1][1] = C + 1 * 2 + 1 = C + 3 = Quarto elemento do Vetor ou linha 2, coluna 2; da matriz. Mais por que multiplica a linguagem multiplica por dois, porque este foi o tamanho do vetor informado. Declaração: float Mat[ linhas ][ colunas ]; Acesso: x = Mat[ LINHAS - 1][COLUNAS - 1]; //Ultimo elemento da matriz Aqui acontece a aritmética de ponteiros dentro da mecânica da linguagem. Com mat[ index ] você esta acessando todos os elementos da primeiro coluna em todas as linhas na memória RAM. O primeiro par de colchetes de uma matriz representa suas linhas, e segundo suas colunas. Para acessar os valores da primeiro coluna de todas as linhas fazemos: mat[ index ][ 0 ]; Acessar valor... Para acessar o local na memória do computador podemos fazer assim para mesma situação: &mat[ index ][ 0 ]; ou mat[ index ]; isso na função scanf ou qualquer outra que deseja apenas o local na memória de todas as linhas da primeira coluna e se fosse da segunda coluna? Faça assim para segunda coluna: &mat[ index ][1]; ou mat[ index ] + 1; observe que a expressão [ index ] é o mesmo que index * 2. Lembre-se que o nome do vetor ou da matriz é sempre o primeiro elemento na memória. adicionado 5 minutos depois Bom pensar assim também: mat[ 3 ][ 2 ]; o segundo par de colchetes é o tamanho do vetor o primeiro par de colchetes é a quantidade de vetores do tamanho do segundo par [ 2 ] e mat é o marco 0, ou primeiro elemento da primeira coluna e primeira linha. Assim temos 3 vetores de 2 elemento na forma de uma matriz.
-
Boa pergunta!!! Então seu programa tem matrizes, e toda matriz é um conjunto de vetores. Se eu quiser posso tratar a matriz como vetor e um vetor como matriz. Por exemplo uma mat[ 3 ][ 3 ] é o mesmo que um vet[ 9 ], ouve que aconteceu??? Aconteceu a multiplicação dos índices. Com um pouco de aritmética o conceito de matriz e vetor tornasse mera conveniência Saiba mais em: Como usar ponteiros :: CProgressivo.net
-
Bom dia @Mateus Nunes Onde está escrito preenche_mat_x(qtd,mat[qtd][2]); O correto é: preenche_mat_x(qtd,mat); adicionado 1 minuto depois Lei mais sobre vetores neste link: O que são vetores :: CProgressivo.net
-
void preencher_mat_x( unsigned tamanho, float mat[ tamanho ][2] ) { int index; for( index = 0; index < tamanho; index++ ) { printf( "Entre com valor real para x%d: ",index + 1 ); scanf( " %f", mat[ index ] ); } return; } void preencher_mat_y( unsigned tamanho, float mat[ tamanho ][2], float a, float b ) { int index; for( index = 0; index < tamanho; index++ ) mat[ index ][1] = a * mat[ index ][0] + b; return; } void show_mat_pontos( unsigned tamanho, float mat[ tamanho ][2] ) { int index; for( index = 0; index < tamanho; index++ ) printf("%dº Ponto(%.2f;%.2f)\n",1 + index,mat[ index ][0],mat[ index ][1]); return; }
-
Conjunto de valores de x e mostrar os valores de y= f(x) para algumas funções
Ansi C respondeu ao tópico de Mateus Nunes em C/C#/C++
1- A unica relação que existe entre nossos códigos e de causa, quero dizer, não há como inseri-lo no primeiro, sem erros. Teria que entender o que acontece nele e escrever a lógica das tarefas, resultado seria este: O erro hipoteticamente, deve ser por causa de uma variável ter sido declarada na clausa case, isso não pode, observe a forma correta abaixo. #include <stdio.h> #include <locale.h> #include <math.h> //#include "Minha Biblioteca.h" //[?] é sua! main() { char option,optionf; float a,b,c; int x; 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("%c",&option); system("cls"); while(getchar() != '\n')continue; //[?] limpa o stream da telca ENTER; switch(option) { case '1': 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\nDigite a opção desejada: "); scanf("%c",&optionf); system("cls"); switch(optionf) { case '1': { //[!] O case contém o bloco e não as declarações. int index;//Index aqui. a=b=x=0; 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", &x ); float mat[x][2]; for( index = 0; index < x; index++ ) { printf( "Entre com valor real para X%d: ", index + 1 ); scanf( "%f",mat[ index ] ); mat[ index ][1] = a * mat[ index ][0] + b; } printf( "***Exibir Resultado\n" ); for( index = 0; index < x; index++ ) printf( "%dº ponto(%.1f;%.1f)\n", index + 1, mat[ index ][0], mat[ index ][1] ); } } } } 2- Sim faz com parâmetros, na função main:: crie o vetor, passe-e por argumento de parâmetro de função a cabeçario da função afim seria: afim(float[][2]), outra função chamada show(float[][2],int a, int b, int x ) pode calcular as imagens de (y) e exibir os pontos. É isso! Fica a vontade para questionar -
Conjunto de valores de x e mostrar os valores de y= f(x) para algumas funções
Ansi C respondeu ao tópico de Mateus Nunes em C/C#/C++
Perfeitamente @Mateus Nunes Como acredito que o código fornece aprendizagem mais significativa que o algoritmo segue abaixo uma possível solução para complemento de sua tarefa. #include <stdio.h> void func_afim( void ); int main( void ) { func_afim( ); return 0; } void func_afim( void ) { int in, index = 0; printf( "Entre com número de pontos: " ); scanf( "%d",&in ); //[?] para saber mais, pesquise por VLA! float mat[ in ][ 2 ]; //[?] Aqui entra com os valores reais para n-pontos fase das abcissas... while( index < in ) { printf( "Entre com valor real para x%d: ", index + 1 ); scanf( "%f", mat[ index++ ] );//[!] As colunas estão fixas, apenas a ... // linha está se movendo, conforme controle da variável index = index + 1 ... // e a função scanf estará acessando o local da primeira coluna na memória. } index = 0; //[?] Aqui entra com os valores reais para n-pontos fase das coordenadas... while( index < in ) { float a = 0, b = 0; if( a == 0 && b == 0 ) { printf( "Para f(x)= ax + b entre com valores de a E b(neste formato): " ); scanf( "%f E %f", &a,&b ); } mat[ index ][1] = a * mat[ index ][0] + b;//[!] As colunas estão fixas, apenas a ... // linha está se movendo, conforme controle da variável index = index + 1 ... // e a função operação estará atribuindo no segunda coluna na memória. index++; } index = 0; printf( "****Resultado\n" ); while( index < in ) { printf("#%d Ponto( %.1f,%.1f )\n",1+index, mat[ index ][0],mat[ index ][1] ); index++; } printf( "Done!\n" ); return; } -
Conjunto de valores de x e mostrar os valores de y= f(x) para algumas funções
Ansi C respondeu ao tópico de Mateus Nunes em C/C#/C++
Será que eu entendi?! Suponhamos que o usuário entre com x := -3, então teremos um vetor de tamanho 4 para 4 valores de f(x). O que veremos é: vetor[ 0 ] = f(0); vetor[ 1 ] = f(-1); vetor[ 2 ] = f(-2); vetor[ 3 ] = f(-3); Onde claramente y = f(x); o tamanho do vetor será sempre igual a qualquer valor absoluto de | x | + 1. -
Hipoteticamente: 127 níveis, e 232 case
-
Exercicios que me retorna o valor do p-ésimo numero na string
Ansi C respondeu ao tópico de Pedro Henrique Faria Teixe em C/C#/C++
De nada! Caso sinta a necessidade de perguntar, então pode fazer quantas perguntas quiser ok -
Problema ao compilar matriz bidimensional
Ansi C respondeu ao tópico de João Guilherme Ferreira em C/C#/C++
Boa dia @João Guilherme Ferreira Será que pode nos dar uma descrição da Tarefa, só assim terei condição de entender seu algoritmo a ponto de ajudar te. -
Boa noite @Guilherme Sixe Existe um erro de lógica, não de lógica mais de conceito entenda que "1" é diferente de 1, ou seja o numeral 1 capturado através da função é o char '1' e não o número 1 de fato; matriz[linha][coordenada[1]]=1; Sendo entendemos que a função alimento o vetor coordenado com tipos char e não tipo int, para solucionar deveria converte o tipo antes de armazenar ou alterar o froms string da função fscanf(formats, ... ); Para um mascara do tipo de dados correto ficando assim com as correções: fscanf(f, " %c%d", coordenada, coordenada+1) Já que é esperado um char e um numero; É importante menciona que a mascara "%s" captura o tamanho de dados +1, ou seja, no primeiro caso como está a função captura "A1\0", logo como percebeu aconteceu o overbounds (passou dos limites) isto pode causar instabilidade e efeitos inesperados caso o programa acesse dados restritos da memória.
-
Exercicios que me retorna o valor do p-ésimo numero na string
Ansi C respondeu ao tópico de Pedro Henrique Faria Teixe em C/C#/C++
Muito bem colega@Pedro Henrique Faria Teixe Trata-se de um exercício que envolve muitos elementos básicos da linguagem. Como acha mais simples posta o código que o algoritmo e tento em vista que o exercício pede o manual trace do código, vou lhe postar o código crú, cabendo a você fazer a 2ª parte do exercício, aconselho a fazer ou não haverá construção de conhecimento algum de sua parte. Boa Sorte. #include <stdio.h> int is_numeric( char c ); int s_to_int(char *str ); int p_num( char *string,unsigned int pos ); int main( void ) { printf("N:= %d ", p_num( "Test 1985, Test 2016, Test 1980: Manual Trace", 3 ) ); return 0; } int is_numeric( char c ) { return( c <= '9' && '0' <= c ); } int s_to_int( char *str ) { int num = 0; while( *str && is_numeric( *str ) ) { num = 10 * num + ( *str - '0' ); str++; } return num; } int p_num( char *string,unsigned int pos ) { while( *string ) { if( is_numeric( *string ) ) { if( !(--pos) )return s_to_int( string ); else while( *string && is_numeric( *(++string) ) ) continue; } else ++string; } return -1; } -
Alguém sabe qual o problema com meu código?
Ansi C respondeu ao tópico de calouroentediado em C/C#/C++
Muito bem @calouroentediado O problema está na função gets; Que não ignora o caractere de nova linha na última entrada. Código corrigido: #include <iostream> #include <cstdlib> #include <stdio.h> using namespace std; int main ( ) { char nome[3][50], sexo[3][50]; int idade[3], x=0; float peso[3], altura[3], imc[3]; for(x=0; x<=2; x=x+1) { cout << "QUAL O NOME DA PESSOA " << x << " ?"; gets(nome[x]); cout << "QUAL O SEXO DA PESSOA " << x << " ?"; gets (sexo[x]); cout << "QUAL A IDADE DA PESSOA " << x << " ?"; cin >> idade[x]; cout << "QUAL O PESO DA PESSOA " << x << " ?"; cin >> peso[x]; cout << "QUAL A ALTURA DA PESSOA " << x << " ?"; cin >> altura[x]; imc[x] = peso[x]/( altura[x] * altura[x]); //Limpa o buffer do stream stdin usando pela função gets while( '\n' != getchar( ) )continue; //O loop vai girar até que o caractere de nova linha seja //localizado. } for (x=0; x<=2; x=x+1) { cout << nome[x] << endl; cout << sexo[x] << endl; cout << idade[x] << endl; cout << peso[x] << endl; cout << altura[x]<< endl; cout << imc[x] << endl; } system ("pause"); } -
Alguém sabe qual o problema com meu código?
Ansi C respondeu ao tópico de calouroentediado em C/C#/C++
Diz você o que está acontecendo ?! -
Exercicios que me retorna o valor do p-ésimo numero na string
Ansi C respondeu ao tópico de Pedro Henrique Faria Teixe em C/C#/C++
Bom dia @Pedro Henrique Faria Teixe Não consegui ver a tarefa por trás do código. Como quero ajudar te, preciso que você além do código poste também a descrição do problema. Somente assim vou ter elementos suficientes para auxiliar no teu exercício. Obrigado -
Faça um sistema de Chamada via Bluetooth. A tarefa é registra a entrada dos alunos através da Bluetooth.
-
A linha de comando apos mingw32, faz-me entender que você não fez as opções corretas ao criar o projeto observe que não existe instância além de main.o Você marcou todos as caixinhas da mesma maneira para todo os novos arquivos assim como segue abaixo, se não fez este é o x da questão, se não não sei dizer.
-
O que o IDE está nos dizendo que não foi possível encontrar o arquivo executar.o (*.o file type Object C). As etapas são próxima de compilar primeiro o arquivo executar e gerar o arquivo Object executar, depois adicionar este arquivo ao arquivo main.o e gerar o*.exe. Poste-nos o conteúdo da Aba- Build long para analise. Daí vamos concluir se as etapas de compilação estão corretas.
-
Função par e impar separadas.
Ansi C respondeu ao tópico de Giovane Sornoqui em Programação - iniciantes
@Simon Viegas você está correto, a sintaxe lembra código C, e portanto o operador %(módulo/resto) opera exclusivamente com números não flutuantes, bem dito inteiros. -
Alguns compiladores exigem que o main retorne valor não implícito, ou seja, return( 0 )
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