Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.263
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. 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); }
  2. 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;
  3. Ansi C

    Teste de Overflow?

    Uma dica! Exite um limite para armazenamento de valores dentro de um variável binaria; Quando esse limite é atingido, o sistema simplesmente retorna a variável para 0; Observe como isso ocorre aqui neste simples exemplo: //char equivale a 1 byte, em sistemas 32bitsunsigned char OVER = 0; // Variável exclusivamente positiva, Iniciada com 0. while(++OVER/*adiciona 1 a 1*/) printf("%d\n", OVER); //Atinge seu valor máximo e termina em zero ;
  4. OK! Observe que você usou o a função system("cls"); Logo apos a exibição da média, assim não tem olho que consiga ver o resultado antes da tela ser limpa; Resolve excluindo essa parte do algoritmo;
  5. Nada, segue o mesma linhas de raciocínio. Observe o exemplo abaixo, onde estabeleci a possibilidades ilimitada: #define LEN 15//Questões.int jh[LEN]; int atual; atual = 0; int i; for(i = 0; i < LEN; i++) jh[i] = LEN; srand(time(NULL)); for(i = 0; i < LEN/*Sorteios*/; i++) { //Em hipótese nenhuma será possível repetir consecutivos numeral while( (atual = rand()%LEN) == jh[atual] ) continue; jh[atual] = atual; //Absolutamente nunca repete printf("Numeral: %d <-\n", atual); }
  6. Ok! Em C, existe um recurso de manipulação de baixo nível por struct. Veja o simples exemplo abaixo de um struct de apenas 1 byte de tamanho: struct byte_bit{ //Um byte char bit_0: 1;//Mais baixo bit = 1 char bit_1: 1; char bit_2: 1; char bit_3: 1; char bit_4: 1; char bit_5: 1; char bit_6: 1; char bit_7: 1; //Mais alto bit = 128} stByte; //Tenho apenas 1 byte; para acessar qualquer bit basta fazer: stByte.bit_7 = 1; //Ativar bit
  7. Para mim ficou difícil ajudar, ainda mais por que acho necessário saber o conteúdo desse arquivo txt. E seu Layout também
  8. Ansi C

    Problema com matriz[C]

    Aceita o que? entrada de dados, através da função scanf? caso seja isso é por conta da condição de existência do loop for for(l=0;l<4;l++) onde esta 4 deveria ser 3, haja vista que a tabela é [3][3]
  9. Eu amo quando você post os algoritmos ♥ Vamos do começo; Você sabe o que são struct ? Caso afirmativo e você concorde coloque esses dados que são as informações dos clientes em uma struct. Caso não saiba, pesquise sobre struct.
  10. OK! Eu acho que podemos resolver isso com uma variável para impor um condição de existência impedindo a repetição consecutiva do numeral sorteado. Uma variável chama numero_anterior armazena o último numeral selecionado, se caso o novo numeral de retorno de rand() for igual ao anterior a condição força a realizar novamente sorteio até obter um resultado diferente de numero_anterior; int anteiro; int atual; atual = anterior = 0; srand(time(NULL)); int i; for(i = 0; i < 3/*Sorteios*/; i++) { //Em hipótese nenhuma será possível repetir consecutivos numerais while( (atual = rand()%3) == anterior) continue; anterior = atual; //Aqui estabelecemos a futura condição printf("Numeral: %d <-\n", atual); } E possível estende ainda mais a condição para tando crie mais variável anti-repetição Observe que fiz logo abaixo um algoritmo que completo o que mencionei acima: int jh[3]; int atual; srand(time(NULL)); int i; for(i = 0; i < 3/*Sorteios*/; i++) { //Em hipótese nenhuma será possível repetir; while( (atual = rand()%3) == jh[0] || atual == jh[1] || atual == jh[2] ) continue; jh[1] = jh[2]; //Absolutamente nunca repete. jh[2] = jh[0]; jh[0] = atual; printf("Numeral: %d <-\n", atual); }
  11. Você o programa completo, ou ajuda em parte de seu código, post da parte em que você tem dúvida é muito interessante para mim que estou aprendendo também.
  12. Por que ainda estais usando aspas duplas, troque por aspas simples
  13. Não! Você na verdade comparou um caractere com um ponteiro para string literal. Para fins de entediamento a comparação seria equivalente assim: Agora sim você como abaixo estaria comparando caracteres correspondentes; com espaço ('\40' ou ' '); if(palavra[i] != *" ") Observe que coloquei um * para referencia apenas o primeiro elemento do string que naturalmente é espaço. Veja também. char * ptr = "Oi! eu sou um string literal, e C me enxerga como um ponteiro constante";ptr \\aponta para O na memoria; Resumindo o problema é que em vez de aspas duplas deveria ser aspas simples.
  14. OK! A primeira palavra termina quando o primeiro espaço surgi! Beleza, contudo palavra[] // é um string quando termina com \0; palavra // é um elemento de um vetor de inteiros; Em C, é assim que funciona, e eu resolveria assim: /*Eu amo programas em C*/ char love[] = "Eu amo programar em C"; char ch; int i = 0; while( (ch = love[i++]) != ' ') putchar(ch); printf(" %s\n", love); if(palavra!=" ") " " aspas duplas = string = '\40 ' e '\0', ' ' aspas simples = literal char = ' \40';
  15. Ok, Vamos pensar um pouco, 10 x 10 é de 10 linhas e 10 colunas. Vamos considera um exemplo menor: 2 x 3 Quem determina o tamanho do campo e o numero de maior que tem mais casas decimais. O C por exemplo se limita a um impressão por linha; Assim eu teria de ter todos os tamanho de campos previamente determinado antes de imprimir os numero; Veja esse simples exemplo, e bem literal, logo abaixo: /*Campos Formatados com printf*/ int iNumeros[2][3] = { { 10, 100, 1}, {100, 10, 10} }; int l_tmp = 0; int colunas[3] = {0}; //Tamanho dos Campos int div = 0; int i; for(i = 0; i < 3; i++) { int j; for(j = 0, l_tmp = 0; j < 2; j++) { div = iNumeros[j][i]; while(div) { //Determinado o tamanho dos campos div /= 10; l_tmp++; } if(iNumeros[j][i] <= 0) l_tmp++; //Remove o bug dos negativos if(l_tmp > colunas[i]) colunas[i] = l_tmp; l_tmp = 0; } } for(i = 0; i < 2; i++, putchar('\n')) for( div = 0; div < 3; div++) { l_tmp = printf("%d", iNumeros[i][div]); //pode simplificar com flag da função printf l_tmp = colunas[div] - l_tmp; while(l_tmp) { putchar(' '); l_tmp--; } putchar('|'); }
  16. Ok! Você pode tentar por força bruta a critério didático veja abaixo : supomos que Iniciamos; Q = 4; x = 0.25f; Temos a Raiz de Q como sendo: Q = x2 = (x * x); Se x*x for < Q Resultado x; se não x += 0.25f; ate encontrar o resultado; /* Raiz maior de um numero qualquer */ float Q = 16; float x = 1; while(x * x < Q) //Se for igual ou maior pare e imprime o resultado x += 0.25f; printf("%.1f", x); O resultado pode ser bem mais preciso, basta para tanto revermos o problema.
  17. Ok está função está 'muito louca'. void Arquivo() int i,n,j,o; //Não foram inicializados O logo abaixo você os utiliza em um loop: for(i=0;i<n;i++) for(j=0;j<o;j++) Acredito que esse seja o motivo de está travando. se n por exemplo tiver algo como por exemplo 268797 imagina o que vai acontecer no vetor !!! Aproposito eu notei que, existe variáveis como mesmo nome repetido em muitas funções, São elas: o, n, media, m; se por acaso essas variáveis são de fato as mesma e por tanto devem ter o mesmos dados, as declare como variáveis globais. Ainda sim, se o termo variáveis globais lhe é estranho lhe digo que toda variável declarada no topo do documento pode ser acessadas em qualquer função. Por Exemplo; ///Essa é uma Variável Global declarada que existe no seu programa.FILE *dados;
  18. Ok Caso tenha desistido segue abaixo: /* Remove o char c de string[n-ocorrências]*/char * retira(char STRING[],char c){ char c_tmp; int i; int t; //Toda a sacada neste algoritmo, vem desta variável. for(i=0, t = 0;(c_tmp = STRING[i])!='\0'; i++) { if(c_tmp == c);//Faz nada; else STRING[t++] = c_tmp; } STRING[t] = '\0'; return STRING;}
  19. Comigo fica ruim quando o post vem com todo o programa, é mais interessante quando o post tem apenas a parte que gera erro ou algoritmo da dúvida. Da maneira que está apenas percebi que você abusou das funções fxxxx (fwrite etc...).
  20. Ok! Uma Dica: Use um variável temporária para armazenar o valor menor/maior. /**Logica do sobe e desce*/ T A <> B T = A A = B B = T; A><B Fica mais seguro com esse dica.
  21. Ok! Você subscreveu o string. Eu entendi sua lógica o erro na função é o 2- retorno FOR, do else; repense o algoritmo simples sem ele (O FOR int m), caso queira postaremos uma das solução.
  22. Ok! Aqui executou normalmente, se for um erro no seu editor, atualize-o antes, caso não esteja usando Code Block, eu recomendo como sendo melhor IDE gratuito que existe para C/C++;
  23. Ok! existe uma 'livraria' no c que é ótima, <ctype>; com a declaração: #include <ctype.h> terá acesso a função tolower(int c); uma recebe o valor (letra) e maiúsculo retorna minusculo; e a função toupper(int c); uma recebe o valor (letra) e minusculo retorna maiúsculo; essa biblioteca tem muitas outros funções de manipulação de char muito uteis e interessantes.
  24. Ok! Não estou conseguindo, ler quase nada, porém o conceito de uma vetor automático que em consegui ver está errado. Observe: /*Aqui você já tem a memoria necessária, ou limitada, então não faz sentido*/float soma[50]; float media[50]; Esqueça também essa 'estoria' de que as variáveis e vetores devem ser declaradas e inicializadas no topo da função isso é uma normatização trivial muito conceituadas nas faculdades, nas ruas é uma besteira total; Vamos, ao que interessa Observe como é o conceito de vetor automático. #include <stdio.h>#include <stdlib.h>/*Funçao Principal chamadora*/int main(){ int valor = 0; //matriz[9999]; antigamente puts("Entre com valor da matriz:"); scanf("%d", &valor); if(valor > 0) /*Matriz somente será feita mediante valor valido, hoje em dia*/ { int matriz[valor]; int i; for(i = 0; i < valor; i++) { matriz[i] = 0; printf("%d ", matriz[i]); } } return (0);} Neste exemplo matriz, não pode ser acessado fora do Block if, Apenas coloque dentro de um bloco para entendermos melhor o conceito. normalmente if não entre neste algoritmo.
  25. Ok! O que é um numero positivo? Veja esse simples exemplo: #include <stdio.h>#include <stdlib.h>/*Funçao Principal chamadora*/int main() { int entre = 0; //Variável da entrada de novos valores e sentinela de while int soma = 0; //Variável soma e resultado. puts("Entre com um sequencia de valores inteiros (-1 para sair):"); scanf("%d", &entre); if(!entre) { puts("Adeus"); return (0); } while(entre > -1/*apenas valores positivos serão verdades*/) { soma = soma + entre; entre = -1;//Sentinela. puts("Entre com um sequencia de valores inteiros (-1 para sair):"); scanf(" %d", &entre);/*continua solicitando entrada ate sentinela*/ } printf("O ultimo valor digitado e: %d\nA soma de todos os valores e; %d", entre, soma);//Resultados. 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

×
×
  • Criar novo...

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!