-
Posts
3.206 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
Na moral! O eu sou péssimo em interpretar as perguntas, e vocês estão fazendo perguntas iguais as questões do ENEM (um monte de coisa sem sentido).
-
Sua duvida! Qual é mesmo?
-
Erro ao executar programa com alocação dinâmica para matriz
Ansi C respondeu ao tópico de Yago Sousa em C/C#/C++
Esta ocorrendo acesso violado de memoria, acho que por conta das instancias for(). que estranhamento termina com esta. _matriz2 = (int**)malloc(tamanho2linha * sizeof(int *)); //aloca a matriz 2for (i = 0; i < tamanho2linha; i++);_matriz2[i] = (int*)malloc(tamanho2coluna*sizeof(int)); Se colocarmos ; (ponto-e-virgula) no final de um declaração loop sem bloco, ele inutiliza o loop, que passa a não fazer nada for (i = 0; i < tamanho2linha; i++); <-- não faz nada -
Minha definição pessoal: Estrutura de dados assim como vetores são, porém dinâmicas as Filas, pilhas. Filas: Se assemelham ao uma fila de espera no banco por exemplo. Quem chega primeiro sair primeiro, que chega por ultimo sai por ultimo. Assim as filas crescem de um lado, e os membros sai do outro. Pilhas: E como empilhar pneus por exemplo. Os primeiros sempre são os últimos a sair da pilha. Geralmente se usar dos dois ponteiros e filas: O primeiro liga o lado em que sai os membros da fila, e o segundo o que adiciona membros a fila. minha estrutura* cabeça; minha estrutura* cauda; Pilhas apenas um ponteiros se liga ao dados. minha estrutura* atual.
-
while ( letra == '\n' ); Essa condição de existência; Sua intenção é que;seja executado até que o '\n' apareça então te que ser assim; while ( !(letra == '\n') ); ou ainda assim: while ( letra != '\n' );
-
Lamento que você não tenha entendido! Peça ajuda a uma Professor que lhe fará entender. Boa Sorte.
-
Ok! Chamaremos de strings de formatação. Ao invés de declara em um constante faça em um vetor /Array /Strings: char mascara[] = {"%.1f\n"}; // O 1 esta no 3 índice do nosso vetor para esquerda -> // Em vetores, o primeiro índice é 0, por tanto o terceiro é 2. // Para aumentar o numero de casa decimais para 6 faz assim. mascara[2] = mascara[2] +5; // Neste ponto o 1 se torna 6;
-
Conferir um código e caso seja necessário alterar
Ansi C respondeu ao tópico de Danilo Lopes em C/C#/C++
http://forum.clubedohardware.com.br/forums/topic/1088963-calculo-de-imc-com-vetores/ Existe um tópico similar -
OK! Eu acho que dentro da sua linha de raciocínio tem que modificar o vetor *F while(i <valor) { for(j=0; j<valor; j++) { if(V[i]==V[j]) { contador = contador+1; } } if(contador!=0) { F[i]=contador; contador=0; i++ } } Tipo ele contem o numero de repetições mais não a ligação com o numero que repetiu. Poderia declarar outro para lembrar do valor vetor *V; F[10]; M[10]; F[ i ] = contador; //Aqui quantas vezes repete M[ i ] = v[ i ]; //Aqui quem se repete;
-
E o resultado Saiu como esperado ?
-
Cadê teu algoritmo, poste parte dele e questione sua dúvida
-
Ok! Não te preocupas, aqui todos estamos em fase de aprendizagem. Observe o seguinte: struct prod { int cod; char nome[15]; //No máximo 14 letras float preco; float qde; // qde = quantidade disponível em estoque data dvalidade; // dvalidade = data de validade }; Isso aqui em acima e sua estrutura com a modificação de nome. um vetor para declaramos assim; struct prod database[20] //Por exemplo este vetor ter 20 estruturas prod. Isto esta bom, porém no teu algoritmo está assim como segue abaixo int prodv[quantp];// prodv = vetor que irá armazenar a quantidade de produto determinada. Isto acima não é um vetor de produtos e sim de inteiros (int) que em nada tem a ver com a sua estrutura. cin >> prodv[i].produto.cod; //Vai dar erro pois não é o tipo certo de dados prodv[i] não é a sua estrutura. pois é um inteiro.
-
OK. Não sei onde fica a linha 33, é meio complicado de entender as coisas quando vocês pedem ajuda desta maneira assim ***** principalmente para nos que a predemos ainda. Observei nesse código aqui um erro. struct prod { int cod; char nome; float preco; float qde; // qde = quantidade disponível em estoque data dvalidade; // dvalidade = data de validade }; ... cout << "Nome: "; gets(nome) >> prodv[i].produto.nome; /* Tenha em mente que nome quando for para gravar em uma strings(nomes) tem que ser em uma matriz de char. */char nome[15]; //Isso é uma matriz de char tem 15 char um para cada letra.char nome; // Isso não dar para gravar um nome tem apenas espaço para uma 1 letra;
-
OK! Entendemos que os comando if ler o (condicional) e o condicional sempre retorna um valor dependendo da condição; Ex.: if (5 > 1) o condicional responde 1; Então dentro do if vai ficar assim com a resposta do Computador: if ( 1 ). Ex2.: if( 5 == 5) o condicioanl responde 1; Então dentro do if vai ficar assim com a resposta do Computador: if ( 1 ). Ex2.: if( 5 < 1) o condicional responde 0; Então dentro do if vai ficar assim com a resposta do Computador: if ( 0 ). Bem entendemos que quando existe 1; Comando do if( 1 ) é executado; Entendemos que quando existe 0; Comando do if( 0 ) não é executado; Isso é uma meia verdade, pois na verdade o if será executado sempre que o valor dentro dele for diferente de 0; Exemplo de nosso código acima: Se na entrada acontecer algo como digitar: 0000 0702 [ENTER] O Computador ver da seguinte forma // Aqui o código fica assim // Aqui dentro dos parênteses o IF ver assim if(0)DECIMAL += 128; // 0; Não executar if(0)DECIMAL += 64; // 0; Não executar if(0)DECIMAL += 32; // 0; Não executar if(0)DECIMAL += 16; // 0; Não executar if(0)DECIMAL += 8; // 0; Não executar if(7)DECIMAL += 4; // 7; diferente de 0, então executar if(0)DECIMAL += 2; // 0; Não executar if(2)DECIMAL += 1; // 2; diferente de 0, então executar Por isso que esse método é o mais seguro contra bugs !
-
Ok; então para isso algumas modificações nesta parte tem que ser feita; Observe como pode ser: int buscar = 1;puts("Entre com numero de RG (-1 para sair):");scanf("%d", &buscar)while(buscar > 0){ for(cont = 0; cont < 2; cont++) { if(p1[cont].RG == buscar) { printf("Nome da pessoa: %s", p1[cont].nome); printf("RG: %d ", p1[cont].RG); printf("Peso: %.2f | Altura: %.2f", p1[cont].peso, p1[cont].altura); IMC = p1[cont].peso / ( (p1[cont].altura*p1[cont].altura) ) ; printf("O IMC da pessoa é %.2f", IMC); entre = -1; } } if(buscar!= -1) puts("RG Cadastrado não encontrado"); puts("Entre com numero de RG (-1 para sair):"); scanf("%d", &entre)}
-
Um dica que me disseram para essa questão. DECIMAL = d1*128 + d2*64 + d3*32 + d4*16 + d5*8 + d6*4 + d7*2 + d8*1 Para humanos, o algoritmo assim: É frágil, e fácil de bugar! Se na entrada acontecer algo como digitar: 0000 0102 [ENTER] Na saída: Numero em decimal: 6 *Porém deveria ser 5! if(d1==1)DECIMAL += 128;if(d2==1)DECIMAL += 64;if(d3==1)DECIMAL += 32;if(d4==1)DECIMAL += 16;if(d5==1)DECIMAL += 8;if(d6==1)DECIMAL += 4;if(d7==1)DECIMAL += 2;if(d8==1)DECIMAL += 1; ...o algoritmo assim: É mais robusto, e não tão fácil de bugar! Se na entrada acontecer algo como digitar: 0000 0102 [ENTER] Na saída: Numero em decimal: 4 *Porém deveria ser 5! if(d1)DECIMAL += 128;if(d2)DECIMAL += 64;if(d3)DECIMAL += 32;if(d4)DECIMAL += 16;if(d5)DECIMAL += 8;if(d6)DECIMAL += 4;if(d7)DECIMAL += 2;if(d8)DECIMAL += 1; ...o algoritmo assim: É mais robusto, é impossível de bugar! Se na entrada acontecer algo como digitar: 0000 0702 [ENTER] Na saída: Numero em decimal: 5 *Porém deveria ser 5! OK não bugou. Isso em C, já que qualquer valor diferente de 0 é considerado conjunto de verdades! Eu achei esse dica útil, e estou passando adiante pessoal.
-
OK! Observe que printf("Media das Noras: %f\n\n", &ALUNOS[mat].med); Em funções como printf, não usamos o operador (&) na variável, assim o correto é: printf("Media das Noras: %.2f\n\n", ALUNOS[mat].med);
-
eu marquei com comentário, maneira de melhorar o que ainda não esta bom! #include <stdio.h>struct pessoa { char nome[40]; float altura; float peso; int RG[10];};int main(){ float IMC; //fload int cont; struct pessoa p1[2]; for(cont = 0; cont < 2; cont++){ printf("Digite o nome da pessoa: "); fflush(stdin); gets(p1[cont].nome); printf("Digite o RG da pessoa [10 caracteres apenas]: "); scanf("%d", &p1[cont].RG); printf("Digite a altura da pessoa: "); scanf("%f", &p1[cont].altura); printf("Digite o peso da pessoa: "); scanf("%f", &p1[cont].peso); } for(cont = 0; cont < 2; cont++){ printf("\nNome da pessoa: %s\n", p1[cont].nome); printf("\nRG: %d\n", p1[cont].RG); printf("\nAltura: %.2f\n", p1[cont].altura); //*1 Correto printf("\nAltura: %.2f\n", p1[cont].altura); printf("\nPeso: %.2f\n", p1[cont].peso); //*2 Correto printf("\nPeso: %.2f\n", p1[cont].peso); if(cont >= 0 && cont < 2){ printf("Digite o numero da pessoa: "); scanf("%d", &p1[cont].RG); //*3 RG ?? Tem certeza ?? Não faz sentido qual a sua intenção ?? printf("Nome da pessoa: %s", p1[cont].nome); printf("RG: %d ", p1[cont].RG); printf("Peso: %.2f | Altura: %.2f", p1[cont].peso, p1[cont].altura); IMC = p1[cont].peso / ( (p1[cont].altura*p1[cont].altura) ) ; //*4 precedência de operadores aritméticos () / * + - printf("O IMC da pessoa é %.2f", IMC); //*5 IMC também e fload. } else printf("RG Cadastrado não encontrado"); //*5 Estou quase entendendo o motivo disso, mais ainda não entendo! }}
-
OK! Ops, isso mesmo estar escrito em C' ANSI É o minhas predileta, e so escrevo nessa /* Conta o numero de ocorrências extras de** valores em um vetor de inteiros indexado** @parâmetro int[], tamanho** @retorna nada** @autor Mauro Britivaldo*/void fn_Repete(const int tab[],const int tabTam){ int repete = 0; int i; const char *masc = "%d\t\t|%d\n"; const char *mascCh = "%d\t\t|%c\n"; const char extra = 1; printf("Quantas Vezes aparece?\n#Entrada\t|#Saida\n"); for(i = 0; i < tabTam; i++) { while(tab[i] == tab[i +repete]) repete++; if(repete -= extra) printf(masc, tab[i], repete); else printf(mascCh, tab[i], repete); i += repete; repete = 0; }}
-
É muito bom esse exercício. Não sei se você ja resolveu ele, há essa altura, contudo, segue abaixo uma maneira própria de resolver. Ate+! /* Simula o sistema decimal poli(4) decimais** SOMA: Milhas, Centenas, Dezenas, Unidades restrito a 3 vetores** com valores inteiros no limite de 0 - 9** @parâmetro int[4], int[4], int[4], dentro do limite *0** @retorna nada** @autor Mauro Britivaldo (email: [email protected]);*/void SOMA(int setPar[4], int setPar2[4], int setSoma[4]){ const char extra = 1; const char maxx = 9; int i; for(i = 4 -extra; i >= 0 ; i--) { if( (setPar[i] + setPar2[i]) <= maxx) { setSoma[i] += setPar[i] + setPar2[i] ; } else { if(!i){printf("\n\n****Estourou a memoria****\n\n"); setSoma[i] = maxx; return;} setSoma[i] += (setPar[i] + setPar2[i]) -maxx -extra; setSoma[i -extra] += extra; } }}/* Simula o sistema decimal poli(4) casa decimais** Imprimi seus valores na saída padrão ou, retorna o valor decimal;** ao limite de 0 - 9** @parâmetro int[4] dentro do limite e maiores que 0*** @retorna int** @autor Mauro Britivaldo (email: [email protected]);*/int prntSoma(const int soma[4], char pGet){ int i; const char maxx = 4; const char extra = 1; if(pGet) for(i = 0; i < maxx; i++) { printf("\t%d" ,soma[i]); } else { int i_soma = 0; int d = 1; for(i = maxx -extra; i >= 0; i--) { i_soma += soma[i] * d; d *= 10; } return i_soma; }return pGet;}/* função principal e chamadora */int main(void){ //Exemplo Teste" int parcela[4] = {1,9,1,9}; /* 1919 Primeira Parcela*/ int parcela2[4] = {2,0,1,9}; /* +2019 Segunda Parcela */ int soma[4] = {0}; /* ------ /* 3938' */ //Aqui Começa a Magia SOMA(parcela, parcela2, soma); //Saída dos Resultados... printf("Print Unidade a Unidade\n"); printf("\t#Mil\t#Cent\t#Dez\t#Uni\n"); printf("Valor: "); prntSoma(soma, 1); printf("\n\nPrint Decimal\n"); printf("Inteiro decimal: %d", prntSoma(soma,0)); printf("\n\n\n"); //FIM. //getchar();return 0;}
-
OK! /* Não tem segredo, pois usa biblioteca padrão** portátil também pelo mesmo motivo exige o** mínimo implementação */float pegarDadosFloat(const char *s, const int i){ float in_Nota = .0f; //Entre com um valor ponto flutuante ou inteiro; printf(s, i); scanf("%f", &in_Nota); return in_Nota;}/* função principal e chamadora */int main(void){ const char* mascara = "Informa %d nota: "; int i; for(i = 1; i < 6; i++) pegarDadosFloat(mascara, i);return 0;}
-
Ok! Você tem em mente que o vetor de inteiro com 4 inteiros, sedo que cada espaço desse vetor armazena um digito (decimal) da parcela de 4 dígitos, limite máximo de casa casa é 0 ou 9. Visualizou assim; intenda abaixo Casa como sendo, dígito: Casas das Milhares |Casa das Centenas |Casa das Dezenas |Casa das unidades parcela[3] parcela[2] parcela[1] parcela[0] Assim sendo se eu preencher: parcela[0] = 1; parcela[1] = 2; parcela[2] = 3; parcela[3] = 4; tenho na verdade: 4321 (4 mil trezentos e vinte um); Exemplo: parcela[0] = 9; parcela_2[0] = 1; soma? temp = parcela[0] + parcela_2[0] temp = 10; soma[0] = 0; //Unidade soma[1] = 1; // Dezenas Qual a sua dúvida exatamente?
-
Ok! Suponho que você declare seu dados assim: typedef struct dadosPessoais { char nome[15]; //Nome no máximo 14 letras int telefone; // Numero telefone extenso sem formatação Ex: 9999999999 }DadosPessoais; Em uma lugar qualquer e declaro meu vetor pessoas assim: struct dadosPessoais Agenda[10] = {0} //O copilador vai iniciar tudo com valor zero; Basta agora eu fazer assim para verificar se há índice vagos no vetor Agenda: /* Verifica se no vetor o indice é válido, e se não há dados** @parâmetros** @retorno Não havendo dados retorna: 1 ; Havendo dados: 0; Erro no indice: -1** @Autor: Britivaldo, Mauro.*/ int estaVago(struct dadosPessoais Agenda[10], int indice){ if( indece > 9 || 0 > indice) return -1; return ( Agenda[indice].nome[0] == '\0' )}
-
Ok, Observe typedef struct dadosPessoais { char nome = ' '; int telefone = -1; }DadosPessoais; printf("Digite nome: \n"); scanf(" %s", &vetor->nome); Estranho isso ter copilado, observe se não de copilação; Outrora se ainda assim rodou Na declaração scanf(" %s", &vetor->nome); o sistema vai gravar muito bytes em um local reservado com 1 byte isso não funciona e C; em C++ acredito que também não; Mesmo que funcione você esta invadindo a memoria overflow ;na maioria dos casos resulta em erro fatal; declare assim: char nome[15]; // No máximo 14 letras;
-
Observe que: pot=a*a; // neste ponto acontece o erro quando a variável pot tem seu valor modificado a cada loop; como contorna isso? use um outro operado de segmentação ou modifique a declaração Tome cuidado também com nomes de variáveis e funções Ex.: pot += a*a; // e o mesmo que pot = a*a +pot; int pot; e pot() causa erros graves e entre outras coisa; Melhor seria assim: int fn_pot(int a, int { int pot = 0; int i = 0;...return (pot);}
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