Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.261
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. Ok! Neste então você precisa de uma variável nome; em C'99 isso funciona assim: /* pergunta seu nome */char * gets_nome(char *str){ puts("Entre com seu nome:");/* imprime na tela a pergunta */ scanf("%21s", str); /* recebe os dados digitados */ return str; /* retorna um ponteiro do nome */}/* função inicial do programa */int main(void){ char nome[ 21 ];//> Nome com no máximo 20 letras; gets_nome(nome);//> chamo a função que pega nomes printf("Seu nome e %s\nBonito Nome!\n", nome); return (0);}
  2. Ok! Então tipo: quando estão assim: *vetpositivo[i] o que acontece é que primeiro ele acessa um vetor de ponteiro (que não existe) e depois o inteiro que não existe; daí os erros; precedência de Pare resolver isso acredito eu que basta fazer assim e contorna a precedência com parenteses ; (*vetpositivo)[i]
  3. Ata! Tem um confusão danada ai, Não ficou bem claro para mim, me responde um coisa é uma matriz que você deseja ou um vetor ( a diferença é que o vetor tem apenas uma linha) ? Caso seja um vetor basta modificar assim com parenteses para o ponteiro de ponteiro: while( (*vetpositivo)[i] <= 0 )
  4. Ok! Observe abaixo: void inicializarpositivo(float* *vetpositivo, int* quantEleme) //Na verdade essa parte que diz: int* quantEleme é um desproposito, um ponteiro para um int tem o mesmo tamanho de um int então ao invés de como está essa parte que seja um int normal; void inicializarpositivo(float* *vetpositivo, int quantEleme) Já na função scanf basta fazer assim com e-comercial: scanf("%d", &quantEleme);
  5. É um emaranhado de coisa, Pode conter desde de código para execução e processamentos de dados: Cálculos aritméticos; Criptografia etc. Até mesmo resources: Imagens, Gifs, Sons, Dumbs O sistema operacional windows armazenas seus resources (Trd.: recursos) em dll; Alguns jogos para Pc também, quando são pequenos, usam *.dll ao invés de *.Data para proteger seus resources.
  6. Ansi C

    Alocação Dinâmica

    Não tenho mais dicas para esse problema, Vamos aguarda pela solução vinda de outros membros.
  7. Ansi C

    Alocação Dinâmica

    fopen("entrada.txt", "rt"); ? rt eu acho que você quer abrir somente leitura então deve ser somente "r"
  8. Ansi C

    Alocação Dinâmica

    Sinceramente, é impossível está sendo impresso 1 2 0.000000 0.000000 0.000000 0.000000 esses valores Já que não a dados para ser impressos como nos diz no else Você modificou o conteúdo do for por if (fscanf(arq,"%lf %lf",&x,&fx) == 2) printf("%lf %lf\n",x,fx); else printf("Loop %d sem dados", i); ou acrescentou, se acrescentou substitua;
  9. Ansi C

    Alocação Dinâmica

    Ok! Faremos o seguinte teste: acrescentando um if ao algoritmo de exibição; como abaixo: for(i=0;i<n;i++){ if (fscanf(arq,"%lf %lf",&x,&fx) == 2) printf("%lf %lf\n",x,fx); else printf("Loop %d sem dados", i); }
  10. Ansi C

    Alocação Dinâmica

    a função fscanf nesta situação vai retorna o numero 2, se consegui ler o dados corretamente e diferente de 2, se não. Faça um teste e observe se 2 está saindo de fscanf
  11. Se eu entendi, trazendo para o C'99 já que não sei nadinha de C++; O objeto, nosso que estranho falar isso, tem que saber os Mnemônicos: MaxT, MinT, AmbT, DefT, LimT, CicT; CicT = Tempo entre cada ciclo de verificação de temperatura; Exemplo: 3 segundos AmbT = É a temperatura marcada pelo termostato; Exemplo; A temperatura pois os 6 minutos ou 3 segundos DefT = Temperatura desejada; Exemplo: 25*C LimT = Coeficientes de o intervalo médio das Temperaturas (MinT e MaxT); Exemplo: .6 esse ultimo pode ser omitido como Default; MaxT = DefT + (DefT* LimT); = 25 + (25 * 0.6) = 40; MinT = DefT - (DefT* LimT); = 25 - (25 * 0.6) = 10; Depois de tudo isso, o seu objeto, vai ter que tratar disso: Quando CicT = 0; se (MaxT < AmbT) Liga; se não se (MinT > AmbT) Desliga;
  12. Ansi C

    Alocação Dinâmica

    Ok! Está com erro de aqui, você precisa converte o ponteiro para tipo certo, que no caso e double Errado: x=malloc(n * sizeof(double)); fx=malloc(n * sizeof(double)); Correto: x= (double*) malloc(n * sizeof(double)); fx= (double*) malloc(n * sizeof(double));
  13. É preciso ter conhecimentos preveis para realizar essa tarefa, o mais importante e dominar manipulação de arquivos com o ponteiro para FILE depois disso, tenho certeza que o resto vai vir naturalmente.
  14. OK! Mais é isso mesmo, olha no exercício que está no topo, diz: "...O procedimento não deve fazer ordenação. Deve usar a informação que os vetores estão ordenados e fazer a intercalação apropriada de elementos de A e B, copiados para o vetor C." Devido a ambiguidade desse trecho, a questão já foi respondida ao juntar os valores dos dos dois em um. Agora se era para ordena-los em um novo vetor esse trecho deveria ser omitido, e se ainda era para juntar digamos; C 1 = A 1 C 2 = B 1 C 3 = A 2 C 4 = B 2 ... é uma suposição já que nada ficou claro. Esse é o problema de questões de curso universitário, serve apenas para enrolar.
  15. OK! Eu acredito que o vetor que armazena as cores jogadas pelo usuário, tenha o máximo de jogadas possíveis, então ele é previamente criado no mesmo momento quando é definido o número de jogadas máximas do jogador. Outra Dica é, ao invés de usar caracteres para representar as cores, use números: AZUL 0 AMARELO 1 VERMELHO 2 ... Assim você economiza memoria e da dinâmica. Já que o mesmo vetor de string será reutilizado. o vetor de jogadas precisa apenas lembrar do numeral da jogada que representa uma cor, e não do string todo. Ao cria um variável que incremente o vetor jogadas erradas, ao vetor é atribuído o número da cor da jogada, até atingir o seu limite, e então Game Over.
  16. O código abaixo, possui um maneira de fazer, isso de modo simples; Observe que o scanf esta dentro da condição do while, mas poderia esta dentro do bloco também, restando apenas a função SoLetra a obrigação de verificar se a entrada esta correta. Execute, e estude-o a vontade. /* soletra.c -- validação de dados com letras do alfabeto ascii *//*--------Keep it simple--------* | Autor: Mauro Brito | | e-Mail: [email protected] | | Linguagem: C 99 | | Plataforma: Windows 32-bit | | Editor: Code::Blocks v13.12 | *------------------------------*/#include <stdio.h> // puts(); printf(); fflush(); putchar() funções#include <stdbool.h> // variável booliano TRUE \ FALSE/* protótipos de funções *//* operação : verifica existente caracteres não alfabéticos *//* pre-dados: str vetor de char string a ser verificado *//* pôs-dados: retorna 1 se houve somente letras, 0 senão */bool SoLetras(char str[]);/* função principal do sistema */int main(void){ char sNomeUsuario[15]; // máximo 14 letras; char underline = 0; // grifar nome do usuário. puts("Entre com seu nome:"); printf("<< "); while ( (scanf("%s", sNomeUsuario) != 1) || (SoLetras(sNomeUsuario) == 0) ) { printf("\n\n""[ %s ] detectado invalido!\n", sNomeUsuario); puts("Entre com seu nome:"); printf("<< "); fflush(stdin); // limpa o buffer de entrada stdin; } printf("\n\n"); underline = printf("%s", sNomeUsuario); puts(" e um nome bonito. Parabens!"); while(underline--)putchar('-'); puts("\n\n""acabou.""\n\n"); getchar();//PAUSA; return 0;}/* definição de funções *//* verifica existente caracteres não alfabéticos */bool SoLetras(char str[]){ int index = 0; // percorre as células do string while(str[index] /* percorre o string até \0 */) { if (str[index] < 'A' || str[index] > 'z' ) if ((str[index]) != ' '/* diferente de espaço */) return false; index++; } return true;}
  17. Ok! Observe que aliando a struct você vai utilizar outro poderoso recurso da linguagem; union Veja abaixo: /* union.c -- soma dos n-elementos na mesma celula */#include <stdio.h>#include <stdlib.h>/* minhas struct bit[4]*/struct myByte{ unsigned char bit_0_4: 4; //Mais baixo nível unsigned char bit_5_7: 4; //Mais alto nível}; //Tenho 8 bits;typedef union byte_bit //Poderoso recurso de edição de tipos{ struct myByte byte; char unsigned interge;} Byte; //Novo tipo de dadosint main(void){ Byte b; b.byte.bit_0_4 = 8; //Mais baixo nível **** 1000; printf ("Meu tamanho e: %u""\n", sizeof(struct myByte)); printf("Meu Integer e=: %u""\n", b.interge); printf("Meu numero char=: %c""\n", b.byte.bit_0_4 + '0'); return (0);}
  18. De nada ! Só mais uma coisa; no lugar de switch (i) de ver o switch (atual)
  19. OK Observe esse simples Exemplo: /* uniao.c -- União de dois vetores quaisquer de inteiros */#include <stdio.h>#include <stdlib.h>/* Operação: união de dos vetores quais quer inteiros *//* Entrada : vetor_a conjunto de inteiros m-tamanho; *//* vetor_b conjunto de inteiros n-tamanho; *//* vetor_u vetor de inteiro (m + n)-tamanho; *//* Retorna : nada, os dados serão copiados para vetor de Entrada*/void arr_cpy (int, int, int, int[], int[], int[]);int main(){ int v1[5] = {1,2,3,4,5}; int v2[6] = {6,7,8,9,10,11}; int vu[5+6] = {0}; arr_cpy(5, 6, 11, v1, v2, vu); printf("O Primeiro valor e =: %d\n", vu[0]); printf("O Ultimo valor e =: %d\n", vu[10]); return(0);}/* definição de união de dos vetores quaisquer de inteiros */void arr_cpy(int m, int n, int u, int vetor_m[], int vetor_n[], int vetor_u[]){ /* inverte no momento da gravação para preserva a ordenação *//* copiando n envés de m primeiro */ while(--n)//Primeiro gravo n { vetor_u[--u] = vetor_n[n]; } vetor_u[--u] = vetor_n[n]; //Finaliza n == 0;/* copiando m */ while(--m)//Apos gravo m { vetor_u[--u] = vetor_m[m]; } vetor_u[--u] = vetor_m[m]; //Finaliza m == 0; return; //acabou.}
  20. Sim, porém o limite de manipulação de dados depende da estrutura do processador, no caso 1 byte e o mínimo. independeste das circunstancia, limite imposto manipulação aos noobs, que é hack, faz manobras incríveis e burla isso no estralar. Veja bem: Por exemplo se eu adiciona se mais um Label; char bit_8: 1; //Mais alto bit O tamanho da estrutura na memoria será 2 bytes, porém se restrugi a manipular apenas 9 bits, desperdiçando o resto. Essa regra serve exatamente ao inverso limitando se sempre ao minimo de 1 byte. Caso não tenho notado 1 apos o Label determina o limite minimo de bits a ser manipulado por Label: struct byte_bit { //Um byte char bit_0: 2;//Mais baixo bit = 1 char bit_1: 2; char bit_2: 2; char bit_3: 2; //Mais alto bit = 128 } stByte; //Tenho apenas 1 byte (8 bits); Também se aplicando nas mais diversão variações que você imaginas, até mesmo para criar seu próprios tipos de dados, C++ por exemplo usa esse conceito. Não é querendo puxar o saco em dizer que C e melhor do C++, mas tudo que é escrito em C++, e transformado e C e por fim em bits. EU AMO ♥ C;
  21. Exato! O C muito poderoso mesmo né. Por esse e por outros motivos que a maioria dos drives são escrito em C, você manipula baixo nível de modo ultra acessível. Para confirma esse poder, faça um teste: printf("Quantos bytes tem %u", sizeof (struct byte_bit) ); Quantos bytes tem 1
  22. a estrutura for:m que realiza a busca esta com ponto-virgula ( ; ) no final, neutralizando o if. else também precisa de uma correção, ficando dentro de um bloco, junto do break; para finalizar a busca. Veja abaixo: #include <stdio.h>#include <stdlib.h>int main(){ int num; int inf,sup,meio; int i, j, m, num_atual; int num_vet[15]; int k; printf("DIGITE OS 15 NUMEROS:\n\n"); k=0; while(k<15) { scanf("%d", &num_vet[k]); k++; } for(i = 1; i < 15; i++) { num_atual = num_vet[i]; j = i - 1; while((j >= 0) && (num_atual < num_vet[j])) { num_vet[j+1] = num_vet[j]; j--; } num_vet[j+1] = num_atual; } printf("VETOR ORDENADO:\n\n"); for(i = 0; i < 15; i++) printf("%d ", num_vet[i]); printf("\n\n"); inf=0; sup=14; printf("\nDIGITE UM NUMERO:\n\n"); scanf("%d", &num); for(m=0; m<15; m++) //<- tinhas dois pontos aqui; if(num==num_vet[m]) { while (inf<=sup) { meio=(inf+sup)/2; if (num==num_vet[meio]) { printf("\nO NUMERO %d FOI ENCONTRADO NO VETOR E ESTA NA POSICAO: %d\n",num_vet[meio],meio); break; } else if (num<num_vet[meio]) sup=meio-1; else inf=meio+1; } } else { //<- else estava sem bloco printf("o numero digitado nao esta no vetor"); break; } return(0);}
  23. Ansi C

    Find and Replace?

    #include <stdio.h> char * reencrever(char STRING[], char atual, char subst) { int i; for(i = 0; STRING; i++) { if(STRING == atual) //Se encontrar o que busca, STRING = subst; //Substituo. } return(STRING); } int main(void) { char texto[] = {"Alguem passa esse codigo? Nao consegui fazer""\n" "Crie um texto com pelo menos 500 caracteres e guarde-o numa string. Pode""\n" "copiar o texto de algum site interessante da web. então permita ao usuario digitar um""\n" "caractere, e encontre todas as ocorrencias dele no texto, mostrando sua posicao. Permita""\n" "tambem trocar todas as ocorrencias de um caractere por outro diferente.\n\n"}; printf("%s", reencrever(texto, 'a', '4')); //Exemplo puts("[Enter] para sair:"); getchar(); return (0); }
  24. Ansi C

    Número por Extenso?

    Ok! Você tentou fazer de 0 ate 9 pelo menos; PS.: Eu não sei por que nos cursos pedem exemplos com exercício de valores tão altos, já que o importante e o conceito; 999.999 é um exagero, para um simples exercícios;

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!