Logo Hardware.com.br
Eicar
Eicar Membro Senior Registrado
209 Mensagens 4 Curtidas

Problemas no compilador Dev-C++

#1 Por Eicar 23/08/2007 - 17:31
Fala pessoal...

to aprendendo C agora, e to usandu o compilador Dev-C++ para compilar meus programas em C. Uso ele ja ha um mes, mas de hoje pra k ele começou a dar um problema em todo programa que faço...

Ex.: Programa de soma dois numeros...



#include

int soma(int x,int y)
{
return(x+y);
}

main ()
{
int resultado;
resultado=soma (15,25);
printf("O resultado da soma eh %d",resultado);
return(0);
}


quando vou compilalo aparece um erro no compilador:

[Linker error] undefined reference to [EMAIL="'WinMain@16'"]'WinMain@16'[/EMAIL]
Id returned 1 exit status

fiquei_triste.png

alguem se manifesta????
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Responder
Eicar
Eicar Membro Senior Registrado
209 Mensagens 4 Curtidas
#5 Por Eicar
24/08/2007 - 11:17
msm c/ int num tava funcionandu... grr

tive que desinstalar ele e instalalo denovo!

axu q era problema num compilador msm...

philix disse:
Velho, tu é lerdo demais, teve um tópico que a gente falou mais de mil vezes que tem que botar um int ou void(não ANSI) na função main!

O código tá beleza, mas tu esquece do tipo de dado da função main.


to trabalhandu c/ padrão ANSII...
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar
Eicar Membro Senior Registrado
209 Mensagens 4 Curtidas
#7 Por Eicar
25/08/2007 - 11:34
mais uma perguntinha

eh o "system(PAUSE);" o comandu praparar e naum fechar a tela do programa certu (me corrijam se eu estiver erradu)... naum funciono aki???
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
intruso
intruso Tô em todas Registrado
1.8K Mensagens 41 Curtidas
#9 Por intruso
27/08/2007 - 11:29
david.rj.2k disse:
se não estou enganado, é necessário vc add a lib do windows.h ou talvez a iostream.h...
e o certo é SYSTEM("pause");
mesmo assim, se não der certo, coloka um while no final, e espere por uma tecla qlqr

FLWS!


nenhuma das duas, para usar a função system você deve fazer referencia ao cabeçalho "stdlib.h", veja a referencia:

http://www.cppreference.com/stdother/system.html

use esse site para consultar a biblioteca padrão para o ANSI C.

abraço.
Eicar
Eicar Membro Senior Registrado
209 Mensagens 4 Curtidas
#10 Por Eicar
27/08/2007 - 12:58
Fala pessoal...

to c/ uma duvida aki... estou escrevendu um programa qui vai mostrar a string digitada, trocar seus caracteres 'a' por 'b', mostrar a string trocada e mostrar qts caracteres foram modificados!

segue o codigo...

#include
int main()
{
printf("Programa basico, que le sua string, troca os caracteres 'a' por 'b', fornece a string modificada e o numero de caracteres trocados!");
char string[100];
int x, cont;
printf("\n\nEntre com uma string... ");
gets (string);
printf("String digitada:\n%s",string);
cont=0;
for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a')
cont=cont+1;
}
printf("\n\nQuantidade de caracteres 'a' na frase= %d",cont);
for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a')
string[x]='b';
}
printf("\n\nString trocada os caracters 'a' por 'b'=%s",string);
int troca;
if(string[x]=='b')
troca=troca+1;
printf("\n\nO numero de caracteres trocados eh: %d",troca);
while(1);
return(0);
}

ele da tudu certinhu, soh qui na hora de mostrar os caracteres modificados, ele fornece um numero q num tem nada haver c/ a soma de caracteres... modificados!

