Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.301
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. 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++;
  2. 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.
  3. 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.
  4. 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);}
  5. OK! Caramba, minha cabeça deu um nó ao tentar ler o algoritmo. contudo entendi que a dúvida diz sobre as variáveis globais e como são declaradas fora de uma função, é isso; Veja esse simples exemplo Ex.: #include <stdio.h>#include <stdlib.h>int fn_show_vetor(int); /*protótipo de função*/char * fn_pegar_vetor(int, int); /*protótipo de função*/char *ptr_vetor = NULL; /*variável globais aqui*//*Funçao Principal chamadora*/int main() { int largura; puts("Entre com o tamanho do vetor:"); scanf("%d", &largura); if(largura > 0) ptr_vetor = fn_pegar_vetor( largura, 'A' ); else { puts("Adeus"); return (0); } fn_show_vetor( largura ); if(ptr_vetor != NULL) free(ptr_vetor); return (0);}/*Cria um vetor dinamicamente do HEAP*/char * fn_pegar_vetor(int largura, int valor){ char * ctmp = NULL; ctmp = (char*) malloc(largura * sizeof(char)); if(ctmp == NULL) { puts("Houve erro ao tentar criar vetor."); exit(EXIT_FAILURE); } int i; for(i = 0;i < largura; i++) ctmp[i] = valor; return(ctmp);}/*Exibe os elemento de ptr_vetor de largura x*/int fn_show_vetor(int largura){ if(ptr_vetor == NULL) return(0); int i; for(i = 0; i < largura; i++) { printf("i = %d\n", i); printf("ASCII: %c\n", ptr_vetor[i]); printf("Char: %d\n\n", ptr_vetor[i]); } return(i);}
  6. Ansi C

    Matriz e Vetor HELP

    Ok! Antes de usar a função certifique se de esta declarada a livraria no incio (#include <string.h>); Depois use a função correspondente, da biblioteca que copia strings (strcpy); Vamos ao seu código: case 2: i++; strcpy(ranking[i],nome); //Esta corrento, a função vai copiar // a sequencia da origem: nome, para destino: ranking[ n-qualquer ], porém quem é i? printf("\t\t\t\t<<<ranking>>>\n"); for(i=1;i<10;i++){ //Vai percorrer o vetor com 10 nomes a partir do 2º nome. printf("\t\t\t\t%d lugar:%s\n",i,*ranking[i]); //Não a necessidade alguma deste // *. Ja que %s -> espera um ponteiro // para string, // e o * esta enviando uma letra }
  7. Ansi C

    Matriz e Vetor HELP

    OK! Existe maneiras literais de fazer isso, porém para simplificar... você pode reutilizar a função da "livraria" <string.h> com #include <string.h> ; Observe: char * nome = "Teste";char nome_ar[6]; // 6 para caber 'T', 'e', 's', 't', 'e', '\0'strcpy(nome_ar, nome); // neste momento os valores de nome serão copiados em nome_ar. Aplicando ao seu contexto será: strcpy(ranking[1], nome);
  8. Ok '!' Observe se por algum motivo talvez seja a condição de existência ((strcmp(cad[cont].nome,pesquisa)==0) da maneira com esta escrito a comparação e case sensitiva, ou seja somente será verdadeira se somente forem iguais em todos os caracteres. por exemplo: no data [Teste de Pesquisa] na pesquisa [teste de pesquisa] o resultado é: 1 são iguais, porém o pesquisa antecede data. O contrario também seria possível o resultado é: -1 são iguais, porém o pesquisa sucedesse data.
  9. Não é programação dinâmica; A pode parecer preconceito, de quem está apenas aprendendo, contudo ainda percebo um deficiência gravíssima nesta algoritmo dentro muitas coisa a recursão;
  10. Neste casa não é 1 e sim 2, haja vista que existem dois controladores de tipos são (%s1 %d2): while(!feof(arquivo)){if( fscanf(arquivo,"%s %d", &nome, &c)==2){printf("%s %d\n", nome, c);}
  11. não entendi direitinho: E para ser assim: void paint_Z(int x, int y); ou void paint_z(int tamanho);
  12. A função que grava dados no arquivo termina de gravar com uma nova linha; fprintf(arquivo, "%d\n",c); esse nova linha e lida pelo feof(), mais não e lido por scanf() dais a repetição; Como resolver isso: if(fscanf(arquivo,"%d", &c) == 1)printf("O total e: %d\n",c); Ou seja somente haverá impressão se houver dados, se não, não!
  13. Ansi C

    Duvida array

    Eu entendi que o objetivo final é saber qual das temperaturas é a maior ? se sim; Você deve primeiro adicionar as temperaturas em um vetor; aconselho fazer em um vetor menor que 31, apenas para teste. depois usar um loop e comparar todos os valores de maneira a preservar apenas o de maior valor na variável int maiorte; Faça isso parte por vez, e não simultaneamente; Dividir o trabalho ajudar a achar erros de logica.
  14. Ansi C

    Duvida array

    Ok! if ((vet[cont]) <=(-15) || (<= 45)) Essa parte destacada, chamaremos de condição de existência; A condição de ... if na forma com erro de semântica, o correto na minha opinião é como segue abaixo: if ((vet[cont]) <=(-15) || (vet[cont])(<= 45))
  15. system(const char* str) //Chama software nativos do sistema, assim com existe cls análogo a CLEAR, /* que é um comando dos DOS-W enfim se eu bem entendi, você que inciar através com CMD DOS-W e quando sair, sair todos juntos, basta seguir com mesta temática */ system("exit") // Chamada para sair em DOS-W.
  16. Se eu entendi bem os valores são passados por parâmetro de execução. então o a função main espera por argumentos tal qual. int main(int argc, char *argv[]) Onde argc, será o índice, Como esta assim cada valor de argv é um string; você pode trabalhar com strings ou com char deles.
  17. você deve criar um condição que trate possíveis espaços entre os operadores , (tratamento de bugs faz parte da progração) algo com se char for igual a espaço repetir char novamente até ser diferente de espaço desta forma o um operador ou um numero será lido pela escâner e os espaços serão devidamente ignorados nas operações.
  18. Tem que fazer simultaneamente; usando getchar() para pegar os sinais usando scanf() para pegar os números e um loop para controlar quantas vezes getchar() e scanf() vão se repetir; exemplo: 4 4 - 1 - 3 + 9 (depois da quantidade de operandos, vem a operação) aqui por exemplo será: 4x scanf() e (4 -1)x getchar() scanf()::4 getchar():: - scanf()::1 getchar():: - scanf()::3 getchar():: + scanf()::9
  19. Ansi C

    Ajuda em C

    Ok Preste atenção. Coloque as coisa neste ordem correta, esse é o problema; #define variáveis globais todas as struct declara de protótipos de função main() outras funções() ...
  20. Gravação e leitura tem que ser condizentes! fprintf(arquivo, "%d ", c); <- assim fica condizente com -> fscanf(arquivo,"%d ", &c);
  21. **Você tentou criar uma variável da ponteiro da estrutura file dentro de um label; FILE * arquivo; ***deveria criar externamente no topo da função, junta com as demais; Uma exemplo deste erro: int opcao = 0; switch(opcao) { case 0: // <- isso se chama Label. int i; //É uma erro declarar variáveis dentro do Label, //por tanto não copila, pois inflige as regras. i = 10; printf("Valor de i: %d", i); break; ... }} Para copilar tem que ser fora do label int opcao = 0;int i = 0; //Fora do Label funciona, agora não infligiu nenhum regra. switch(opcao) { case 0: // <- isso se chama Label. i = 10; // pode acessar, porém não declarar. printf("Valor de i: %d", i); break; ... }} agora a função que grava void calcular(int a, int b, int c){FILE *arquivo;arquivo=abre('a', "fn.txt");fprintf(arquivo, "O total e: %d\n", c);fechar(arquivo);} Ela não condiz com a função que ler: void listar(){FILE *arquivo;int c;arquivo=abre('l', "fn.txt");while(!feof(arquivo)){fscanf(arquivo,"%d", &c);printf("\nO resultado e: %d");} Em uma você gravou string depois numero; Na outro você quer ler somente o numero, isso não pode acontecer assim! Gravação e leitura tem que ser condizentes! fprintf(arquivo, "%d ", c); <- assim fica condizente com -> fscanf(arquivo,"%d", &c) O total e: %d não é igual a %d, por isso vai dar erro
  22. Ok '!' Você fez tudo certinho, só na ordem dos acontecimentos é que esta o erro: Observe: Para corrigir você so precisa colocar a declaração da matriz depois que tiver valores de linhas, e colunas certinhos. printf("Digite o numero de linhas da matriz: ");scanf("%d", &linhas);printf("Digite o numero de colunas da matriz: ");scanf("%d", &colunas);printf("voce gerou uma matriz [%d][%d]\n\n\n",linhas, colunas);// Agora posso criar minha matriz com segurança, neste ponto será como esperado.int matriz[linhas][colunas]; /* Matriz criada com valores passado para scanf */
  23. Fiz um teste apenas com a função lista; Com os seguintes passos: Criei um arquivo com nome fn.txt, no mesmo local onde se encontra o programa em meu PC. Copilei o código, com as modificações já propostas aqui no fórum. Optei por listar. o resultado, foi os números que gravei previamente no arquivo fn.txt (usei o bloco de notas para gravar); ​ Essa função esta ótima.
  24. char depende da codificação. UTF - 8; ASCII etc. Faça uma teste pressione Alt+ 219 = █
  25. Ok '!' Erro está ao iniciar variáveis int linhas, colunas, i, j;int matriz[linhas][colunas]; Dentro o computador: linhas; colunas; Já possuem valor muito antes de você digitar os valores nas Main::scanf(); A mesma coisa acontece com matriz[linhas][colunas] que será iniciada com esse valores indeterminados.

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!