Problema com programa em C [RESOLVIDO]

1. Problema com programa em C [RESOLVIDO]

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 08/12/2012 - 18:08h

Boa Tarde, anteriormente já havia postado um programa para descobrir se um número e primo ou não, só que em vba:

Do
If n Mod i = 0 And n <> i Or n = 1 Then
ePrimo = False
End If
i = i + 1
Loop While i < n / 2 And ePrimo = True

If ePrimo = False Then
MsgBox "O numero " & n & " não é primo"
Else
MsgBox "O numero " & n & " é primo"
End If


Estou tentando porta-lo para C, só que estou com vários erros de sintaxe e gostaria de alguns toques por favor:

#include <stdio.h>


int main(void) {

int i, n;
int primo;

i=2;
primo = 1;
printf("Digite um número inteiro\n");
scanf("%d\n", &n);
//Daqui para cima ele funciona normalmente, o problema é abaixo;

do
if n mod i = 0 && n != i || n=1 {
primo = 0 ;
i = i+1;
}
while i < n/2 && primo = 1

if primo = 1{
printf("O número e primo\n");
}
else{
printf("O número não é primo\n");
}
return 0;
}

Ao tentar compilar ele me retorna o seguinte erro:

[marchi@localhost Documents]$ gcc primo.c
primo.c: In function ‘main’:
primo.c:17:6: error: expected ‘(’ before ‘n’
primo.c:30:1: error: expected ‘while’ before ‘}’ token
primo.c:30:1: error: expected declaration or statement at end of input
[marchi@localhost Documents]$


Valeu!


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 08/12/2012 - 19:43h

DMS_ escreveu:


#include <stdio.h>


int main(void) {

int i, n;
int primo;

i=2;
primo = 1;
printf("Digite um número inteiro\n");
scanf("%d\n", &n);
//Daqui para cima ele funciona normalmente, o problema é abaixo;

do
if n mod i = 0 && n != i || n=1 {
primo = 0 ;
i = i+1;
}
while i < n/2 && primo = 1

if primo = 1{
printf("O número e primo\n");
}
else{
printf("O número não é primo\n");
}
return 0;
}

Ao tentar compilar ele me retorna o seguinte erro:

[marchi@localhost Documents]$ gcc primo.c
primo.c: In function ‘main’:
primo.c:17:6: error: expected ‘(’ before ‘n’
primo.c:30:1: error: expected ‘while’ before ‘}’ token
primo.c:30:1: error: expected declaration or statement at end of input
[marchi@localhost Documents]$


Valeu!


O comando if exige que a condição seja colocada entre parênteses. O mesmo vale para while.

O operador para obtenção de resto de divisão é o sinal %.

A comparação de valores é feita com o operador == (= é para atribuir um valor a uma variável).

Sugiro mover o teste de se o valor de n é 1 para fora do loop, e só executar o loop se esse valor for maior do que 2.

O algoritmo está longe de ser eficiente. Procure estudar sobre o crivo de Eratóstenes.

3. Re: Problema com programa em C [RESOLVIDO]

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 08/12/2012 - 18:16h

Na verdade a lógica é:

- Digitar um número;
- Guardar esse número em uma variável;
- Fazer um for(), fazendo mod com esse número por todos os números anteriores a ele;
- Contar quantas vezes o mod foi igual a 0;
- Se a contagem só der 2 então é primo, pois só é divisível por 1 e por ele mesmo.


4. Re: Problema com programa em C [RESOLVIDO]

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 08/12/2012 - 19:35h

Não estou com dúvida sobre a lógica do programa, mas como eu escrevi, estou com dúvidas quanto a sintaxe
minha lógica pode não ser a melhor, mas foi o que consegui fazer, testei os 1000 primeiros números primos, e o código acertou todos, além do mais, caso aderisse a sua lógica, eu estaria apenas "copiando".
Estou com dúvidas apenas quanto a sintaxe.

vlws



5. Re: Problema com programa em C [RESOLVIDO]

Daniel Marchi
DMS_

(usa elementary OS)

Enviado em 08/12/2012 - 19:50h

vlw






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts