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

fpinto

strings so da letras

8 mensagens neste tópico

boas, no código

#include <stdio.h>
#include <stdlib.h>
int main()
{
   int a;

   printf("intruduza o caracter/sting que quer repetir muito");
   puts("");

   scanf(" %d",&a);
   puts("");

   for( ; ; ) printf("%d",&a);


system("PAUSE");
return 0;
}

eu ao compilar e se eu escolher letras ou mesmo números o resultado e sempre o mesmo. 14... isso e o tamanho da variável não é?

como resolvo?

cumps fpinto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

printf("%d",&a);

Estás a imprimir o endereço da variável.

Além disso, se queres lidar com caracteres ou strings tens de usar o tipo char e char*, respectivamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como faço então para por o valor da variavel?

#include <stdio.h>

int main()
{
    int a;

    printf("introduza o número que quer repetir muito: ");

	scanf("%d",&a);

   	for(;	printf("%d\n",a);

system("PAUSE");
return 0;
}

Agora tenta fazer para strings.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja agora. no mesmo codigo mas mais desemvolvido

#include <stdio.h>
#include <stdlib.h>
int main()
{
  char a,b,c;

  printf("Bem vindo ao programa de efeitos de letras\n\n por favor escolha uma das seguintes opcoes");
  puts("\n\n");
  puts("1 para efeitos predefenidos.\n2 para criar novo efeitoa\n");
  scanf("%c",&b);

  switch (b)
  {
  case 1: printf ("que efeito deseja entre: 1 binario \n2 octal\n3 simbolos matematicos");
          scanf("%c",&c);
          switch (c)
          {
          case 1: for ( ; ; ) printf("010101010010010101101111001001111110100101010101101001");
          break;
          case 2: for ( ; ; ) printf("4753809m7538674367m43643643v24353463456x43643h9862x43f534g7543b6");
          break;
          case 3: for ( ; ; ) printf("/*-+&%!#$%&()//");
          break;
          default: printf("isso nao existe... o programa vaise auto encerrar");
          puts("\n\n\n\n");
          system("PAUSE");
          return 0;
          }
  case 2:

  printf("intruduza o caracter/sting que quer repetir muito");
  puts("");

  scanf("%c",&a);
  puts("");

  for( ; ; ) printf("%c",a);
  break;
  default: printf("isso nao existe. o programa vaise auto encerar");
  puts("\n\n\n\n");
  system("PAUSE");
  return 0;
  }

system("PAUSE");
return 0;
}

o resultado e sempre o mesmo. pergunta os printf iniciais e quer responda 1 ou 2 ele atica o default. porque? como resolvo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema está no case, estás a comparar o código ASCII do caracter. O código ASCII do número 1 não correspondo a 1, mas sim a '1'.

Para resolver basta mudares todas as comparações do switch para 'valor' (entre plicas).

E cuidado nesta linha printf("/*-+&%!#$%&()//"), para obteres o caracter % tens de escrever %% na string do scanf.

0

Partilhar esta mensagem


Link 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