Ir para conteúdo
Fórum Script Brasil

Nefisto

Membros
  • Total de itens

    36
  • Registro em

  • Última visita

Tudo que Nefisto postou

  1. #include <stdio.h> int main() { int n = 10;//n é igual a quantia de numeros que o usuario vai digitar int x;//armazena a entrada do usuario int quantiaPares = 0,//armazena a quantia de numeros pares quantiaImpares = 0;//armazena a quantia de numeros impares register int i;//contador do for for(i = 0; i < n; i++) { scanf("%d", &x); if( !(x%2) ) //se o resto da divisao x/2 for igual a 0, quer dizer q o numero e par quantiaPares++;// incrementa o valor de quantia pares em um else//se nao for par, o numero é impar quantiaImpares++;//entao incrementa a quantia de impares } //Mostra os resultados printf("%d numeros pares.\n", quantiaPares); printf("%d numeros impares.\n", quantiaImpares); return (0); }
  2. Cara, na proxima vez coloca o codigo inteiro. Faz um teste de mesa que ta bem na cara aonde que ta os erros, vo coloca um codigo novo aki, se mesmo depois do teste de mesa nao encontrar os erros, posta o codigo inteiro q a gente tenta te auxilia #include <stdio.h> int main() { unsigned n; double somaTotal = 0; unsigned fatAtual = 1; register int i, a; scanf("%u", &n); for(i = n; i > 0; i--) { for(a = i; a > 0; a--) // Aki ele calcula o fat do valor atual fatAtual *= a; somaTotal += 1.0/fatAtual;//aki faz a somatoria fatAtual = 1;//reseta o fat } printf("%lf\n", somaTotal); return (0); }
  3. Eu POSSO te ajudar, mas não posso RESOLVER para vc. Foruns em geral são para AJUDAR e nao RESOLVER questoes, então, senta e estuda um pouco sobre o assunto, tenta fazer e quando vc travar em alguma parte, volta aki e mostra oq vc ta fazendo q eu vou ter um enorme prazer em AJUDAR ;P
  4. A função printf segundo o "tutorialspoint": int printf(const char *format, ...) Os parâmetros esperados são: Fomat -> espera receber uma string que sera enviada para o stdout, essa string pode receber especificados, q é o que vc faz com %d %f %c, etc. ... -> Isso indica que a função pode receber uma quantidade variável de parâmetros. Ou seja para efetuar cálculos vc precisa entrar com ao menos um especificador, no caso a forma correta seria: #include <stdio.h> #include <stdlib.h> int main() { printf("Calcule a expressao abaixo:\n"); printf("%d\n", 2*6+11*5); system("pause"); return 1; } Sobre o system("pause"): Resumindo essa funcao é como enviar um comando direto para o seu sistema, ou seja, qualquer comando que vc use no seu prompt, vc pode tbm usar no seu system(comando), como "dir", "cls", etc.
  5. Quando vc entra com o %c no scanf, no primeiro loop ele pega a letra que vc digitou, no segundo o enter q vc apertou, e esse processo se repete, por isso só passa duas vezes. #include <stdio.h> int main() { float pi, V[4]={1750, 800, 1200, 2000}; scanf("%f", &pi); int b=0; char a; printf("%p %p\n", &b, &a); while(b < 4) { scanf("%c", &a); getchar();//O ERRO ESTA AKI if(a == 'S') { pi = pi + V; //Isso aqui nao faz sentido, V sem indice é um ponteiro e vc ta somando ele com float } else { pi=pi; //tbm nao intendi o proposito disso } a=0; b++; } printf("%.2f\n", pi); return 0; }
  6. Nefisto

    Dúivida de iniciante

    #include <stdio.h> int main() { int x_point, y_point, r, x_c, y_c, total; printf("Informe o valor de X Point: "); scanf("%d", &x_point); printf("Informe o valor de y Point: "); scanf("%d", &y_point); printf("Informe o valor de X c: "); scanf("%d", &x_c); printf("Informe o valor de y c: "); scanf("%d", &y_c); printf("Informe o valor de R: "); scanf("%d", &r); if( ((x_point - x_c)*2 + (y_point - y_c)*2) <= (r*r) ) printf("Pertence.\n"); else printf("Nao pertence.\n"); return 0; }
  7. Nefisto

    Duvida Contar Palavra

    #include <stdio.h> #include <string.h> // int MySubPos(char nome[], char sub[]) // { // register int i, a, b; // for(i = 0; nome[i]; i++) // if(nome[i] == sub[0]) // { // for(a = i, b = 0; sub[b]; a++, b++) // if(nome[a] != sub[b]) // break; // if( !sub[b] ) // return i; // } // return -1; // } int MySubPos(char nome[], char sub[]) { register int i; for(i = 0; nome[i]; i++) if( !(strcmp(&nome[i], sub)) ) return i; return -1; } int main() { char word[100], sub[100]; scanf("%s %s", word, sub); int res = MySubPos(word, sub); res != -1 ? printf("Pos %d\n", res) : printf("A sub nao foi encontrada\n"); return 0; }
  8. Nefisto

    Numero fatorial

    #include <stdio.h> int Fatorial(int numero) { if(numero <= 1) return 1; else return numero * Fatorial(numero - 1); } int main() { int n; double soma; register int i; scanf("%d", &n); while(n > 0) { soma = 1.0; for(i = 1; i <= n; i++) soma += 1.0/Fatorial(i); printf("Valor de E: %.40lf\n", soma); scanf("%d", &n); } return 0; }
  9. Ola @joaogabriel97, primeiro creio q o seu problema seja só que o noAtual nao esta na heap, e nem se quer foi iniciado, e vc perguntar se um ponteiro iniciado pelo sistema é NULL pode gerar erros bem complicados. void salvacam(lcam **cabeca){ lcam *noatual; noatual = *cabeca; FILE *arquivo; arquivo = fopen("Caminhões.txt", "a+"); if(arquivo == NULL){ printf("Erro na Abertura do Arquivo"); } else{ if(noatual == NULL){ fprintf(arquivo,"Lista Vazia!\n"); } else{ while(noatual != NULL){ fprintf(arquivo,"ID:%d\n", noatual->id); fprintf(arquivo,"Motorista:%s\n", noatual->motorista); fprintf(arquivo,"Marca:%s\n", noatual->marca); fprintf(arquivo,"Local Atual:%s\n", noatual->la); fprintf(arquivo,"Lista de Destinos:%s\n", noatual->lisd); fprintf(arquivo,"KM/L:%f\n", noatual->kml); noatual = noatual->prox; } } } // fclose(arquivo); printf("Salvo com Sucesso!"); } Espero que isso resolva seu problema, porem mto cuidado com oq esta fazendo, apesar de o caminho certo ser esse, vc esta complicando mto uma coisa q por natureza já não é tao simples. Mas o caminho é esse aew ;P pelo menos eu acho q é hehe
  10. Ola @Alexandre Prezzi, realmente é possível resolver esse tipo de problema fazendo uso de variáveis auxiliares, porem, creio eu q trabalhar com structs para gerar tuplas(registros) seja melhor, apesar da logica para criar o programa ser mais complexa doq usando variaveis auxiliares, sua praticidade depois de pronto é muito maior. **Comenta e descomenta as linhas de codigo logo abaixo dos "for" e o programa vai se organizar ;P** #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define NOMEMAX 50 //quantas letras o nome da pessoa pode ter no maximo #define PESSOASMAX 3 //quantas pessoas vai existir no nosso vetor //Aqui a gente cria a estrutura, no caso ela so tem nome e idade, mas pode facilmente ser complementada typedef struct { char* nome; int idade; }td_Registro; td_Registro* CriaRegistro(); //Aqui se aloca o espaco para o registro, no caso sempre q se quiser criar uma "Pessoa" nova, vc chama essa funcao void IniciaRegistro(td_Registro* registro); //No caso essa funcao nao é exatamente necessaria, porem pode evitar erros sutis void TrocaRegistro(td_Registro* pessoa1, td_Registro* pessoa2); //Faz a troca do registro td_Registro* CriaRegistro() { td_Registro* retorno = (td_Registro*)malloc(sizeof(td_Registro));//aloca o registro retorno->nome = (char*)malloc(sizeof(char) * NOMEMAX); IniciaRegistro(retorno); return retorno; } void IniciaRegistro(td_Registro* registro) { registro->nome[0] = '\0'; registro->idade = 0; } void PreencheRegistro(char nome[], int idade, td_Registro* pessoa) { strcpy(pessoa->nome, nome); pessoa->idade = idade; } void TrocaRegistro(td_Registro* pessoa1, td_Registro* pessoa2) { td_Registro* registroAuxiliar = CriaRegistro(); strcpy(registroAuxiliar->nome, pessoa1->nome); registroAuxiliar->idade = pessoa1->idade; strcpy(pessoa1->nome, pessoa2->nome); pessoa1->idade = pessoa2->idade; strcpy(pessoa2->nome, registroAuxiliar->nome); pessoa2->idade = registroAuxiliar->idade; } void MostraRegistros(td_Registro* registros[]) { int i; for(i = 0; i < PESSOASMAX; i++) { printf("Numero: %d\t", i); printf("Nome: %s\t", registros[i]->nome); printf("Idade: %d\n", registros[i]->idade); } } int main() { int i, a; //Ja com as funcoes prontas, fica bem simples a execucao do programa //1º a gente cria o vetor de registros q a gente quer usar( antes que alguem escreva que uma lista seria uma saida mais inteligente, quero dizer q vc esta certo =D ) //***só cuide quando for usar, pq é necessario q seja um vetor de ponteiros, ja que os espacos estao sendo alocados dinamicamente*** td_Registro* registros[PESSOASMAX]; //2º iniciamos cada ponteiro do registro fazendo uso de um for for(i = 0; i < PESSOASMAX; i++) registros[i] = CriaRegistro(); //Agora nosso vetor ja esta criado e corretamente iniciado //3º preenchemos o vetor com os valores que o usuario digitar ou de forma manual aki pelo codigo, no nosso caso vamos fazer por aki msmo PreencheRegistro("Eduardo", 20, registros[0]); PreencheRegistro("Ana", 30, registros[1]); PreencheRegistro("Carlos", 10, registros[2]); //Agora diagmos q eu queira organizar por ordem alfabetica // for(i = 0; i < PESSOASMAX-1; i++) // for(a = i+1; a < PESSOASMAX; a++) // if(toupper(registros[i]->nome[0]) > toupper(registros[a]->nome[0])) // TrocaRegistro(registros[i], registros[a]); //Agora digamos q eu queira ordenar por idade de forma crescente // for(i = 0; i < PESSOASMAX-1; i++) // for(a = i+1; a < PESSOASMAX; a++) // if(registros[i]->idade > registros[a]->idade) // TrocaRegistro(registros[i], registros[a]); //Mostra os registros MostraRegistros(registros); return 0; } Espero que vc tenha percebido pq trabalhar desta forma é mto melhor doq usando variaveis auxiliares, a menos que seja para projetos mto pequenos, evite trabalhar daquela forma. Embaixo eu vou corrigir o seu codigo inicial, caso vc prefira continuar trabalhando daquela forma: OBS: pq vc colocou char na idade??? o.O Enfim, acho q era assim que vc queria #include <stdio.h> #include <string.h>//necessário para strncat #include <conio.h> int main (void) { char nm[3][20], aux[20]; int idade[3], auxIdade; int i,j; strcpy(nm[0], "Eduardo"); idade[0] = 20; strcpy(nm[1], "Ana"); idade[1] = 30; strcpy(nm[2], "Carlos"); idade[2] = 10; for (i = 0; i < 2; i++) { //O primeiro loop vai passar por todo o vetor, menos o ultimo for (j = i+1; j < 3; j++) {//O segundo loop vai fazer as comparações // verifica se tem que ser depois, se for troca de posição if (strcmp(nm[i], nm[j]) > 0) { //Voce só efetua a troca do nome, precisa trocar a idade tbm, para isso precisa criar o um auxiliar para a idade tbm strcpy(aux, nm[j]); auxIdade = idade[j]; strcpy(nm[j], nm[i]); idade[j] = idade[i]; strcpy(nm[i], aux); idade[i] = auxIdade; } } } // só mostrar a matriz for (i = 0; i < 3; i++){ printf("\n%s - %d", nm[i], idade[i]); } }
  11. Nefisto

    Macro em C

    Bom dia Exata0mente, vou tentar ajudar com o seu problema, geralmente quando usamos "macros semelhantes a funcoes" assim como o nome já diz não se preocupamos com os printf e sim com o calculo para retornar o valor desejado, da uma olhada o codigo e ve se é isso q você queria. Quando trabalhando com este tipo de macro, reescrever um equivalente com IF/ELSE pode ajudar na montagem do operador ternario. Espero ter ajudado; GLHF #include <stdio.h> #define MAIOR(a, b, c) a > b ? a > c ? a : c : b > c ? b : c /*O define de cima é refente ao codigo de baixo if(a > b) if(a > c) return a; else return c; else if(b > c) return b; else return c; */ int main() { int a, b, c; scanf("%d %d %d", &a, &b, &c); printf("Maior: %d\n", MAIOR(a, b, c)); return 0; }
×
×
  • Criar Novo...