Ir ao conteúdo
  • Cadastre-se

C++ "error: invalid operands to binary +"


JPRD

Posts recomendados

 Olá a todos! Eu estou tendo problemas com um algoritmo que estou tentando implementar de pseudocódigo para C.

 No algoritmo abaixo, o ponteiro q, que está apontando para o vetor de string da struct elemento, ele irá receber o resultado do concatenamento do conteúdo do índice que o ponteiro p está apontando do vetor de string da struct elemento mais uma letra do mesmo conteúdo que ele aponta iniciando de trás para frente.

 Caso a explicação tenha ficado muito confusa, basicamente é um algoritmo que espelha uma palavra junto a ela própria e mostrar na tela o processo disso acontecendo passo-a-passo.

 Exemplo: Ana + 'a' + 'n' + 'A' = AnaanA (adicionando uma palavra por repetição e imprimindo na tela)

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct elemento Elemento;
typedef Elemento *Ponteiro;
typedef char *string;
struct elemento {
    int chave;
    string vet[3];
    Ponteiro Prox;
};
Ponteiro p,prim,h,q;
int i;
int main () {
    prim = NULL;
    p = (void *)malloc(sizeof(int));
    h = p;
    (*p).chave = 1;
    (*p).vet[1] = "Ana";
    (*p).vet[2] = "Bia";
    (*p).vet[3] = "Lia";
    puts((*p).vet[1]);
    puts((*p).vet[2]);
    puts((*p).vet[3]);
    for (i=1;i<=3;i++) {
        q = (void *)malloc(sizeof(int));
        (*q).vet[1] = (*p).vet[1]+(*p).vet[1,4-i]; //"error: invalid operands to binary +"
        (*q).vet[2] = (*p).vet[2]+(*p).vet[2,4-i]; //"error: invalid operands to binary +"
        (*q).vet[3] = (*p).vet[3]+(*p).vet[3,4-i]; //"error: invalid operands to binary +"
        printf("\n%s \n",(*q).vet[1]);
        printf("%s \n",(*q).vet[2]);
        printf("%s \n",(*q).vet[3]);
        p = q;
    };
    free(p);
    free(q);
    return 0;
}

 

 O Error que estou tendo é este:

Citação

error: invalid operands to binary +


 Eu coloquei um comentário ao lado das linhas que estão ocorrendo esse erro.

 Eu entendo que não é possível usar o operador de soma com strings, mas eu já tentei utilizar strcat e stcpy e atribuir o resultado dessa operação para o ponteiro q (eu até deixei a biblioteca string.h ainda no algoritmo), na compilação não deu erro, mas na execução o programa parava de funcionar.


 Eu cometi algum erro no meu algoritmo?

 Desde já, agradeço!

 Ps: Sou novo por aqui.

Link para o comentário
Compartilhar em outros sites

Eu nunca vi tanto erro junto.
Se esse programa tivesse a menor chance de funcionar seria assim:
 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct elemento Elemento;
typedef Elemento* Ponteiro;
typedef char *string;
struct elemento {
    int chave;
    string vet[3];
    Ponteiro Prox;
};
Ponteiro p,prim,h,q;
int i;
int main () {
    prim = NULL;
    char sr[100];

    p = (Elemento*)malloc(sizeof(struct elemento));
    h = p;
    (*p).chave = 1;

    (*p).vet[0] = (char*)malloc(sizeof(char)*100);
    (*p).vet[1] = (char*)malloc(sizeof(char)*100);
    (*p).vet[2] = (char*)malloc(sizeof(char)*100);

    strcpy ( (*p).vet[0] , "Ana");
    strcpy ( (*p).vet[1] , "Bia");
    strcpy ( (*p).vet[2] , "Lia");

    puts(p->vet[0]);
    puts(p->vet[1]);
    puts(p->vet[2]);

    strcpy(sr, p->vet[0]);
    strrev( sr );
    strcat(p->vet[0], sr);

    strcpy(sr, p->vet[1]);
    strrev( sr );
    strcat(p->vet[1], sr);

    strcpy(sr, p->vet[2]);
    strrev( sr );
    strcat(p->vet[2], sr);

    puts(p->vet[0]);
    puts(p->vet[1]);
    puts(p->vet[2]);



    free((*p).vet[0]);
    free((*p).vet[1]);
    free((*p).vet[2]);

    free(p);
    return 0;
}

não vou nem tentar explicar porque si não vou ter que explicar a linguagem toda. Se tiver duvida em uma parte concreta pergunte.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...