por favor, me digam ond esta o erro! (PS.: Estou usandu o padrão ANSII)
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
jofrelscalvet
jofrelscalve... Veterano Registrado
1.3K Mensagens 51 Curtidas
#11 Por jofrelscalve...
27/08/2007 - 18:22
Nos compiladores que eu me acostumei, declarar uma variavel no meio do código era inválido (como a sua troca).
A variavel troca não foi inicializada. Ela começa valendo o que o programa passado deixou naquela posição de memória e a esse valor você soma o numero de 'b's da string. Que aliás pode ser diferente do número de caracteres trocados se a string inicial tinha algum 'b'
while(1) é uma forma especialmente ruim de pausar o programa após sua execução, uma vez que deve continuar consumindo processamento (não me espantaria se você usasse 100% do processador num programa que já "acabou")
Melhore o futuro do fórum: Diga se a dica funcionou ou conte-nos como conseguiu resolver a sua dúvida!
Se eu errar ou for pouco claro, reclame! Quando possivel eu tentarei melhorar.
philix
philix Super Participante Registrado
946 Mensagens 14 Curtidas
#12 Por philix
27/08/2007 - 18:49
Use as tags code para seu código:

assim:

[php]
#include

int main()
{
printf("Programa basico, que le sua string, troca os caracteres 'a' por 'b', fornece a string modificada e o numero de caracteres trocados!");

char string[100];
int x, cont;

printf("\n\nEntre com uma string... ");
gets (string);
printf("String digitada:\n%s",string);

cont=0;

for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a')
cont=cont+1;
}

printf("\n\nQuantidade de caracteres 'a' na frase= %d",cont);

for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a')
string[x]='b';
}

printf("\n\nString trocada os caracters 'a' por 'b'=%s",string);

int troca;

if(string[x]=='b')
troca=troca+1;

printf("\n\nO numero de caracteres trocados eh: %d",troca);
while(1);
return(0);
}

[/php]

Como eu faria com 1 único loop:

[php]
#include

int main()
{
printf("Programa basico, que le sua string, troca os caracteres 'a' por 'b', fornece a string modificada e o numero de caracteres trocados!");

char string[100];
int x, cont, troca;

printf("\n\nEntre com uma string... ");
gets (string);
printf("String digitada:\n%s",string);

cont=0;

for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a') {
cont=cont+1;
string[x]='b';
troca=troca+1;
}
}

printf("\n\nQuantidade de caracteres 'a' na frase= %d",cont);

printf("\n\nString trocada os caracters 'a' por 'b'=%s",string);

printf("\n\nO numero de caracteres trocados eh: %d",troca);

while(1);
return(0);
}
[/php]

Por que vc usou 3 loops idênticos?

O código que eu fiz é mais que três vezes mais rápido que o seu, pois executa um terço dos ifs que o seu executa e menos incrementos nas variáveis de controle dos loops.

ele da tudu certinhu, soh qui na hora de mostrar os caracteres modificados, ele fornece um numero q num tem nada haver c/ a soma de caracteres... modificados!


Isso ocorre pq vc não estava contando quantos 'a' foram trocados, mas sim qunatos 'b' existiam na string após as trocas(o que é diferente, não acha?)

flws
"A Matemática é a ginástica mental necessária na tentativa da compreenssão do universo" Linus Torvalds
Eicar
Eicar Membro Senior Registrado
209 Mensagens 4 Curtidas
#13 Por Eicar
31/08/2007 - 11:26
philix disse:
Use as tags code para seu código:

assim:

[php]
#include

int main()
{
printf("Programa basico, que le sua string, troca os caracteres 'a' por 'b', fornece a string modificada e o numero de caracteres trocados!");

char string[100];
int x, cont;

printf("\n\nEntre com uma string... ");
gets (string);
printf("String digitada:\n%s",string);

cont=0;

for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a')
cont=cont+1;
}

printf("\n\nQuantidade de caracteres 'a' na frase= %d",cont);

for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a')
string[x]='b';
}

printf("\n\nString trocada os caracters 'a' por 'b'=%s",string);

