Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

zellblitz

[resolvido]Ajuda com strings

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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%  ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);
}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.