Ir ao conteúdo
  • Cadastre-se

Ajuda exercicio dev c tabela ascII


mbcs

Posts recomendados

Elabore um programa que leia uma string. O programa deve somar os códigos de cada

caractere da tabela ASCII e apresentar a soma da cadeia de caractere. O programa deve

percorrer a string usando ponteiros.

Aqui vai minha linha de codigo:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char str[20];
printf("Dig a string\n");
gets(str);
printf("%d\n",str);

system("pause");
}

Nesse codigo eu pego a string e imprimo com seus valores na tabela ascII. Mais n sei porque esse valor que estas sendo impresso é um lixo de memoria qualquer.No meu caso n importa a string q eu escrevo sempre imprime: 2687768. E ainda também n sei como pegar esses valores e somar ex: 2+6+8...

Se alguém puder ajudar agradeço. valeu!

Link para o comentário
Compartilhar em outros sites

valeu galera mas mesmo assim n roda...

o debug acusa arquivo.exe parou de funcionar...

Segue codigo abaixo:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,soma=0;
char str[15];
printf("Dig a string\n");
gets(str);
for(i=0;i<15;i++)
{
printf("%d\n",str[i]);
}
i=0;
while(str[i] != '/0')
{
soma+=str[i];
i++;
}
printf("A soma é %d\n",soma);
system("pause");
}

Link para o comentário
Compartilhar em outros sites

Não é necessário o string.h, falta o 'return 0;', pessoas sensatas não usam gets,

se o seu exercício é pra usar ponteiro você não está fazendo isso.

Normalmente eu não faria isso mas vou escrever o seu programa, mas não

garanto que funciona porque eu não vou testar.


#include <stdio.h>
#define MAX 20
int
main (void)
{
char str[MAX];
char *sptr;
int soma = 0;

printf ("Digite sua string: ");
if (!fgets (str, MAX, stdin))
{
printf("##Erro ao ler string, programa encerrado\n");
return 0;
}

printf ("Valores ASCII da string:\n");
for (sptr = str; (*sptr) && (*sptr != '\n'); ++sptr)
{
printf("%c\n", *sptr);
soma += *sptr;
}

printf ("Soma dos valores: %c\n", soma);

return 0;
}

Link para o comentário
Compartilhar em outros sites

valeu pela ajuda caio o programa tá funcionando direito so tinha um errinho no codigo:

 printf ("Soma dos valores: %d\n", soma);

pois como tenho que imprimir como valores da tabela ascII preciso imprimir como inteiro.

N usei o comando fgets pois ainda estou no segundo periodo( Estrutura de Dados e Algoritmos I) e ainda nao aprendi sobre esse comando mas vou dar uma pesquisada sobre ele...

So queria que me explicasse o que esse for esta fazendo:

for (sptr = str; (*sptr) && (*sptr != '\n'); ++sptr)
{
printf("%c\n", *sptr);
soma += *sptr;
}

valeu a todos..

Link para o comentário
Compartilhar em outros sites

Uhm, ahh agora que você disse era um errão aquilo, era pra ser um %d mesmo hahaha

Quanto aquele for ele é bem condensado, útiln mas é bem difícil pra quem não entende muito de C, vou quebrar cada statement e expression em uma linha

e explicar o que a linha faz ok?


for (
sptr = str; //o ponteiro sptr vai ser usado para percorrer a linha, em cada
//iteração ele guarda o endereço de um caractere da string
//no começo ele aponta para o primeiro caractere, nesse caso str que é
//um ponteiro para a str aponta para o primeiro caractere
(*sptr) && (*sptr != '\n'); //aqui o statement que controla a condição de
//parada, *sptr é um dereferenciação do ponteiro sptr, em outras palavras
//eu estou pegando o caractere para o qual sptr aponta, nesse caso a
//primeira parte testa se sptr aponta para '\0' (caractere nulo) que termina
//a string, é bem comum evitar comparar com '\0', NULL ou 0 e colocar
//só o statement já que quando a condição é igual a 0 o loop é interrompido,
//mas para um compilador decente isso não faz diferença...
// no segundo caso eu comparo com '\n' porque a fgets inclui o
//'enter' que você dá ao terminar de digitar a string no resultado final e
//acredito que o objetivo seria desconsiderar o 'enter', como curiosidade
//seria mais eficiente trocar a ordem dessa comparação, já que uma string
//digitada que não ocupasse até o limite do array sempre terminaria com
//'\n' e isso evitaria que a comparação com o caractere '\0' fosse feita
++sptr) //incrementa o ponteiro, simplesmente faz o ponteiro passar para
//o próximo caractere
{
printf("%c\n", *sptr); //imprime o caractere para o qual sptr aponta
soma += *sptr; //'soma' recebe o valor da soma de 'soma' e sptr
}

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!