Ir ao conteúdo
  • Cadastre-se
ifguiferreira

Ajuda para traduzir código para C

Recommended Posts

Olá amigos, estou com dificuldades para traduzir esse algoritmo para C:

var
d,d1:real
n50,n10,n5,n2:real
l1,l2,l3,l4:numerico
not50,not10,not5,not2:caracter
inicio

not50<- "Notas"
not10<- "Notas"
not5<- "Notas"
not2<- "Notas"
l1<-0
l2<-0
l3<-0
l4<-0
leia(d)
d1<-d

se(50<=d) então
n50<- int(d/50)
d<- d-(n50*50)
l1<-1
se (n50=1)então
not50 <- "Nota"
fimse
fimse

se( 10<=d)então
n10<- int(d/10)
d<- d-n10*10
l2<-1
se (n10=1)então
not10 <- "Nota"
fimse
fimse

se(5<=d)então
n5<- int(d/5)
d<- d-n5*5
l3<-1
se (n5=1)então
not5 <- "Nota"
fimse
fimse

se (2<=d)então
n2<- int(d/2)
d<- d-n2*2
l4<-1
se (n2=1)então
not2 <- "Nota"
fimse
fimse

limpatela
escreval("R$ ",d1)
se (l1=1)então
escreval(n50," ",not50," de R$50,00")
fimse
se (l2=1)então
escreval(n10," ",not10," de R$10,00")
fimse
se (l3=1)então
escreval(n5," ",not5," de R$5,00")
fimse
se (l4=1)então
escreval(n2," ",not2," de R$2,00")
fimse
escreval("Valor líquido restante é de: ",d)

Obrigado pela ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá xará,

tirei um tempo e traduzi seu código, porém, houve alguns problemas na hora de imprimir na tela que não detectei, acho que é porque estou meio cansado...aeiuhaeiuahe... mas fiz 98% do seu código funcionar, basta corrigir o erro na hora da impressão, segue:

/*
* Traduzido do Visualg para C
* By Guilherme Valdevieso
*/


#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
double d, d1;
double n50, n10, n5, n2;
int l1, l2, l3, l4;
char not50[5] = {"Notas"};
char not10[5] = {"Notas"};
char not5[5] = {"Notas"};
char not2[5] = {"Notas"};

l1 = 0;
l2 = 0;
l3 = 0;
l4 = 0;

scanf("%lf",&d);
d1 = d;

if (50 <= d){
n50 = (int)d/50;
d = d - (n50 * 50);
l1 = 1;
if (n50 == 1)
strcpy(not50,"Nota ");
}

if (10 >= d){
n10 = (int)d/10;
d = d - (n10 * 10);
l2 = 1;
if(n10 == 1)
strcpy(not10,"Nota ");
}

if (5 <= d){
n5 = (int)d/5;
d = d - (n5 * 5);
l3 = 1;
if(n5 == 1)
strcpy(not5,"Nota ");
}

if (2 <= d){
n2 = (int)d/2;
d = d - (n2 * 2);
l4 = 1;
if(n2 == 1)
strcpy(not2,"Nota ");
}

#ifdef WIN32
system ("cls");
#endif

printf("R$ %0.2f\n",d1);

if (l1 == 1)
printf("\n%d %s de R$ 50,00\n",(int)n50, not50);
if (l2 == 1)
printf("\n%d %s de R$ 10,00\n",(int)n10, not10);
if (l3 == 1)
printf("\n%d %s de R$ 5,00\n",(int)n5, not5);
if (l4 == 1)
printf("\n%d %s de R$ 2,00\n",(int)n2, not2);

printf("\nValor líquido restante é de: %0.2f\n", d);


return 0;
}

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara muito obrigado pela atenção! Testei aqui mas não copilou justamente no problema que estava enfrentando quando estava tentando programar em C. O problema está em atribuir uma palavra em uma variável. No visualg funciona só não sei como fazer isso no C. Segue o trecho que deu errado aqui:

	char not50[5] = {"Notas"};
char not10[5] = {"Notas"};
char not5[5] = {"Notas"};
char not2[5] = {"Notas"};

Compartilhar este post


Link para o post
Compartilhar em outros sites


