ayuda con estos dos simples ejercicios de C++ :(

Iniciado por xboxone007, 2 Diciembre 2013, 12:51 PM

0 Miembros y 1 Visitante están viendo este tema.

xboxone007

Hola a todos, miren tengo que hacer estos estos ejercicio pero no logro que se me quede la programación y ya tengo el tiempo muy justo. Me preguntaba si me podríais ayudar, sois mi ultima baza.

Esto son los ejercicio.


-Ejercicio 1:
Escribir un programa con una función que calcule la longitud de una cadena de
caracteres. El nombre de la función será LongitudCadena, debe devolver un int, y como
parámetro de entrada debe tener un puntero a char.
En esta función no se pueden usar enteros para recorrer el array, usar sólo punteros y
aplicar aritmética de punteros.
En main probar con distintos tipos de cadenas: arrays y punteros.

-Ejercicio 2:
Escribir un programa que lea un número, que indica cuántos números enteros serán
guardados en un vector, crear el vector para almacenar el tamaño exacto de los datos y
entonces leer los enteros que serán guardados en el vector. Posteriormente se han de
mostrar los elementos en orden inverso y liberar la memoria que se ha reservado.

Sobre el ejercicio uno logre hacer esto:

#include <iostream>

using namespace std;

int LongitudCadena(char*);

int main(){
cout << "CALCULAR LONGITUD CADENA_____________" << endl << endl;

cout << "CON ARRAY" << endl;
char cadena[10];
cout << "Introduce una cadena de texto: ";
cin >> cadena;
cout << "La cadena introducida tiene " << LongitudCadena(cadena) << " caracteres" << endl;;
cout <<endl;

cout << "CON PUNTEROS" << endl;
char *cadena2 = new char[10];
cout << "Introduce una cadena de texto: ";
cin >> cadena2;
cout << "La cadena introducida tiene " << LongitudCadena(cadena2) << " caracteres";

cout <<endl;
system("PAUSE");
}

int LongitudCadena(char* cadena){
int longitud = 0;

return longitud;
}

Me salen estos errores:

1>------ Operación Generar iniciada: proyecto: Demo, configuración: Debug Win32 ------
1>Compilando...
1>CPP.cpp
1>c:cpp.cpp(19) : warning C4305: '=' : truncamiento de 'double' a 'float'
1>c:cpp.cpp(25) : error C2065: 'gt' : identificador no declarado
1>c:cpp.cpp(25) : error C2065: 'x' : identificador no declarado
1>El registro de compilación se guardó en el "file://c:Debug\BuildLog.htm"
1>Ejer - 2 errores, 1 advertencias
========== Generar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========

Muchísimas gracias de antemano a todo el que me ayude y un saludo.

dato000

Te hace falta pulir conocimientos sobre punteros, no es tan dificil, pero se lo que estas pasando, tratar de entender punteros al principio puede ser complicado y fastidioso, pero cuando lo entiendas verás la potencia y facilidad que tienen.

Para entender tales conceptos te dejo los siguientes enlaces, te recomiendo que los leas y trates de entenderlos con la mejor disposición, pues sino entiendes conceptos tan básicos te garantizo que en el futuro te ira mucho peor y serás un programador de cuarta, puede que tengas trabajo, pero como profesional serás mediocre.

Aritmetica de punteros
Punteros de Caracteres y Cadenas
Objetos Dinamicos

Ahora el primer ejercicio:

Citar
-Ejercicio 1:
Escribir un programa con una función que calcule la longitud de una cadena de
caracteres. El nombre de la función será LongitudCadena, debe devolver un int, y como
parámetro de entrada debe tener un puntero a char.
En esta función no se pueden usar enteros para recorrer el array, usar sólo punteros y
aplicar aritmética de punteros.
En main probar con distintos tipos de cadenas: arrays y punteros.


#include <iostream>

using namespace std;

int LongitudCadena(char*);

int main()
{
    char *punteroCadena;
    char Cadena[30];

    cout << "Digite la cadena:  "; cin >> Cadena;
    punteroCadena = Cadena;
    cout << "direccion punteroCadena:  " << punteroCadena << endl;
    cout << "caracteres punteroCadena " << &punteroCadena << endl;

    cout << "La cadena " << Cadena << " tiene "
          << LongitudCadena(punteroCadena) << " caracteres." << endl;

    return 0;
}

int LongitudCadena(char* puntero)
{
    char* copia = puntero;
    while(*puntero) puntero++;
    return(puntero-copia);
}


Hay que tener que funciona con una palabra, no tiene en cuenta espacios, para eso se complica el asunto, y lo importante es entender el manejo de suma de punteros y paso por referencia, además, ya teniendo la libreria string.h ya hay funciones que trabajan todo eso de una manera más limpia.