Ir para conteúdo
Fórum Script Brasil

C/C++ nuts

Membros
  • Total de itens

    50
  • Registro em

  • Última visita

Tudo que C/C++ nuts postou

  1. http://www.gidnetwork.com/b-57.html
  2. É só prestar atenção no que você está fazendo... void insere(celula *i) { void protecao_var(char* a); .... void protecao_var(char* a){ .... return a; } Se a função está declarada corretamente e o tipo de retorno não é conflitante, o compilador não reclama. Isso não torna C complicado, porque é assim em qualquer linguagem sem tipagem dinâmica. E não use fflush(stdin). Procure outro jeito de limpar o buffer.
  3. Isso se chama buffer sujo. Procure um jeito de limpar que não seja fflush(stdin).
  4. C/C++ nuts

    Soma de 2 matriz

    for (i = 0; i < n; i++) for (j = i + 1; j < n; j++) soma = mat[i][j]+mat2[i][j]; Por que "j=i+1"? http://pt.wikipedia.org/wiki/Adi%C3%A7%C3%A3o_de_matrizes
  5. C/C++ nuts

    Jogo da forca

    Não use fflush(stdin).
  6. Um loop é um do-while, while ou for. Você viu algum? maior_50 = idade >= 50 O que vem a ser isso? Você tem que contar quantas pessoas têm idade >=50 e não colocar o resultado da comparação.
  7. Outro modo é usar as funções ceil e floor. Quando um número é inteiro o resultado das duas funções é o mesmo. Melhor do que converter um float ou double p/ int e perder a representação. Por que você está usando variáveis globais? printf("Entre com o nome do aluno: "); fgets(nome, 20, stdin); scanf("%100[^\n]",nome); Por que você colocou um scanf depois do fgets se você já leu o nome do aluno? printf("Entre com a nota A: "); scanf("%f",&n1); while(n1<0){ printf("ERRO: Valor inválido. Digite novamente: "); scanf("%f",&n1); } Estruture melhor isso. do { printf("Entre com a nota A: "); scanf("%f",&n1); if (n1 < 0) printf("ERRO: Valor inválido. Digite novamente: "); } while (n1 <0); - Você não está incrementando a variável cont. E já que o loop não tem outra condição senão o valor dessa variável, use um for. - P/ tirar o \n da string use strchr.
  8. C/C++ nuts

    fatoração

    Encontrar todos os divisores de um número não é fatorar. A fatoração implica em encontrar divisores que multiplicados resultem no inteiro fatorado.
  9. C/C++ nuts

    Ajuda iniciante

    Use a tag code quando postar códigos. int olhos, cabelo, idade, i, // i = total Se 'i' é total de alguma coisa, então coloque 'total' como nome da variável, e não 'i'... maivelho // maior idade entre todos Se é o mais velho, é um tanto lógico que tem que ter a maior idade entre todos no conjunto. Não comente o nome da variável quando ele já explica o que ela armazena. #include <stdio.h> void menu_olhos() { puts("1 - Azuis"); puts("2 - Verdes"); puts("3 - Castanhos"); } void menu_cabelos() { puts("1 - Louro"); puts("2 - Castanhos"); puts("3 - Pretos"); } int main (int argc, char *argv[]) { int idade, mais_velho, cor_olhos, cor_cabelos; char sexo; int total_lido = 0; int mulheres = 0; while(1) { printf("Idade: "); scanf("%d",&idade); if (idade == -1) break; printf("Sexo (M/F): "); scanf("%*c%c",&sexo); // O %*c consome o \n que fica no buffer. Não use fflush(stdin). do { printf("=== Cor dos olhos:\n"); menu_olhos(); scanf("%d", &cor_olhos); if (cor_olhos < 1 || cor_olhos > 3) puts("Opção inválida."); } while (cor_olhos < 1 || cor_olhos > 3); do { printf("=== Cor dos cabelos:\n"); menu_cabelos(); scanf("%d", &cor_cabelos); if (cor_cabelos < 1 || cor_cabelos > 3) puts("Opção inválida."); } while (cor_cabelos < 1 || cor_cabelos > 3); if (!total_lido) mais_velho = idade; else { if (idade > mais_velho) mais_velho = idade; } if (sexo == 'F' || sexo == 'f' && idade >= 18 && idade <= 35 && cor_olhos == 2 && cor_cabelos == 1) mulheres++; total_lido++; } if (total_lido) { printf("Idade do mais velho: %d\n", mais_velho); printf("Porcentagem de mulheres entre 18 e 35 anos (inclusive), loiras e de olhos verdes : %.2f\%\n", 100.00*mulheres/total_lido); } return 0; }
  10. Ao invés de ficar chamando o próprio programa, use um while. Não entendi o que o negócio tem que fazer. Explique melhor.
  11. Kate, Gedit, (G)Vim, Geany e se eu não me engano, Eclipse. *Antes que venham com 'Vim é arcaico': se você não lembra ou não quer digitar toda uma estrutura, baixe o plugin SnipMate e coloque no diretório .vim.
  12. C/C++ nuts

    Dúvida

    if (((sexo=='f')||(sexo=='m')&&(nota_do_aluno>maior_nota))) maior_nota=nota_do_aluno; matricula_do_aluno_com_maior_media=numero_da_matricula; total_de_alunos_turma=numero_da_matricula; if ((sexo=='f')&&(nota_do_aluno<menor_nota)) menor_nota= nota_do_aluno; matricula_da_aluna_com_menor_media=numero_da_matricula; Lógico que não está. Você não incrementa a variável...Ao invés disso atribui o número de matrícula... E não precisa encher de parênteses os ifs. A ordem de processamento é da esquerda para direita. Você só precisa prestar atenção na precedência dos operadores. Se você está mexendo com notas, deveria ser um float, e não int. Além disso, dependendo da escala, as notas vão de 0 a 10 ou 0 a 100. Por que o 9999? E Por que ele é a menor nota e 0 é a maior? Se é p/ executar tudo o que está identado no if, você esqueceu das chaves. Não use fflush(stdin). fflush foi feito para saída de dados, e não entrada. http://www.gidnetwork.com/b-57.html http://ubuntuforums.org/showthread.php?t=83694 #include <stdio.h> void parseinput() { while(getchar()!='\n')continue; } int main (void) { int numero_da_matricula,total_de_alunos_turma=0; float maior_nota,menor_nota,nota_do_aluno; int matricula_aluno_maior_media,matricula_aluna_menor_media; char sexo,resp; while ((resp!='s')&&(resp!='S')) { printf ("Informe a Matricula= "); scanf ("%d",&numero_da_matricula); printf ("Informe a Nota= "); scanf ("%f",&nota_do_aluno); parseinput(); printf ("Informe o Sexo= "); scanf ("%c",&sexo); if (!total_de_alunos_turma) { maior_nota = nota_do_aluno; matricula_aluno_maior_media = numero_da_matricula; } else { if (nota_do_aluno>=maior_nota) { matricula_aluno_maior_media = numero_da_matricula; maior_nota = nota_do_aluno; } } if (sexo == 'f' || sexo == 'F') { if(!total_de_alunos_turma) { menor_nota=nota_do_aluno; matricula_aluna_menor_media = numero_da_matricula; }else{ if(nota_do_aluno<=menor_nota){ menor_nota=nota_do_aluno; matricula_aluna_menor_media = numero_da_matricula; } } } total_de_alunos_turma++; parseinput(); printf ("deseja parar?"); scanf ("%c",&resp); } printf ("o total de alunos: %d.\n\n",total_de_alunos_turma); printf ("a matricula do aluno ou aluna com maior media: %d \n\n",matricula_aluno_maior_media); printf ("a matricula da aluna com media %.2f: %d\n\n",menor_nota,matricula_aluna_menor_media); return (0); }
  13. C/C++ nuts

    Exercício 28

    #!/usr/bin/python def main(): value1 = input('Enter the first value: ') value2 = input('Entere the second value: ') print('What do you want to do?') option = input('1 - Addition\n2 - Subtraction\n3- Multiplication\n4 - Division') if option == 1: result = value1 + value2 elif option == 2: result = value1 - value2 elif option == 3: result = value1 * value2 elif option == 4: result = value1 / value2 else: print('Invalid option') exit() print('Result = ', result) if result % 2 == 0: print('Even number') else: print('Odd number') if result >= 0: print('Positive number') else: print('Negative number') if type(result) == int: print('Integer number') else: print('Float number')
  14. C/C++ nuts

    Ajuda com String[]

    for(String s: arquivosParaExclusão) System.out.println(s);
  15. C/C++ nuts

    Invalidar caracteres

    #include<stdio.h> #include<conio.h> #include<stdlib.h> int main() { int num[6],i,maior; maior=0; printf("# Numeros maiores que 0(zero). #\n"); printf("Valido somente com numeros.\n"); for(i=1;i<=6;i++) { printf("Digite o numero maior que 0(zero).\n"); scanf("%d",&num[i]); if(num[i]==0) { break; } if(maior<num[i]) { maior=num[i]; } if(num[i]<0) { while(num[i]<0) { printf("O numero não e valido. Por favor, insira outro numero.\n"); scanf("%d",&num[i]); } if(num[i]==0) { break; } if(maior<num[i]) { maior=num[i]; } }//end para o if }//end para o for printf("O maior numero e: %d\n",maior); printf("Pressione uma tecla para sair do programa.\n"); getch(); } Entrada: 0. O programa sai do for e maior = 0. Por que você faz duas comparações iguais? if(num[i]<0) { while(num[i]<0) { Índices em C começam em Zero. http://www.opengroup.org/onlinepubs/009695...inttypes.h.html http://www.opengroup.org/onlinepubs/009695.../strtoimax.html
  16. C/C++ nuts

    Invalidar caracteres

    #include<stdio.h> int main() { int leitura_numero,maior,i; printf("# Numeros maiores que 0(zero). #\n"); printf("Valido somente com numeros.\n"); for(i=1;i<=6;i++) { while (1) { printf("Digite o numero maior que 0(zero).\n"); scanf("%d",&leitura_numero); if (leitura_numero < 1) puts("O número não é valido. Insira outro número."); else break; } if (i==1) maior = leitura_numero; else { if(maior < leitura_numero) maior = leitura_numero; } }//end para o for printf("O maior numero e: %d\n",maior); return 0; } #include<stdio.h> #include <math.h> #include <limits.h> #include <ctype.h> #include <string.h> #include <inttypes.h> //C99 int valida_entrada(char *entrada) { int tamanho = strlen(entrada); int i; for (i=0;i<tamanho && isdigit(entrada[i]);i++); return i == tamanho; } int main() { int maior,i; char linha[(int)log10f(INT_MAX)]; intmax_t leitura_numero; for(i=1;i<=6;i++) { while (1) { printf("Digite o numero maior que 0(zero).\n"); scanf("%s",&linha); if (!valida_entrada(linha)) puts("A entrada contém outros caracteres.\n"); else { leitura_numero = strtoimax(linha,NULL,10); if (leitura_numero < 1) puts("O número não é valido. Insira outro número."); else break; } getchar(); } if (i==1) maior = leitura_numero; else { if(maior < leitura_numero) maior = leitura_numero; } } printf("O maior numero e: %d\n",maior); return 0; }
  17. Preste atenção no retorno da função. Strstr retorna um ponteiro. Um endereço de memória p/ substring da string 1 onde a função encontrou a string 2 ou NULL se não encontrar.
  18. Eu postei o código corrigido, se é que você não reparou.
  19. Case não precisa de chaves. Não use gets. Fflush não está definido p/ stdin. Muito cuidado com %i, porque não é a mesma coisa que %d. Se você já está usando opt != 0 como saída do while, não precisa colocar isso no case, já que não vai executar nenhuma ação. Comentários tipo fim if só têm sentido quando você está aninhando muitos ifs e cada um com uma condição diferente numa função gigante. Não é necessário colocar chaves num if que possui apenas um comando e colocando chaves num if desses, é óbvio que a chave que fecha o bloco demarca o fim do if. Evite esses nomes de variáveis: int ii=i; . Existem outras letras no alfabeto p/ usar como indice. int ii=i; i--; for (ii=ii; i>-1; ii--, i--) Você já inicializou a variável. É só deixar a primeira parte do for vazia. P/ desempilhar faltou a verificação de pilha vazia. O iniciarPilha deveria fazer o quê? void iniciaPilha(TPilha *L) { L->topo = MAX; } Assim você está dizendo que o topo da pilha é a posição do terceiro dado. Mas quando se fala de topo de pilha, é o próximo lugar onde será inserido o dado. Se é pilha, você remove do topo (o único caso onde vi remoção da base em uma pilha -- e não era bem remoção, mas substituição de valores -- era em uma implementação de um algoritmo de substituição de página). Por que fornecer o nome da pessoa a remover? #include<stdio.h> #include<string.h> #include <ctype.h> #include <stdlib.h> #define MAX 3 #define MAXNOME 30 typedef struct Pessoa{ char nome[MAXNOME]; int idade; }TPessoa; typedef struct Pilha{ int topo; TPessoa pessoas[MAX]; }TPilha; int menu(); void iniciaPilha (TPilha *p); int pilhaVazia(TPilha *L); int pilhaCheia(TPilha *L); void empilha(TPessoa p, TPilha *L); void topo(TPilha *ptr); void imprimirPilha(TPilha *L); void Desempilhar(TPilha *L); int main () { TPilha Pilha; TPilha * EPilha=&Pilha; iniciaPilha (&Pilha); TPessoa pes; int opt; do{ opt = menu(); switch(opt){ case 1: if(pilhaCheia(&Pilha)==1) puts ("pilha cheia!"); else { printf("Informa -> 1)nome 2)idade\n"); scanf("%30s",&pes.nome); scanf("%d",&pes.idade); empilha(pes, &Pilha); } break; case 2: if (pilhaVazia) Desempilhar(EPilha); break; case 3: topo (EPilha); break; case 4: imprimirPilha(EPilha); break; case 5: iniciaPilha (EPilha); break; } }while(opt != 0); return 0; } int menu(){ int opt; printf("1 - Empilhar\n"); printf("2 - Desempilhar\n"); printf("3 - Mostrar Topo\n"); printf("4 - Imprimir pilha\n"); printf("5 - Iniciar pilha\n"); printf("0 - Sair\n"); scanf("%d",&opt); return opt; } void iniciaPilha(TPilha *L) { L->topo = 0; } int pilhaVazia(TPilha *L){//bool if(L->topo == 0 ) return 1; //true else return 0; //false } int pilhaCheia(TPilha *L){ if (L->topo == MAX) return 1; else return 0; } void empilha(TPessoa p, TPilha *L){ if (pilhaCheia(L)) printf ("Pilha Cheia!\n\n"); else { L->pessoas[L->topo]=p; L->topo++; } } void topo(TPilha *L){ // imprimir o topo da pilha. if(L->topo == 0) puts("A pilha esta vazia!\n"); else{ printf("Nome: %s ",L->pessoas[L->topo-1].nome); printf("Idade: %d\n",L->pessoas[L->topo-1].idade); } } void imprimirPilha(TPilha *L){ if(L->topo == 0) puts("A pilha esta vazia!\n"); else{ int i; for(i=0; i<L->topo; i++){ printf("Nome: %s ",L->pessoas[i].nome); printf("Idade: %d\n",L->pessoas[i].idade); } } } void Desempilhar(TPilha *L){ if (L->topo == 0) printf ("\n Pilha vazia!!!\n"); else L->topo--; }
  20. você pode usar system("clear"), funcoes da conio.h/ncurses.h ou tentar uma gambiarra tipo isso #include <stdio.h> int main() { int N = 10,j; int contagem; for(int i=1;i<=N;i++) { contagem = 0; for(j=0;j<i;j++) { printf("%d ",j); contagem+=2; } for(j=0;j<contagem;j++) printf("\b\b"); } }
  21. #include <stdio.h> #include <string.h> int main() { char usuario[20], senha[10]; char tries = 3; printf("Sistema Positivo de Colegio \n"); printf("---------------------------------------------------------------------------- \n"); printf("\nAcesso Restrito \n"); while(tries > 0) { printf("\nUsuario: "); scanf("%s", &usuario); printf("\nSenha: "); scanf("%s", &senha); if (strcmp(usuario,"administrador") == 0 && strcmp(senha,"positivo") == 0) break; else { printf("\nUsuario ou senha incorreto. Tente novamente. \n"); tries--; } } return 0; }
×
×
  • Criar Novo...