Logo Hardware.com.br
Helga Gisele
Helga Gisele Novo Membro Registrado
17 Mensagens 0 Curtidas

linguagem C

#1 Por Helga Gisele 11/10/2008 - 19:03
bom_trabalho.gif OI td bom
comecei a pouco tempo linguagem C e quando compilei este programa deu erro antes do printf cm se o break ñ podesse ser usado alguém pode me dizer se é isso mesmo?(desculpem o texto enorme)


#include

int main()
{
int Count;
char ch;
printf(" Digite uma letra-");
for (Count=1;;Count++);
{
scanf("%c",&ch);
if (ch == 'x') break;
printf("\nLetra:%c\n",ch);
scanf("%c",&ch);
}

return 0;
}
Helga Gisele
Helga Gisele Novo Membro Registrado
17 Mensagens 0 Curtidas
#3 Por Helga Gisele
11/10/2008 - 19:23
o problema é q eu tirei isso da minha apostila e ñ tinha colchetes, mesmo asssim vou tentar usando colchetes.
outra coisa vc ou + alguém poderiam me explicar a diferença do return(0) e do return(x*y), retornando com o valor de uma equação qualquer?
para vcs entenderem a questão era a seguinte: escreva um programa q some dois numeros e retorne o valor da soma.
pra finalizar eu ñ consigo entender a diferença entre esses dois retornos.
arkRed">Não custa nada tentar e ver o que acontece
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#4 Por MARCZEWSKI
11/10/2008 - 19:37
Helga Gisele disse:
o problema é q eu tirei isso da minha apostila e ñ tinha colchetes, mesmo asssim vou tentar usando colchetes.
outra coisa vc ou + alguém poderiam me explicar a diferença do return(0) e do return(x*y), retornando com o valor de uma equação qualquer?
para vcs entenderem a questão era a seguinte: escreva um programa q some dois numeros e retorne o valor da soma.
pra finalizar eu ñ consigo entender a diferença entre esses dois retornos.


