1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda num exercisio de C

Discussão em 'Programação' iniciada por eduino, 22 de Maio de 2008. (Respostas: 6; Visualizações: 672)

  1. eduino

    eduino Power Member

    Boas eu ando a fazer um exercisio de C que diz o seguinte :
    [FONT='Arial','sans-serif']

    neste momento o codigo que eu tenho é este!
    [/font]
    Código:
    void BiggerLine( FILE *pFile,char strresults[]);
    char linha [1000];
    int cntletras = 0;
    int cntpalavras = 1;
    int i = 0;
    while ((fgets strresults[],1000,pFile))!=NULL) {
    for (char;strresults[i] ='\0';i++) {
    if (isalpha(strresults[i]))
    cntletras ++;
    }
     
    
    Alguem pode-me ajudar nisto pr favor?
    obrigado!
     
  2. Baderous

    Baderous Banido

    "e preencher (na forma de uma string) a linha lida, com maior número de caracteres."

    Não percebi. Tem que se ler a 1ª linha para uma string e substituí-la por uma string maior?
     
  3. eduino

    eduino Power Member

    nao ! tem que devolver qual e a linha que contem o maior n de caracteres , ou seja , a maior linha escrita
     
  4. Baderous

    Baderous Banido

    Então basta fazer um strlen às strings que se vai lendo:

    Código:
    #include <stdio.h>
    #include <string.h>
    
    #define MAX 500
    
    int main() {
        FILE *fp;
        char str[MAX];
        char maior[MAX]="";
        int numlinha=0, linha;
        fp = fopen("ficheiro.txt","r");
        if (!fp)
           exit(1);
        while (fgets(str,sizeof(str),fp)!=NULL) {
              if (strlen(str)>strlen(maior)) {
                 strcpy(maior,str);
                 linha=numlinha;
                 }
              numlinha++;
              }
        printf("Maior linha:\n%d: %s\n",linha+1,maior);
        return 0;
    }
     
  5. eduino

    eduino Power Member

    usando o codigo que eu tenho achas que daria para fazer alguma coisa! tenho que obrigatoriamente usar

    void BiggerLine( FILE *pFile,char strresults[]);

    Desculpa pelo incomodo
     
  6. Baderous

    Baderous Banido

    Estás a fazer contas desnecessárias uma vez que existe a função strlen que devolve o comprimento da string.

    Código:
    [FONT=monospace]void BiggerLine(FILE* pFile, char strresults[]) {
        char str[MAX];
        strcpy(strresults,"");
        int numlinha=0, linha;
        if (!fp)
                   exit(1);
        while (fgets(str,sizeof(str),fp)!=NULL) {
              if (strlen(str)>strlen(strresults)) {
                 strcpy(strresults,str);
                 linha=numlinha;
                 }
              numlinha++;
              }
        printf("Maior linha:\n%d: %s\n",linha+1,maior);
    }[/FONT]
     
  7. eduino

    eduino Power Member

    Obrigado por tudo! :)
     

Partilhar esta Página