[C con Clase] dudas

Steven Davidson srd4121 en njit.edu
Mar Mayo 3 20:47:17 CEST 2011


Hola Jesús,

On 5/3/2011 1:19 PM, jesus sagñay wrote:
> Buena Tardes,
>
> Porfavor si alguien me puede explicar algunas dudas que tengo
>

Antes de seguir, espero que esto no sea para un examen o sean ejercicios 
para la universidad :(  Si ya has entragado el examen o los ejercicios, 
entonces no tengo problemas en ayudarte.

> Existe una estrecha relación entre punteros y arreglos. El nombre de un
> arreglo es en sí mismo un__puntero____ al almacenar un__ elemento
> del arreglo.
>

Creo que debería decir:

El nombre de un arreglo es en sí mismo un __PUNTERO__ al __PRIMER__ 
elemento del arreglo.

> Cuando una función no devuelve ningún valor en el < tipo_dato_retorno>
> debemos escribir el tipo de dato __________ y no debe tener la palabra
> ___________.
>

Debería ser:

Cuando una función no devuelve ningún valor en el < tipo_dato_retorno> 
debemos escribir el tipo de dato __VOID__ y no debe tener la palabra 
__RETURN__.

Aunque debo decir que lo último no es cierto, pero posiblemente era la 
palabra que se pedía.

> Escriba la sentencia usando punteros para guardar el número 5 en la
> posición de índice2. Ejemplo sin punteros: arreglo[2]=5;
>

Como te piden usar punteros, sería:

*(arreglo+2) = 5;

> ¿Cuándo 2 punteros son iguales?
>

Cuando sus valores son iguales y por tanto, apuntan al mismo dato.

>
> #include <iostream.h>
>
> #include <conio.h>
>
> void main()
>
> {
>
> clrscr();
>
> int V[5]={65,66,67,68,69};
>
> cout <<*(V+2) << *V;
>
> getch();
>
> }
>
> Respuesta: __6765__
>
> Mas o menos entiendo como sale este ejercicio pero si alguien me puede
> explicar mejor
>

Esto es parecido a la pregunta anterior con el array (arreglo). 
Básicamente, tratamos 'V' como si fuese un puntero:

V+2 => la dirección de memoria que es 'V' + 2 posiciones más de enteros

*(V+2) => accedemos al entero apuntado, que en este programa es 67

*V => accedemos al entero apuntado, que en este programa es 65


La sentencia anterior es equivalente a:

cout << V[2] << V[0];

>
> #include <iostream.h>
>
> #include <conio.h>
>
> #define N 5
>
> void main()
>
> {
>
> clrscr();
>
> int a[N]={5,4,3,2,1};
>
> for (int i=N-1; i>0; i--)
>
> cout << a[N-1];
>
> getch();
>
> }
>
> 1   1   1   1
>
> Respuesta:
>
> Mas o menos entiendo como sale este ejercicio pero si alguien me puede
> explicar mejor
>

Sencillamente, accedemos al último elemento del array, 'a', ya que su 
índice no varía en el bucle 'for'.

>
> #include <iostream.h>
>
> #include <conio.h>
>
> #include <stdio.h>
>
> void main()
>
> {
>
> clrscr();
>
> int x[5]={5,4,3,2,1};
>
> int *a, *c;
>
> int *b=&x[1];
>
> c=b;
>
> b++;
>
> c++;
>
> b=(b+2);
>
> a=&x[2];
>
> cout << *c << *b;
>
> getch();
>
> }
>
> ¿Ejecutado todo el programa los punteros a y b son iguales
> ?.................V ( ) o F (x)
>

Correcto.

> ¿Cuál es la impresión: cout << *c << *b; Resultado __31__
>

Correcto.

>
> ESTOS SON LOS ERRORES LO QUE ESTA MARCADO CON .
>
> me puede ayudar si estoy bien con los errores encontrados en los
> ejercicios de abajo
>
> a)
>
> int suma ( int x, int y);   <---

Correcto.

>
> {
>
> int resultado;
>
> resultado = x + y;
>

Falta la sentencia 'return', que en este caso debería ser:

return resultado;

> }
>
> b)
>
> double comprobar (double numero);  <---
>

Correcto

> {
>
> if(numero>4)
>
> numero=numero *1,12;
>

No es un error gramatical, pero sí lógico. Debería ser:

numero = numero * 1.12;

> return numero ;
>
> else
>
> return numero ;
>
> }
>
> c)
>
> int( int  <--- suma ,  <--- int  <--- n)
>

Éstos no son errores. El error está en que no hay un nombre para la 
función. Por ejemplo, podría ser:

int func( int suma, int n )

> {
>
> return n - 1/n+ 2/n*n;
>

No son errores gramaticales, pero posiblemente sean lógicos:

- Con 'int', esta fórmula no tiene mucho sentido.
- Además, ni usamos el parámetro 'suma'.

> }
>
> d)
>
> void f ( double a );

El mismo error de a) y b): no hay un punto y coma al final.

>
> {
>
> float a;
>

Esto es un error, ya que redefinimos 'a'.

> cout << a;
>
> }
>


Espero que esto te aclare las dudas.

Steven





Más información sobre la lista de distribución Cconclase