-
Posts
3.263 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
#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); }
-
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;
-
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 ;
-
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;
-
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); }
-
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
-
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
-
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]
-
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.
-
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); }
-
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.
-
Por que ainda estais usando aspas duplas, troque por aspas simples
-
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.
-
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';
-
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('|'); }
-
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.
-
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;
-
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;}
-
Dificuldade em gravar dados binarios em um sistema de cadastro feito com listas
Ansi C respondeu ao tópico de Lucas Tasca em C/C#/C++
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...). -
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.
-
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.
-
Urgente sin e cos nao funciona com variaveis
Ansi C respondeu ao tópico de guilherme c veloso em C/C#/C++
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++; -
Como alterar só a primeira letra de cada palavra de uma frase para maiúscula?
Ansi C respondeu ao tópico de Cristiano De Moraes em C/C#/C++
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. -
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.
-
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