char not50[5] = {"Notas"};
char not10[5] = {"Notas"};
char not5[5] = {"Notas"};
char not2[5] = {"Notas"};

Basta fazer assim:


char not50[] = {"Notas"};
char not10[] = {"Notas"};
char not5[] = {"Notas"};
char not2[] = {"Notas"};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah, show de bola consegui resolver os problemas aqui.

tive que fazer a alteração que o KID me passou e ainda tirar o codigo:

 system ("cls");

E acrescentei o

#include <windows.h>

e ainda coloquei no final um

system("pause");

para resolver o problema do programa fechar rapidamente.

Assim rodou certinho. Valeu guivaldevieso e kid gumer pela ajuda!!!

Segue o codigo funcionando:

#include <stdio.h>
#include <string.h>
#include <windows.h>

int main(int argc, char **argv)
{
double d, d1;
double n50, n10, n5, n2;
int l1, l2, l3, l4;
char not50[] = {"Notas"};
char not10[] = {"Notas"};
char not5[] = {"Notas"};
char not2[] = {"Notas"};

l1 = 0;
l2 = 0;
l3 = 0;
l4 = 0;

scanf("%lf",&d);
d1 = d;

if (50 <= d){
n50 = (int)d/50;
d = d - (n50 * 50);
l1 = 1;
if (n50 == 1)
strcpy(not50,"Nota ");
}

if (10 >= d){
n10 = (int)d/10;
d = d - (n10 * 10);
l2 = 1;
if(n10 == 1)
strcpy(not10,"Nota ");
}

if (5 <= d){
n5 = (int)d/5;
d = d - (n5 * 5);
l3 = 1;
if(n5 == 1)
strcpy(not5,"Nota ");
}

if (2 <= d){
n2 = (int)d/2;
d = d - (n2 * 2);
l4 = 1;
if(n2 == 1)
strcpy(not2,"Nota ");
}

#ifdef WIN32

#endif

printf("R$ %0.2f\n",d1);

if (l1 == 1)
printf("\n%d %s de R$ 50,00\n",(int)n50, not50);
if (l2 == 1)
printf("\n%d %s de R$ 10,00\n",(int)n10, not10);
if (l3 == 1)
printf("\n%d %s de R$ 5,00\n",(int)n5, not5);
if (l4 == 1)
printf("\n%d %s de R$ 2,00\n",(int)n2, not2);

printf("\nValor líquido restante é de: %0.2f\n", d);

system("pause");
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, acentuação é realmente um grande problema em C, porém, como tudo é possível nesta linguagem você pode recorrer a tabela ASCII, utilizando no lugar do próprio caractere o número ASCII deste, veja:

Valores dos caracteres mais comuns:


À = \667 Ù = \753 õ = \744
à = \707 Û = \752 ô = \223
 = \666 á = \240 ú = \243
É = \220 à = \205 ù = \227
È = \724 ã = \706 û = \226
Ê = \722 â = \203 Ç = \200
Í = \726 é = \202 ç = \207
Ì = \736 è = \212
Î = \214 ê = \210
Ó = \740 í = \641
Ò = \743 ì = \736
Ô = \742 î = \727
Õ = \745 ó = \242
Á = \665 Ú = \751 ò = \225

Como se usa?

printf("P\706o com mortadela!\n");

Programa que lista todos os caracteres especias:


#include <stdio.h>
main() {
printf("As letras acentuadas s\706o:\n");
printf("\00, \01, \02, \03, \04, \05, \06, \07 linha 1\n");
printf("\10, \11, \12, \13, \14, \15, \16, \17 linha 2\n");
printf("\20, \21, \22, \23, \24, \25, \26, \27 linha 3\n");
printf("\30, \31, \32, \33, \34, \35, \36, \37 linha 4\n");
printf("\40, \41, \42, \43, \14, \45, \46, \47 linha 5\n");
printf("\50, \51, \52, \53, \54, \55, \56, \57 linha 6\n");
printf("\60, \61, \62, \63, \64, \65, \66, \67 linha 7\n");
printf("\70, \71, \72, \73, \74, \75, \76, \77 linha 8\n");
printf("\100, \101, \102, \103, \104, \105, \106, \107 linha 9\n");
printf("\110, \111, \112, \113, \114, \115, \116, \117 linha 10\n");
printf("\120, \121, \122, \123, \124, \125, \126, \127 linha 11\n");
printf("\130, \131, \132, \133, \134, \135, \136, \137 linha 12\n");
printf("\140, \141, \142, \143, \144, \145, \146, \147 linha 13\n");
printf("\150, \151, \152, \153, \154, \155, \156, \157 linha 14\n");
printf("\160, \161, \162, \163, \164, \165, \166, \167 linha 15\n");
printf("\170, \171, \172, \173, \174, \175, \176, \177 linha 16\n");
printf("\200, \201, \202, \203, \204, \205, \206, \207 linha 17\n");
printf("\210, \211, \212, \213, \214, \215, \216, \217 linha 18\n");
printf("\220, \221, \222, \223, \224, \225, \226, \227 linha 19\n");
printf("\230, \231, \232, \233, \234, \235, \236, \237 linha 20\n");
printf("\240, \241, \242, \243, \244, \245, \246, \247 linha 21\n");
printf("\250, \251, \252, \253, \254, \255, \256, \257 linha 22\n");
printf("\260, \261, \262, \263, \264, \265, \266, \267 linha 23\n");
printf("\270, \271, \272, \273, \274, \275, \276, \277 linha 24\n");
printf("\300, \301, \302, \303, \304, \305, \306, \307 linha 25\n");
printf("\310, \311, \312, \313, \314, \315, \316, \317 linha 26\n");
printf("\320, \321, \322, \323, \324, \325, \326, \327 linha 27\n");
printf("\330, \331, \332, \333, \334, \335, \336, \337 linha 28\n");
printf("\340, \341, \342, \343, \344, \345, \346, \347 linha 29\n");
printf("\350, \351, \352, \353, \354, \355, \356, \357 linha 30\n");
printf("\360, \361, \362, \363, \364, \365, \366, \367 linha 31\n");
printf("\370, \371, \372, \373, \374, \375, \376, \377 linha 32\n");
printf("\400, \401, \402, \403, \404, \405, \406, \407 linha 33\n");
printf("\410, \411, \412, \413, \414, \415, \416, \417 linha 34\n");
printf("\420, \421, \422, \423, \424, \425, \426, \427 linha 35\n");
printf("\430, \431, \432, \433, \434, \435, \436, \437 linha 36\n");
printf("\440, \441, \442, \443, \444, \445, \446, \447 linha 37\n");
printf("\450, \451, \452, \453, \454, \455, \456, \457 linha 38\n");
printf("\460, \461, \462, \463, \464, \465, \466, \467 linha 39\n");
printf("\470, \471, \472, \473, \474, \475, \476, \477 linha 40\n");
printf("\500, \501, \502, \503, \504, \505, \506, \507 linha 41\n");
printf("\510, \511, \512, \513, \514, \515, \516, \517 linha 42\n");
printf("\520, \521, \522, \523, \524, \525, \526, \527 linha 43\n");
printf("\530, \531, \532, \533, \534, \535, \536, \537 linha 44\n");
printf("\540, \541, \542, \543, \544, \545, \546, \547 linha 45\n");
printf("\550, \551, \552, \553, \554, \555, \556, \557 linha 46\n");
printf("\560, \561, \562, \563, \564, \565, \566, \567 linha 47\n");
printf("\570, \571, \572, \573, \574, \575, \576, \577 linha 48\n");
printf("\600, \601, \602, \603, \604, \605, \606, \607 linha 49\n");
printf("\610, \611, \612, \613, \614, \615, \616, \617 linha 50\n");
printf("\620, \621, \622, \623, \624, \625, \626, \627 linha 51\n");
printf("\630, \631, \632, \633, \634, \635, \636, \637 linha 52\n");
printf("\640, \641, \642, \643, \644, \645, \646, \647 linha 53\n");
printf("\650, \651, \652, \653, \654, \655, \656, \657 linha 54\n");
printf("\660, \661, \662, \663, \664, \665, \666, \667 linha 55\n");
printf("\670, \671, \672, \673, \674, \675, \676, \677 linha 56\n");
printf("\700, \701, \702, \703, \704, \705, \706, \707 linha 57\n");
printf("\710, \711, \712, \713, \714, \715, \716, \717 linha 58\n");
printf("\720, \721, \722, \723, \724, \725, \726, \727 linha 59\n");
printf("\730, \731, \732, \733, \734, \735, \736, \737 linha 60\n");
printf("\740, \741, \742, \743, \744, \745, \746, \747 linha 61\n");
printf("\750, \751, \752, \753, \754, \755, \756, \757 linha 62\n");
printf("\760, \761, \762, \763, \764, \765, \766, \767 linha 63\n");
printf("\770, \771, \772, \773, \774, \775, \776, \777 linha 64\n");
getch();
}
#include <conio.h>

Obs.: Caso der erro remova a biblioteca conio.h e adicione o system("pause");

Grande Abraço, qualquer dúvida é só postar!

Compartilhar este post


Link para o post
Compartilhar em outros sites
galera to querendo traduzir para visual g meu prof quer que seja no visualg,

fiz no c é deu certo tudo mas no visualg não consigo fazer o comando 

ja tentei comando repetir ate entre outros mas não funcionou .

 

 

 


printf("Deseja calcular as raizes de outra equacao?\n");

    printf("digite (1) para sim e (0) para não: ");

    scanf("%d", &continua);

  }//while

 

}//fim


 

 

 

 

visual g


var

a, b, c, respPonten, respDelta, delta, x, x1, x2 : real

resposta : caractere

inicio

escreva("Digite A: ")

leia(a)

escreva("Digite B: ")

leia( B)

escreva("Digite C: ")

leia©

 

respPonten <- ( b ^ 2)

delta <- ( respPonten - 4 * a * c )

se (delta > 0) então

 

   respDelta <- raizq(delta)

   x1 <- ( ( - b + respDelta) / (2 * a) )

   x2 <- ( ( - b - respDelta) / (2 * a) )

 

   resposta <- "x' = " + numpcarac (x1) + " x'' = " + numpcarac(x2)

senao

   se (delta = 0) então

      x <- ( - b / 2 * a )

      resposta <- " S {x' e x''} = " + numpcarac(x)

   senao

      se (delta < 0) então

         resposta <- "Essa equação é inválida, delta não pode ser menor que (zero)!"

      fimse

   fimse

fimse

escreva( resposta ) '''


 

C

 

#include <stdio.h>

#include <math.h>

main(){

  //escreva Equações do 2º Grau!

  printf("Equações do 2º Grau!");

 

  //declare a, b, c, x',x'' : real

  float a,b,c,x1,x2;

  /*continua é uma variavel booleana que em que 1 é

    verdadeiro e 0 é falso*/

  int continua;

  continua = 1; //inicializamos a variavel como verdadeira

 

  while(continua){

    //escreva "Digite o valor de a"

    printf("Digite o valor de a: ");

    scanf("%f",&a);

 

    //escreva "Digite o valor de b"

    printf("Digite o valor de b: ");

    scanf("%f",& B);

 

    //escreva "Digite o valor de c"

    printf("Digite o valor de c: ");

    scanf("%f",&c);

 

    if( (b*b-4*a*c) >= 0){

      //x'<-[-b+rad(b,2)-4*a*c]/2

      x1=(-b+sqrt(pow(b,2)-4*a*c))/(2*a);

 

      //x''<-[-b-rad(b,2)-4*a*c]/2

      x2=(-b-sqrt(pow(b,2)-4*a*c))/(2*a);

 

      //escreva x',x''

      printf("x1 é igual a %f e x2 é igual %f\n\n",x1,x2);

    }else

      printf("Esta equacao nao possui raizes reais!\n\n");

 

    printf("Deseja calcular as raizes de outra equacao?\n");

    printf("digite (1) para sim e (0) para não: ");

    scanf("%d", &continua);

  }//while

 

}//fim

Editado por marcos21

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais uma dúvida! Como faço para que os acentos aparecer no programa? Aparece um erro quando a palavra tem acento.

Biblioteca: <locale.h>

Função: setlocale(CT_ALL, "");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei si se deram conta, porém esse tema é do 2013, pode que o dono esteja morto já. :seila:

Woo! Kkkkkk

Não, tinha percebido não.

Bizarro !!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×