Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
zellblitz

[resolvido]Ajuda com strings

Recommended Posts

zellblitz

Boas , parece que é aqui aonde posso vir pedir ajuda , é que estou com dificuldade em criar 2 programas em C e se me poderiam ajudar sff.

1-implemente um programa  que leia uma string com a dimensão máxima de 20 caracteres e converta as letras maiúsculas em minúsculas

2-implemente um programa  que leia um número que indica quantos números mais deverá ainda ler e, a cada número lido, some 5 e escreva o resultado.

Agradeço desde já qualquer pessoa que me ajude com isto ;)

Share this post


Link to post
Share on other sites
Localhost

Para o primeiro programa tens a função toupper acho que é assim que se chama. No entanto, se tiveres mesmo de criar uma função que o faça também é simples. Segundo a minha querida tabela ascii as letras maisculas têm matematicamente uma diferença com as respectivas minusculas de 32. Ou seja, percorres a string, e subtrais 32 a cada letra.

Para o segundo programa não percebi a parte do "indica quantos números mais deverá ler".


here since 2009

Share this post


Link to post
Share on other sites
zellblitz

O toupper faz as letras minúsculas em letras maiúsculas , eu quero o contrario !

O segundo é assim ,

Digite um nº

ex. 3

Agora vou receber mais 3 números:

ex.4 3 8

Agora vou adicionar +5 a cada um deles:

ex.9 8 13

è basicamente isto que quero que o programa faça.

Share this post


Link to post
Share on other sites
Localhost

Ah, desculpa não li bem o que querias. Para isso percorres a string e somas 32 a cada letra, literalmente. Chars são números na verdade, por isso podes somar, dividir, etc.

Quanto ao segundo problema acho que existe também uma função que verifica se é um número mas mais uma vez, se quiseres criar uma função que o faça, crias uma condição que verifica se a letra está entre 48 e 57 (que são 0 e 9 na tabela ascii). Se estiver somas, senão continuas a percorrer a string.


here since 2009

Share this post


Link to post
Share on other sites
zellblitz

Aonde posso achar a função que ao ler uma string me diga que só quer letras ou se só quer números?

Para o segundo eu tava a pensar em fazer um scanf("%d", &n);

para o primeiro numero e depois fazer n vezes scanf() para ter os próximos só que não sei limitar o meu scanf() para n números por assim dizer

Share this post


Link to post
Share on other sites
Localhost

Utilizas um loop for ou um while ;)

p.s. Quanto à função que verifica se é um número deixo aqui


here since 2009

Share this post


Link to post
Share on other sites
zellblitz

Já ajuda para ver se é um digito ou não , obrigado !

Para o segundo  cheguei a este código , mas não o consigo por a funcionar bem.

#include <ctype.h>
#include <stdio.h>

int main()
{   
int n;    
scanf("%d", &n);
int i;
for (i = 0; i < n; i++){
         int g; 
        scanf("%d", &g);
        g=g+5;
        printf("%s\n",g);
        }
        return (0);
}

Share this post


Link to post
Share on other sites
Colector Boy

1->O teu erro é que tens no printf("%s \n",g);

quando o que queres é %d ou %i para inteiros uma vez que o teu g não é uma string.

2-> as declarações devem ser sempre feitas no inicio e não no meio do código.


#include <ctype.h>
#include <stdio.h>

int main()
{   
int n,i,g;   
scanf("%d", &n);
for (i = 0; i < n; i++){
       scanf("%d", &g);
        g=g+5;
        printf("%d \n",g);
        }
        return (0);
}

se depois fores estudar C++ aprendes que podes fazer isto:

for (int i = 0; i < n; i++) //declaras a variável i dentro do for logo não precisas de a declarar "fora"
{
  //código
}

Share this post


Link to post
Share on other sites
zellblitz

Muito obrigado , já tenho os 2 programas a correr mais ou menos bem , eu agora só vou meter no código para ver se é um char ou um digit depois já devo os ter a 100%  ;)

Share this post


Link to post
Share on other sites
zellblitz

O segundo programa já esta a funcionar a 100%  ;)

o primeiro eu deparei com este código , para as letras funciona bem mas se metermos mais  que 20 números não nos da eles

#include <stdio.h>

int main()
{
char st[20];
char stout[20];
scanf("%[^\n]",st);
int i;
for (i=0;i <20;i++){
if (st[i] >=65 && st[i]<=90){
st[i]+=32;
stout[i]=st[i];
}
else 
stout[i]=st[i];
}
printf("%s\n",stout);

  return (0);
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.