TOPIC

Agora 15% de erro alguém para me ajudar

Gustavo De Moraes Vital asked 7 months ago

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

typedef struct Arquivo { // Anlisar a estrurua do email

  char E_Valid[100];
  struct Arquivo * esqurda;
  struct Arquivo * direita;

}

Arquivo;
int resposta;
void Transporte(char * );
Arquivo * push(Arquivo * , char * );

int main() { // Recebe os dados de entrada 

  int E_QTD = 0, i;
  char E_Nome[100], E_Prov[100];
  // char Arroba[2] = {'@','\0'};
  Arquivo * Resolucao = NULL;

  scanf("%d", & E_QTD);
  for (i = 1; i <= E_QTD; i++) { // quantidade de email para ser lido
    scanf(" %[^@]%s", E_Nome, E_Prov);
    Transporte(E_Nome);
    strcat(E_Nome, E_Prov);
    Resolucao = push(Resolucao, E_Nome);
  }
  printf("%d\n", resposta);

  return 0;
}

void Transporte(char * Analise) { // Função que analisa os " .  + "

  int i = 0, j = 0;
  char aux[100];

  for (i = 0; i < Analise[i]; i++) {
    if (Analise[i] != '.')
      aux[j] = Analise[i];
  }
  for (j = 0; j < aux[j]; j++) {
    if (aux[j] == '+')
        Analise[i]=aux[j];

    else if (aux[j] == '.') 
        Analise[i]=aux[j];
    }
}

Arquivo * push(Arquivo * Resolucao, char * Analise) {

  if (!Resolucao) { // verificar se os ladoes são iguais 

    Resolucao = (Arquivo * ) malloc(sizeof(Arquivo));
    Resolucao -> esqurda = Resolucao -> direita = NULL;
    strcpy(Resolucao -> E_Valid, Analise);
    resposta++;
  } else if (strcmp(Resolucao -> E_Valid, Analise) > 0) {
    Resolucao -> esqurda = push(Resolucao -> esqurda, Analise);
  } else if (strcmp(Resolucao -> E_Valid, Analise) < 0) {
    Resolucao -> direita = push(Resolucao -> direita, Analise);
  }
  return Resolucao;
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • josean replied 7 months ago

    5
    oi+sadknasdnasidjasidjasidaj@provider.com
    oi@provider.com
    o.i@provider.com
    o......i@provi.der.com
    oi+.tdbem@pro.vider.com

    deve produzir saída:

    3

    saída do seu programa:

    5