int troca;

if(string[x]=='b')
troca=troca+1;

printf("\n\nO numero de caracteres trocados eh: %d",troca);
while(1);
return(0);
}

[/php]

Como eu faria com 1 único loop:

[php]
#include

int main()
{
printf("Programa basico, que le sua string, troca os caracteres 'a' por 'b', fornece a string modificada e o numero de caracteres trocados!");

char string[100];
int x, cont, troca;

printf("\n\nEntre com uma string... ");
gets (string);
printf("String digitada:\n%s",string);

cont=0;

for(x=0;string[x]!='\0';x++)
{
if(string[x]=='a') {
cont=cont+1;
string[x]='b';
troca=troca+1;
}
}

printf("\n\nQuantidade de caracteres 'a' na frase= %d",cont);

printf("\n\nString trocada os caracters 'a' por 'b'=%s",string);

printf("\n\nO numero de caracteres trocados eh: %d",troca);

while(1);
return(0);
}
[/php]

Por que vc usou 3 loops idênticos?

O código que eu fiz é mais que três vezes mais rápido que o seu, pois executa um terço dos ifs que o seu executa e menos incrementos nas variáveis de controle dos loops.



Isso ocorre pq vc não estava contando quantos 'a' foram trocados, mas sim qunatos 'b' existiam na string após as trocas(o que é diferente, não acha?)

flws


podiscre philix... issu se chama retundância! cap_feceiro.png:

tava pensandu aki.. sera por issu qui o kernel do linux eh bem menor do q o do windows???

codigo mal estruturadu ?¿
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
philix
philix Super Participante Registrado
946 Mensagens 14 Curtidas
#14 Por philix
31/08/2007 - 21:53
podiscre philix... issu se chama retundância!

tava pensandu aki.. sera por issu qui o kernel do linux eh bem menor do q o do windows???

codigo mal estruturadu ?¿


Para programar em C tem que ser detalhista...
Seu código estava extremamente mau feito :-)
O meu código é a versão suportável para quem o lê(programador cansado) e executa(computador cheio de outras coisa para fazer), mas ainda tem um monte de coisa que poderia ser melhorada.

tava pensandu aki.. sera por issu qui o kernel do linux eh bem menor do q o do windows???


Sim e também tem:
- filosofia KISS no desenvolvimento do Linux
- o cara que faz ele (Linus) se empolga em ver o código organizado
(tem até papel de parede que são trechos do código do kernel)
- o cara que faz o kernel do Windows faz o kernel para ganhar dinheiro(nada contra, mas quando o cara faz somente pq gosta aumenta muito a qualidade não acha?)
- o cara que faz o kernel do windows não precisa se preocupar em fazer um código que o mundo todo entenda(basta que os empregados da Microsoft entendam)

Vc já viu algum arquivo do kernel do Linux? os caras são MUITO organizados, o código no sentido de formatação é impecável, não deve ser diferente nas funcionalidades

Pense assim:

Sempre tem um jeito de fazer o código mais otimizado, se vc não pretende fazer códigos otimizados esqueça programação em C, eu ainda tenho que aprender mais sobre alocação de memória...

flws
"A Matemática é a ginástica mental necessária na tentativa da compreenssão do universo" Linus Torvalds
Eicar
Eicar Membro Senior Registrado
209 Mensagens 4 Curtidas
#15 Por Eicar
12/09/2007 - 09:38
Estou c/ outra duvida...

Estou aprendendo sobre o operador ?

segue o codigo

[php]

#include
int main()
{
int index=0, contador;
char letras[5]="Joao";
for(contador=0;contador<1000;contador++)
{
printf("\n%c",letras[index]);
index="(index"4)?index="0:"++index;
}
while(1);
return(0);
}

[/php]

copiei exatamente do curso, soh acrescentei o while e o return... e naum esta funcionandu nu meu compilador???
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Responder Tópico
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal