Ir para conteúdo
Fórum Script Brasil

Gnomo Verde

Membros
  • Total de itens

    4
  • Registro em

  • Última visita

Sobre Gnomo Verde

Gnomo Verde's Achievements

0

Reputação

  1. Não, não é protótipo, pelo que parece o erro está entre os parenteses.... Código que funcionou: #include <stdio.h> int troca (int &i, int &j) { int tmp = i; i = j; j = tmp; return tmp; } int main (void) { int n, k; printf ("Introduza dois numeros: "); scanf ("%d%d", &n, &k); printf ("Antes da troca: n=%d k=%d\n", n, k); printf ("%d\n", troca (n, k)); printf ("Depois da troca: n=%d k=%d", n, k); } Já nesse da erro de compilação: #include <stdio.h> #include <stdlib.h> int troca (int &i, int &j) { int tmp = i; i = j; j = tmp; return tmp; } int main (void){ FILE *file; float v[10], x; int i , n; for (i=0; i<10; i++){ printf("Introd. o %d° N°: ", i+1)/ scanf("%f", &v[i]); } if ((file = fopen("DADOS.DAT", "w+b")) == NULL){ printf ("Imp. criar o arq. temp.dat\n\n"); exit(1); } if ((fwrite(v, sizeof (float), 10, file)) != 10){ fprintf (stderr, "não foi possivel escrever todos os elementos!!\n"); exit(2); } printf("Qual a ordem do numero que pretende ver 1..10? "); scanf("%d", &n); fseek(file, (float) (n-1)*sizeof(float), SEEK_SET); fread(&x, sizeof (float), 1, file); printf ("O %2d° n° introduzido foi: %.2f\n", n, x); rewind(file); fread(&x, sizeof (float), 1, file); printf ("O 1° n° introduzido foi: %.2f\n", x); fseek (file, -(long) sizeof(float), SEEK_END); fread(&x, sizeof(float), 1, file); printf ("O 10° n° introduzido foi: %.2f\n", x); fclose(file); } como você pode ver a função troca é a mesma nos dois códigos, porem somente um retorna um erro de compilação... consegui descobrir o porque disso... o primeiro arquivo foi salvo como prog0901.cpp, enquanto o segundo foi salvo como prog1010.c ... Aparentemente em C++ é possivel utilizar o '&' em funções enquanto em C isso não é possivel (se eu não estiver errado foi isso que aconteceu...).
  2. Cara, eu já tinha feito um programa parecido com esse, mas ao invés do usuario inserir os numeros os numeros eram randomizados segue o codigo: /*GERADOR CPF com funções*/ #include <stdio.h> #include <stdlib.h> #include <iostream> #include <time.h> #define NSALT 9 #define t_CPF 11 #define PESO_INC 10 int rnd_cpf (int v[]) { long long ultime, j; time (&ultime); srand ((unsigned)ultime); for (j=0; j<NSALT; j++) v[j] = rand()%10; } int calc_digt (int v[], int peso, int n_elem) { int i, j, k, soma, valor = 0; for (i = 0, j =peso, k = n_elem; i <k; i ++, j--) valor += v[i]*peso; j = valor%11; if (j <2) v[n_elem] = 0; else v[n_elem] = 11-j; } main () { int cpf[t_CPF], i, j, k, resp; for (resp = 1; resp == 1; resp ++) { puts ("GERADOR DE CPF'S"); puts ("----------------\n"); puts (""); puts ("1- GERAR"); puts ("0- SAIR"); printf ("------------> "); fflush (stdin); scanf ("%d", &resp); if (resp == 1) { rnd_cpf (cpf); for (i = 1, j = PESO_INC, k = NSALT; i <=2; i++, j++, k++) calc_digt (cpf, j, k); puts (" --------------------- "); std :: cout <<"| CPF: "<<cpf[0]<<cpf[1]<<cpf[2]<<"."<<cpf[3]<<cpf[4]<<cpf[5]<<"."<<cpf[6]<<cpf[7]<<cpf[8]<<"-"<<cpf[9]<<cpf[10]<<" |\n"; puts (" --------------------- "); puts (""); system ("pause"); system ("cls"); resp =0; } else if (resp == 0) break; else { do { puts ("Opcao incorreta... tecle 1 para reiniciar"); printf ("------------> "); scanf ("%d", &resp); } while ((resp != 1) && (resp != 0)); if (resp == 1) system ("cls"); resp --; } } } para fazer do seu jeito (onde o usuario digita os 9 primeiros numeros), você pode retirar o "#include <time.h>" e a função "int rnd_cpf (int v[])", pois você não vai precisar randomizar os numeros, subistitua essa função por uma que leia os 9 numeros e os coloque dentro de um vetor, e substitua os "rnd_cpf (cpf)" pela função que você criar; um exemplo de uma função que pode funcionar é: void intr_cpf (int *v) { int j; for (j=0, j<9; j++) scanf("%d", &v[j]); } Boa Sorte!!, se ainda não tiver resolvido
  3. tentei compilar dois programas diferentes com uma mesma função um dos programas me retorna nenhum erro, enquanto o outro me retorna um erro por causa de uma linha extamente igual no outro: int troca (int &i, int &j) um dos programas me retorna: expected ‘;’, ‘,’ or ‘)’ before ‘&’ token Porque isso acontece?
  4. Me ajudem a resolver esse problema... Por Curiosidade de saber como eu posso definir um Vetor que receba um numero indeterminado de elementos, para isso eu defini o seguinte teste: O usuario escreve uma frase qualquer na tela, e em seguida, a frase digitada retorna na tela, segue o codigo: #include <stdio.h> #include <stdlib.h> char ler_fr(char f[]) { int i=0, n_c=1; while (i<n_c) for (i=0; i<n_c; i++) { fflush (stdin); scanf ("%c", &f[i]); n_c++; if (f[i] == '\n') i ++; } } main () { char frase[1], fr; puts ("Digite uma frase ----->"); ler_fr (frase); puts (""); puts ("A frase digitada foi-->"); puts (frase); } Quando eu executo no Debian (Sistema que usei pra escrever isso), ocorre que o programa executa normalmente ate sete caracteres, depois disso o codigo continua funcionando e me retorna exatamente o que eu quero, mas aparece uma mensagem de falha de segmentação. Quando executo no Windows, preciso teclar <ENTER> duas vezes para terminar a entrada da frase eno final é exibido somente o primeiro caractere. Por que isso acontece? E como eu posso resolver isso?
×
×
  • Criar Novo...