Problema en c++

josemen

Tengo un problema en un programa en c++, y es que no me devuelve la función una cadena, me da un error tipo: "cannot convert 'char*' to 'char' ..." pero no estoy haciendo ni punteros ni pasando por referencia ni nada por el estilo. Bueno a ver si me podéis ayudar, un saludo y gracias de antebraso.

Ahí va el tema:

spoiler
MTX_Anubis

char Fcadena(char cadena1[],char a,char b)
{
blablablabla

return cadena1;
}

adivina donde está el problema. Le estás diciendo que devuelves un char y estás devolviendo un array (o un puntero vaya que no dejan de ser eso).

josemen

¿y como devuelvo un array?

Buffoncete

char *

pero ya te digo que si hay que responderte estas cosas es que tienes que hacer los ejercicios de antes a fondo.

De todas maneras, cuando pasas un array por parametro lo pasas por referencia, así que las modificaciones se guardan, no necesitas devolver un array de chars.

BLZKZ

para empezar deberías saber la "estructura" de un array en c++.

Un array en c++ es un puntero a la primera posición del array, por lo que al hacer return char1 estas devolviendo char* y no char ( y lo mismo con arrays de otros tipos)

dagavi

Tampoco te has leído muy bien el enunciado:

/*c) Función que recibe la cadena y dos caracteres, y reemplaza la
aparición del primer carácter por el segundo
en toda la cadena
función devuelve una nueva cadena con el carácter cambiado, La
función no modifica la cadena original.

*/

1) Haces "cambio a por b y b por a", y encima lo haces con 4 ifs :O Si ya encuentras 'a' para que le metes un '1' para posteriormente si es '1' meterle b. ¿No ves que si tienes 'a' ya le puedes meter 'b'? Dices que es para que no se mezclen, no se exactamente que querrás decir, pero los "else" existen para algo.

Prueba tu programa con esta entrada, a ver que tal va: Fcadena("1111111111111", 'a', 'b' )

2) Tampoco lo cumples. Tu función modifica la cadena original, aunque tu haces el apaño de copiar la cadena en el main, cosa que no es lo que se te pide.

maRc

#1, leete bien el ejercicio que no lo has entendido bien. Por otro lado, pon el código entre dos etiquetas [ code ] [ /code ], para que salga con otro estilo.

#include <stdio.h>

int main() {
printf("Así sale más bonito\n");
return 0;
}

Edit: ¿Alguien se acuerda de como era? No me sale el código bonito x(

BLZKZ

#7 lo cambiaron, ahora sale así xDDDDddd

josemen

muchas gracias amigos, y perdonad soy un poco noob

Buffoncete

#9 eso es obvio :P

De todas maneras leete libros que hay ejemplos muy buenos de como crear funciones, paso de parámetros, cuáles se pasan por referencia y cuales por valor, etc.

Aunque esto se entiende mejor cuando ves su traducción a ensamblador y ves que se mete en la pila, si el valor o su puntero.

Thinking in c++ está en pdf, búscalo en google y leetelo entero, los exámenes que yo hacía en la empresa de C++ cuando queriamos contratar a alguien están altamente basados en ese libro.

josemen

#10 , gracias por indicarme lo de el libro, le he echado un vistazo por encima y la verdad es que esta bastante bien explicado, a ver si tengo suerte y me lo puedo imprimir en la uni en plan destrangis xD.

Usuarios habituales

  • josemen
  • Buffoncete
  • BLZKZ
  • maRc
  • dagavi
  • MTX_Anubis