Jump to content

string


costricardo
 Share

Recommended Posts

Boas pessoal  🙂 ,

Estava a tentar fazer um programa que me deixasse escrever uma string ate introduzir o caracter # , e depois dar me o numero de letras, palvras e linhas. Eu consegui fazer tudo tirando a parte do programa ter de para quando se coloca o #. Perguntei ao meu professor de programação, mas pelos vistos ele não sabia XD, entao tentei eu em casa e consegui, mas agora deixou de dar as estatísticas certas . o codigo ficou assim:

#include <stdio.h>
#include <stdlib.h>
#define DIM 500
#include <string.h>

int main()
{
    char string[DIM];
    int conta=0, conta1=0,i=0, linhas=0,c=0;


    while(string[i]!='#') {
        fgets(string,500,stdin);
    }


    for(i=0; string[i]!= '\0'; i++) {
        conta++;

        if(string[i] ==' ') {
            conta1++;
        }
    }

    printf("Numero de caracteres: %d",conta);
    printf("\nNumero de palavras = %d", conta1);

    for(i=0; string[i]!='\0';i++) {
        if(string[i] == '\n'){
            linhas++;
        }
    }

    printf("Linhas = %d\n", linhas);

    return 0;
}

I´m a Geek and you?www.tecnologias.in

Link to comment
Share on other sites

para que vou usar o stringcompare se tenho uma única string'?

a tua condicao do while esta a fazer isto:

imagina que introduzo "programacao#"

no while ela vai estar a fazer esta condicao ("programacao#"!="#") tu so queres verificar o caracter... logo tens de arranjar maneira de ler um caracter para um buffer e se nao for "#" meter o caracter na var string

Got it?

Link to comment
Share on other sites

Primeiro, visto que isto é C, e o string usado é um vector de caracteres, estás a comparar um ponteiro com o carácter '#'.

O que tu queres fazer é ler carácter a carácter.

Devido a isso, não te interessa saber o tamanho máximo da string.

Algumas notas: Estás a usar o fgets como se concatenasse o que lê à string antiga. No entanto, o fgets apaga e reescreve o conteúdo da string. Além dos espaços, o carácter de nova linha também pode separar palavras.

Um exemplo que poderia funcionar, seria:

#include <stdio.h>

int main() {
  char string;
  int conta=0, conta1=1, linhas=1;


  for(; {
    string = (char)getchar();
    if(string == '#') break;
    conta++;

    if(string ==' ' || string == '\n') {
      conta1++;
      if(string == '\n')
        linhas++;
    }
  }

  printf("Numero de caracteres: %d",conta);
  printf("\nNumero de palavras = %d\n", conta1);  
  printf("Linhas = %d\n", linhas);
  return 0;
}

Nota: isto não tem em conta quando, por exemplo se usam mais do que um espaço para separar palavras, ou outros caracteres de separação.

Link to comment
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
 Share

×
×
  • Create New...

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.