Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.206
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Ansi C

    problema printar

    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).
  2. 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
  3. 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.
  4. 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' );
  5. Lamento que você não tenha entendido! Peça ajuda a uma Professor que lhe fará entender. Boa Sorte.
  6. 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;
  7. http://forum.clubedohardware.com.br/forums/topic/1088963-calculo-de-imc-com-vetores/ Existe um tópico similar
  8. 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;
  9. E o resultado Saiu como esperado ?
  10. Cadê teu algoritmo, poste parte dele e questione sua dúvida
  11. 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.
  12. 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;
  13. Ansi C

    me ajudem pf

    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 !
  14. 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)}
  15. Ansi C

    me ajudem pf

    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.
  16. 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);
  17. 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! }}
  18. 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; }}
  19. É 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;}
  20. 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;}
  21. 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?
  22. 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' )}
  23. 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;
  24. 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

×
×
  • Criar novo...