[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