Вы находитесь на странице: 1из 20

linguagem C

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 <stdio.h>

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

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

11-10-2008, 19:10 #2 (permalink)


Desbravador_
Membro Senior pode ser falta de colchetes ?

if (ch == 'x') { break; }

Registrado em: Oct 2007


Mensagens: 166
Reputação: 5
Desbravador_

Ver Perfil Público

Enviar mensagem privada para Desbravador_

Pesquisar mais mensagens de Desbravador_

11-10-2008, 19:23 #3 (permalink)


Helga Gisele
Newbie 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?
Registrado em: Oct 2008 para vcs entenderem a questão era a
Localização: Fortaleza seguinte: escreva um programa q some
Idade: 17 dois numeros e retorne o valor da soma.
Mensagens: 11 pra finalizar eu ñ consigo entender a
Reputação: 0 diferença entre esses dois retornos.

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

11-10-2008, 19:37 #4 (permalink)


MARCZEWSKI
Super Participante Citação:

Postado Originalmente por Helga


Gisele
o problema é q eu tirei isso da minha
apostila e ñ tinha colchetes, mesmo
asssim vou tentar usando colchetes.
Registrado em: Jul 2008 outra coisa vc ou + alguém poderiam
Mensagens: 654 me explicar a diferença do return(0) e
Reputação: 5
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.
Código:
#include <stdio.h>
int main()
{
//int Count;
char ch;
printf(" Digite uma letra-");
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,
Última edição por MARCZEWSKI : 12-
10-2008 às 0:52.

MARCZEWSKI

Ver Perfil Público

Enviar mensagem privada para MARCZEWSKI

Pesquisar mais mensagens de MARCZEWSKI

11-10-2008, 20:23 #5 (permalink)


jose_silva_neto
Ubbergeek Citação:

Postado Originalmente por Helga


Gisele
OI td bom
comecei a pouco tempo linguagem
C e quando compilei este programa
Registrado em: Aug 2002 deu erro antes do printf cm se o
Mensagens: 4.330 break ñ podesse ser usado alguém
Reputação: 35 pode me dizer se é isso mesmo?
(desculpem o texto enorme)
Boa noite

Código:
#include <stdio.h>

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);
}

Para compilar (no Linux):

gcc -Wall -W letra.c -o letra

Para rodar (no Linux):


./letra

Fique com Deus

jose_silva_neto

Ver Perfil Público

Enviar mensagem privada para jose_silva_neto

Pesquisar mais mensagens de jose_silva_neto

12-10-2008, 0:55 #6 (permalink)


MARCZEWSKI
Super Participante Citação:

Postado Originalmente por


jose_silva_neto
Boa noite

Código:
Registrado em: Jul 2008 #include <stdio.h>
Mensagens: 654
Reputação: 5 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);
}

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,

MARCZEWSKI

Ver Perfil Público

Enviar mensagem privada para MARCZEWSKI

Pesquisar mais mensagens de MARCZEWSKI


12-10-2008, 23:47 #7 (permalink)
jose_silva_neto
Ubbergeek Citação:

Postado Originalmente por MARCZEWSKI


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.
Registrado em: Aug 2002 hehehe
Mensagens: 4.330 Boa noite,
Reputação: 35
Note que a menos do ";" que removi e da endentação
(é a BSD/Allman
http://en.wikipedia.org/wiki/Indent_...sd_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

jose_silva_neto

Ver Perfil Público

Enviar mensagem privada para jose_silva_neto

Pesquisar mais mensagens de jose_silva_neto

13-10-2008, 0:15 #8 (permalink)


MARCZEWSKI
Super Participante Citação:

Postado Originalmente por jose_silva_neto


Boa noite,

Note que a menos do ";" que removi e da endentação


(é a BSD/Allman
Registrado em: Jul 2008 http://en.wikipedia.org/wiki/Indent_...sd_in_Emacs.29
Mensagens: 654 , a melhor que existe na minha opinião), não fiz nada
Reputação: 5 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,

MARCZEWSKI

Ver Perfil Público

Enviar mensagem privada para MARCZEWSKI

Pesquisar mais mensagens de MARCZEWSKI

19-10-2008, 17:21 #9 (permalink)


Helga Gisele
Newbie como faço um scanf de um número
binário, tentei %b e %ob

#include <stdio.h>
int main()
{
int n,y,h,i=0;
Registrado em: Oct 2008 char d;
Localização: Fortaleza do
Idade: 17 {
Mensagens: 11
Reputação: 0 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<h)
i=h;
}

printf("\nO maior numero eh:%d",i);


printf("\nDeseja continuar sim <s> ou
nao <n>:\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?
Última edição por DJ. : 29-10-2008
às 0:18. Motivo: unindo

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

19-10-2008, 21:02 #10 (permalink)


MARCZEWSKI
Super Participante Citação:

Postado Originalmente por Helga


Gisele
#include <stdio.h>
int main()
{
int n,y,h,i=0;
char d;
Registrado em: Jul 2008 do
Mensagens: 654 {
Reputação: 5
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<h)
i=h;
}

printf("\nO maior numero eh:%d",i);


printf("\nDeseja continuar sim <s> ou
nao <n>:\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
Código:
printf("\nO maior numero eh:
%d",i);
printf("\nDeseja continuar
sim <s> ou nao <n>:\n");
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,

MARCZEWSKI

Ver Perfil Público

Enviar mensagem privada para MARCZEWSKI

Pesquisar mais mensagens de MARCZEWSKI

25-10-2008, 18:24 #11 (permalink)


Helga Gisele
Newbie valeu
mas, como faço p/ captar um número
binário?

Registrado em: Oct 2008


Localização: Fortaleza
Idade: 17
Mensagens: 11
Reputação: 0

Helga Gisele

Ver Perfil Público


Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

27-10-2008, 22:20 #12 (permalink)


Helga Gisele
Newbie MARCZEWSKI, aprendi outro comando
que apaga o scanf do buffer é o
fflush(stdin);
vc pode me dizer como o outro vai
funcionar?

Registrado em: Oct 2008


Localização: Fortaleza
Idade: 17
Mensagens: 11
Reputação: 0

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

27-10-2008, 23:09 #13 (permalink)


JDX
Super Participante Citação:

Postado Originalmente por Helga Gisele


fflush(stdin);
Registrado em: Mar 2007 Não! Isso é gambiarra, se você olhar no padrão da
Mensagens: 521 linguagem C, verá que essa função é usada para limpar
Reputação: 6 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:
Código PHP:
int ch;
while ((ch=getchar()) != EOF && ch != '\n' );
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 11 (x86_64)
Não respondo dúvidas técnicas por MP.

JDX

Ver Perfil Público

Enviar mensagem privada para JDX

Pesquisar mais mensagens de JDX

28-10-2008, 20:11 #14 (permalink)


Helga Gisele
Newbie Nossa eu ñ sabia valeu JDX, olha eu aprendi com
meu prof.
valeu msm.

Registrado em: Oct 2008


Localização: Fortaleza
Idade: 17
Mensagens: 11
Reputação: 0

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

30-10-2008, 16:38 #15 (permalink)


Helga Gisele
Newbie #include <stdio.h>
#include <stdlib.h>
int main()
{

int y=0,x=0;
float h=0,z=0,nota[10][3];
Registrado em: Oct 2008 for (x=0;x<10;++x)
Localização: Fortaleza {
Idade: 17 for (y=0;y<3;++y)
Mensagens: 11 {
Reputação: 0 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?

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

30-10-2008, 17:19 #16 (permalink)


jose_silva_neto
Ubbergeek Boa tarde,

Código:
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)


{

Registrado em: Aug 2002 int y = 0,x = 0;


Mensagens: 4.330 float h = 0,z,nota[10][3];
Reputação: 35
for (x = 0; x < 10; ++x)
{
z = 0; /* É preciso zerar
essa variável, pois ela armazena
a soma das notas para cada aluno
*/
for (y = 0;y < 3;++y)
{
printf("\nEntre com a
%d.o nota do %d.o
aluno:",y+1,x+1);
scanf("%f",&nota[x]
[y]); /* A matriz contem as
notas para cada aluno */
z+= nota[x][y]; /*
É o mesmo que z = z + nota[x][y]
*/
}

z /= 3; /* É o mesmo que
z = z / 3 */
h += z; /* É o mesmo que
h = h + z */
}

h/= 10; /* Média final */

printf("\n A media e:%.2f


\n",h);

//getch();

return(0);
}

Para compilar

gcc -W -Wall media.c -o media

Para rodar
./media

Fique com Deus


jose_silva_neto

Ver Perfil Público

Enviar mensagem privada para jose_silva_neto

Pesquisar mais mensagens de jose_silva_neto

30-10-2008, 20:20 #17 (permalink)


Helga Gisele
Newbie Obrigada, por me ajudar

Registrado em: Oct 2008


Localização: Fortaleza
Idade: 17
Mensagens: 11
Reputação: 0

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

31-10-2008, 15:16 #18 (permalink)


Helga Gisele
Newbie Código:
#include <stdio.h>
#include <stdlib.h>

int main()
{
float t=0,a=0,m=0;
do
Registrado em: Oct 2008 {
Localização: Fortaleza printf("Digite a nota do
Idade: 17 trabalho:");
Mensagens: 11 scanf("%.2f",&t);
Reputação: 0 }while((t<0)||(t>10));
do
{
printf("Digite a nota da
prova:");
scanf("%.2f",&a);
}while((a<0)||(a>10));
t=(25/100)*t;
a=(75/100)*a;
m=a+t;
if(m>=7)
printf("\nPassaste com %.2f
nota",m);
else
printf("\nPrecisa de exame");
getch();
return 0;
}

Oi pessoal
O q eu fiz de errado dessa vez
ele só ta pegando a primeira nota e
executando o resto.
por favor, alguém me ajuda!
O enunciado da questão é esse:
Imagine que em dada disciplina, a nota
final é obtida da seguinte forma: o
trabalho tem peso de 25% e a prova tem
peso 75%. Faça um programa que calcula
a nota final da disciplina. Se a nota final
for inferio a 7 , o programa deve imprimir
a mensagem:"Precisa de exame". Caso
contrário, imprime a mensagem:"Passaste
com x nota".Desculpem tina esquecido de
colocar o enunciado da questão.
Última edição por Helga Gisele : 31-10-
2008 às 16:57.

Helga Gisele

Ver Perfil Público

Enviar mensagem privada para Helga Gisele

Pesquisar mais mensagens de Helga Gisele

31-10-2008, 15:50 #19 (permalink)


Core_Dump
GeeK Citação:

Postado Originalmente por Helga


Gisele
#include <stdio.h>
#include <stdlib.h>

Registrado em: Nov 2007 int main()


Mensagens: 2.173 {
Reputação: 22 float t=0,a=0,m=0;
do
{
printf("Digite a nota do trabalho:");
scanf("%.2f",&t);
}while((t<0)||(t>10));
do
{
printf("Digite a nota da prova:");
scanf("%.2f",&a);
}while((a<0)||(a>10));
t=(25/100)*t;
a=(75/100)*a;
m=a+t;
if(m>=7)
printf("\nPassaste com %.2f nota",m);
else
printf("\nPrecisa de exame");
getch();
return 0;
}
Oi pessoal
O q eu fiz de errado dessa vez
ele só ta pegando a primeira nota e
executando o resto.
por favor, alguém me ajuda!
Helga,
Para alguns o scanf e apenas um recurso
experimental, seu uso em demasia nos
programas e ma pratica de programacao.
Ve se o codigo abaixo lhe serve (sou
iniciante, como voce).
Dica : coloque o codigo entre TAGs
CODE antes de postar, fica melhor para
visualizar. No modo avancado clica no
simbolo # que aparecem as tags cole o
codigo no meio delas.

Código:
#include <stdio.h>
#include <stdlib.h>

int main()
{
double s;
char *t;
float a=0,m=0;
int i=0;
printf("Digite a nota do
trabalho:\n");
do{
t = getchar();
++i;
} while (i < 1 );
printf("Digite a nota da
prova:\n");
scanf("%f",&a);
s = atof (&t);
s=0.25*s;
a=0.75*a;
m=a+s;
if(m>=7){
printf("\nPassaste com
%.2f nota",m);
} else {
printf("\nPrecisa de
exame");
return 0;
}
}

__________________
ASUS M3A78-EM, 9600GSO, P-X3
8450, 2GB, HD 250GB, Slackware 12.1,
KDE 3.5.1, kernel 2.6.30.5
Linux-user: #489296
Conheça os 7 pecados do Windows
Última edição por Core_Dump : 31-10-
2008 às 16:36.

Core_Dump

Ver Perfil Público

Enviar mensagem privada para Core_Dump

Pesquisar mais mensagens de Core_Dump

31-10-2008, 19:23 #20 (permalink)


Helga Gisele
Newbie valeu pela dica, tentarei melhorar o uso
dos comandos.

Registrado em: Oct 2008


Localização: Fortaleza
Idade: 17
Mensagens: 11
Reputação: 0