#include <stdio.h>
int main()
{
//int Count;
char ch;
printf(" Digite uma letra-&quot;
do
{
scanf("%c",&ch);
if (ch == 'x') break;
printf("\nLetra:%c\n",ch);
//scanf("%c",&ch);
}while (ch!='x');

return 0;
}
assim funciona!!
nao sei se é o mesmo caso do C, mas no pascal vc nao pode quebrar a execução do FOR(pelo erro q deu no C, acho que isso tambem serve pra ele), as vezes isso ate funciona no pascal.
conclusao: no C vc nao pode quebrar a execuçao de um FOR.(na mensagem de erro, diz que o break so é usado em loop ou switch)(q eu saiba for é um loop).

no C, tudo é funcao e toda função retorna um valor(exceto void em alguns casos). esse valor retornado pode ser direcionado a alguma variavel(ou coisa do genero) ou nao. na maioria das vezes quando se coloca return(0) é pq se quer usar a funçao como um procedimento. Nao sei muito bem como te explicar, mas o return ele retorna um valor que pode ser usado ou nao em outro trecho do codigo.

se nao ficou claro, desculpas, mas nao sei muito bem como te explicar digitando.

espero ter ajudado!!
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#5 Por jose_silva_n...
11/10/2008 - 20:23
Helga Gisele disse:
bom_trabalho.gif OI td bom
comecei a pouco tempo linguagem C e quando compilei este programa deu erro antes do printf cm se o break ñ podesse ser usado alguém pode me dizer se é isso mesmo?(desculpem o texto enorme)


Boa noite


#include <stdio.h>

int main()
{
int Count;
char ch;
printf(" Digite uma letra-&quot;

for (Count=1;;Count++)
{
scanf("%c",&ch);
if (ch == 'x')
break;
printf("\nLetra:%c\n",ch);
scanf("%c",&ch);
}

return(0);
}
Para compilar (no Linux):

gcc -Wall -W letra.c -o letra

Para rodar (no Linux):
./letra


Fique com Deus
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#6 Por MARCZEWSKI
12/10/2008 - 00:55
jose_silva_neto disse:
Boa noite


#include <stdio.h>

int main()
{
int Count;
char ch;
printf(" Digite uma letra-&quot;

for (Count=1;;Count++)
{
scanf("%c",&ch);
if (ch == 'x')
break;
printf("\nLetra:%c\n",ch);
scanf("%c",&ch);
}

return(0);
}
Para compilar (no Linux):

gcc -Wall -W letra.c -o letra

Para rodar (no Linux):
./letra


Fique com Deus

Essa é muito boa oh!!! hehehehe
eu tentei de todo jeito e nao estava dando certo, quando mudei para o do/while deu certo. Olhando o seu codigo, agora q percebi o ' ; ' no final do FOR. hehehe
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#7 Por jose_silva_n...
12/10/2008 - 23:47
MARCZEWSKI disse:
Essa é muito boa oh!!! hehehehe
eu tentei de todo jeito e nao estava dando certo, quando mudei para o do/while deu certo. Olhando o seu codigo, agora q percebi o ' ; ' no final do FOR. hehehe


Boa noite,

Note que a menos do ";" que removi e da endentação (é a BSD/Allman http://en.wikipedia.org/wiki/Indent_style#Allman_style_.28bsd_in_Emacs.29 , a melhor que existe na minha opinião), não fiz nada de novo no código da Helga .


Fique com Deus
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#8 Por MARCZEWSKI
13/10/2008 - 00:15
jose_silva_neto disse:
Boa noite,

Note que a menos do ";" que removi e da endentação (é a BSD/Allman http://en.wikipedia.org/wiki/Indent_style#Allman_style_.28bsd_in_Emacs.29 , a melhor que existe na minha opinião), não fiz nada de novo no código da Helga .


Fique com Deus

percebi isso, ele executa o FOR(executa como se fosse para segurar a execuçao das linhas abaixo), quando vai executar o BREAK(o break nao esta dentro do for) ele da o erro q o break so é utilizado dentro de loop(quando eu vi o erro nao entendi o pq do erro, ja q o FOR tambem é um loop.). mas como falei so pascal essa pratica dentro de um FOR nao é aconselhada(achei que no C tambem era assim), pois em alguns momentos ele nao vai se comportar cmo o esperado(podendo perder a sequencia de execuçao).

esse problema serviu para mostrar que devemos ter mais atençao na hora de analisar um codigo.

vlw
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
Helga Gisele
Helga Gisele Novo Membro Registrado
17 Mensagens 0 Curtidas
#9 Por Helga Gisele
19/10/2008 - 17:21
como faço um scanf de um número binário, tentei %b e %ob

#include
int main()
{
int n,y,h,i=0;
char d;
do
{

printf ("Digite o tamanho da sequencia:");
scanf ("%d",&y);

for(n=1;n<=y;n++)
{
printf("Digite o %d numero:",n);
scanf("%d",&h);
if(i i=h;
}

printf("\nO maior numero eh:%d",i);
printf("\nDeseja continuar sim ou nao :\n");
scanf("%c",&d);
getch();

} while (d!='n');
return 0;
}

nesse programa ele dá o maior número de uma sequência, a qual vc diz o tamanho,
no fim era para perguntar se vc gostaria de continuar se sim continuaria, se ñ fechava a tela, só q o programa só continua e ñ fecha com o ñ. O q fiz de errado?
arkRed">Não custa nada tentar e ver o que acontece
MARCZEWSKI
MARCZEWSKI Super Participante Registrado
655 Mensagens 17 Curtidas
#10 Por MARCZEWSKI
19/10/2008 - 21:02
Helga Gisele disse:
#include
int main()
{
int n,y,h,i=0;
char d;
do
{

printf ("Digite o tamanho da sequencia:");
scanf ("%d",&y);

for(n=1;n<=y;n++)
{
printf("Digite o %d numero:",n);
scanf("%d",&h);
if(i i=h;
}

printf("\nO maior numero eh:%d",i);
printf("\nDeseja continuar sim ou nao :\n");
scanf("%c",&d);
getch();

} while (d!='n');
return 0;
}

nesse programa ele dá o maior número de uma sequência, a qual vc diz o tamanho,
no fim era para perguntar se vc gostaria de continuar se sim continuaria, se ñ fechava a tela, só q o programa só continua e ñ fecha com o ñ. O q fiz de errado?

mude para

printf("\nO maior numero eh:%d",i);
printf("\nDeseja continuar sim <s> ou nao <n>:\n&quot;
scanf("%.c%c",&d);


quando vc ler um inteiro, o enter da leitura fica no buffer. entao quando chega na linha scanf("%c",&d); ele "limpa" o buffer e nao ler(quando a tela vc digita o N ou o S, na verdade vc esta no getch() e nao do scanf).
esse %.c "limpara" esse buffer do teclado.

espero ter ajudado!!!
Estarei um pouco ausente do forum por um tempo!!!

Caso seja importante, mande MP(duvidas somente no forum)

grato,
JDX
JDX Super Participante Registrado
515 Mensagens 12 Curtidas
#13 Por JDX
27/10/2008 - 23:09
Helga Gisele disse:

fflush(stdin);


Não! Isso é gambiarra, se você olhar no padrão da linguagem C, verá que essa função é usada para limpar steams de saída e se você colocar um de entrada (stdin, no caso) a ação é indefinida (não é obrigatório o funcionamento, depende da implementação).
Nesse caso eu uso:
[php]int ch;
while ((ch=getchar()) != EOF && ch != '\n' );[/php]O único problema dessa abordagem é que se o buffer estiver vazio, você terá que apertar enter, mas você pode resolver isso com um teste usando o tamanho da string.
Fedora 12(x86_64)
Helga Gisele
Helga Gisele Novo Membro Registrado
17 Mensagens 0 Curtidas
#15 Por Helga Gisele
30/10/2008 - 16:38
#include
#include

int main()
{

int y=0,x=0;
float h=0,z=0,nota[10][3];
for (x=0;x<10;++x)
{
for (y=0;y<3;++y)
{
printf("\nEntre com a %d.o nota do %d.o aluno:",x+1,y+1);
scanf("%f",&z);
z=z+nota[x][y];
}
z=z/3;
h=h+z;

}
h=h/10;
printf("\n A media e:%.2f",h);
getch();
return 0;
}
Pessoal alguém pode dar uma olhadinha nesse programa.
ele pede a media de uma classe de 10 alunos sendo que cada aluno tem 3 notas
então ele faz a media das medias. Só q eu tô com um problema na parte em negrito no lugar dele somar as medias de cada aluno ele faz a média de cada um e divide por 10. Alguém poderia me dizer o q fiz de errado?
arkRed">Não custa nada tentar e ver o que acontece
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal