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
alguem se manifesta????
- Home
- >
- Fórum
- >
- Profissional
- >
- Programação, Sc...
- >
- Problemas no compilador D...
#include
int soma(int x,int y)
{
return(x+y);
}
int main ()
{
int resultado;
resultado=soma (15,25);
printf("O resultado da soma eh %d",resultado);
return(0);
}
vc esqueceu do int e fikou int main()
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.
bá de novo? =]
e pô tu tá tentando aprender com IDE, vai pro prompt =P
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...
Na hora de criar o projeto, você deve ter colocado o tipo de aplicação como Win32 e não do tipo Console.
Recrie o projeto, definindo a aplicação para "Console Application" e coloque a linguagem como C.
Depois use o mesmo código e veja se funciona.
abraço.
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???
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!
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.
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)
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")
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
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!
tava pensandu aki.. sera por issu qui o kernel do linux eh bem menor do q o do windows???
codigo mal estruturadu ?¿
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
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???