elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con aritmetica de punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con aritmetica de punteros  (Leído 2,357 veces)
leo soto

Desconectado Desconectado

Mensajes: 1


Ver Perfil
ayuda con aritmetica de punteros
« en: 16 Marzo 2017, 23:57 pm »

alguien que me oriente en terminar esto
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define VOCALES 5
  4. #define TAMANOMAXIMO 20
  5.  
  6. void main(void)
  7. {
  8.    int i;
  9.  
  10.    char A[TAMANOMAXIMO]={0};
  11.    char B[TAMANOMAXIMO]={0};
  12.    char C[TAMANOMAXIMO]={0};
  13.    char vocales[VOCALES];
  14.    int VA=0,VB=0,VC=0; // estos son los que cuentan las vocales por cada arreglo
  15.  
  16.    char *puntero=0;
  17.    //se agregan las vocales al arreglo
  18.  
  19.    vocales[0]="a";
  20.    vocales[1]="e";
  21.    vocales[2]="i";
  22.    vocales[3]="o";
  23.    vocales[4]="u";
  24.    //nota: solo funciona con minusculas para mayusculas seria otro apuntador con otro arreglo pero utilizando mayusculas
  25.  
  26.  
  27.        printf("Ingresa palabra no mayor a 20 silabas\n");
  28.  
  29.        fgets(A,TAMANOMAXIMO, stdin);// esta funcion toma una cadena ingresada por el usuario y la guarda en un arreglo
  30.        //los parametros que se ingresan en la funcion es el arreglo(A), el tamaño del arreglo (TAMANOMAXIMO) y de que tipo es (stdio)
  31.  
  32.        printf("\n\n");
  33.  
  34.  
  35.        printf("Ingresa palabra no mayor a 20 silabas\n");
  36.  
  37.        fgets(B,TAMANOMAXIMO, stdin);// esta funcion toma una cadena ingresada por el usuario y la guarda en un arreglo
  38.        //los parametros que se ingresan en la funcion es el arreglo(B), el tamaño del arreglo (TAMANOMAXIMO) y de que tipo es (stdio)
  39.  
  40.        printf("\n\n");
  41.  
  42.  
  43.        printf("Ingresa palabra no mayor a 20 silabas\n");
  44.  
  45.        fgets(C,TAMANOMAXIMO, stdin);// esta funcion toma una cadena ingresada por el usuario y la guarda en un arreglo
  46.        //los parametros que se ingresan en la funcion es el arreglo(C), el tamaño del arreglo (TAMANOMAXIMO) y de que tipo es (stdio)
  47.  
  48.  printf("\n\n");
  49.  int j;
  50.  for(j=0;i<VOCALES;j++)
  51.  {
  52.    puntero=&vocales[j];
  53.  
  54.    for(i=0;i<TAMANOMAXIMO;i++)
  55.    {
  56.  
  57.      if(A[i]==*puntero)
  58.      {
  59.        VA++;
  60.      }
  61.      if(B[i]==*puntero)
  62.      {
  63.        VB++;
  64. diganme que me falta (es en c) y lo que tengo que realizar es que al ingresar una palabra en cada arreglo, me de el numero de vocales de cada una,
  65.  
  66. #include <stdio.h>
  67. #define COLUMNAS 5
  68. #define FILAS 5
  69.  
  70. void main(void)
  71. {
  72.    int i,j;
  73.  
  74.    int A[COLUMNAS][FILAS]={0};
  75.    int B=0;
  76.    int *puntero=0;//este puntero va a ver la posicion A[i][j]
  77.    int *puntero2=0;//este puntero va a ver la posicion A[j][i]
  78.  
  79.  
  80.  
  81.    for(i=0;i<COLUMNAS;i++)
  82.    {
  83.      for(j=0;j<FILAS;j++)
  84.      {
  85.        printf("Ingresa numero para A [%d][%d] \n",i,j );
  86.  
  87.        scanf("%d", &A[i][j]);
  88.      }
  89.  
  90.  
  91.  
  92.    }    
  93.  printf("\n\n");
  94.  
  95.  
  96.    for(i=0;i<COLUMNAS;i++)
  97.    {
  98.      for(j=0;j<FILAS;j++)
  99.      {
  100.        printf("[%d] ",A[i][j]);
  101.  
  102.      }
  103.      printf("\n" );
  104.     }  
  105.  
  106.  
  107.  
  108. int encontrado;
  109. encontrado=1;//encontrado tiene 2 valores únicos 0 y 1, donde 0 no encontrado y 1 encontrado, se inicializa en verdadero suponiendo que
  110.  // la matriz es simetrica
  111. i=0;
  112.  j=0;
  113.  
  114.  
  115.       while(i<COLUMNAS && encontrado==1)
  116.    {
  117.      while(j<FILAS && encontrado==1)
  118.      {
  119.        puntero=&A[i][j];
  120.        puntero2=&A[j][i];
  121.        if(*puntero2!=*puntero)
  122.        {
  123.          encontrado=0;
  124.        }else{
  125.          j++;
  126.  
  127.        }
  128.  
  129.      }
  130.      i++;
  131.  
  132.  
  133.    }
  134.  
  135. if (encontrado==0)
  136. printf("\n\nLa matriz no es simetrica\n\n");
  137. if (encontrado==1)
  138. printf ("\n\nLa matriz es simetrica\n\n");
  139.  
  140.  
  141.  
  142. }
  143.  
  144. en este usando aritmetica de punteros debo determinar si la matriz ingresada es simetrica o no
  145.  
  146. #include <stdio.h>
  147. #define COLUMNAS 5
  148.  
  149. void main(void)
  150. {
  151.    int i;
  152.  
  153.    int A[COLUMNAS]={0};
  154.    int B=0;
  155.    int *puntero=0;
  156.  
  157.  
  158.    for(i=0;i<COLUMNAS;i++)
  159.    {
  160.  
  161.        printf("Ingresa numero para A [%d] \n",i );
  162.  
  163.        scanf("%d", &A[i]);
  164.  
  165.     }    
  166.  printf("\n\n");
  167.  
  168.  
  169.    for(i=0; i<COLUMNAS; i++)
  170.    {
  171.       printf("%d\t", A[i]);
  172.    }
  173.  printf("\n\n");
  174.     printf("ingrese valor que busca \n");
  175.        scanf("%d",&B);
  176.  
  177. int encontrado;
  178. encontrado=0;//encontrado tiene 2 valores únicos 0 y 1, donde 0 no encontrado y 1 encontrado
  179. i=0;
  180.  
  181.  
  182.       while(i<COLUMNAS && encontrado==0)
  183.    {
  184.     puntero=&A[i];
  185. if(B==*puntero)
  186.        {
  187. encontrado=1;
  188. }
  189.        else
  190.          {
  191.           i++;
  192.  
  193.          }
  194.  
  195.    }
  196.  
  197. if (encontrado==0)
  198. printf("elemento no econtrado\n");
  199. if (encontrado==1)
  200. printf ("elemento encontrado A[%d]= %d \n",i, B);
  201.  
  202.  
  203.  
  204. }

en esta usando aritmetica de punteros, el programa debe indicar la posicion en el arreglo del elemento parado como parametro, en caso de que el elemento no se encuentre y devolver el tamaño en bytes del arreglo ingresado por el usuario

TODO ES EN C, LES AGRADECERIA SU AYUDA


· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex


« Última modificación: 17 Marzo 2017, 00:03 am por engel lex » En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.696


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ayuda con aritmetica de punteros
« Respuesta #1 en: 17 Marzo 2017, 16:17 pm »

Muy buen dia.

Realmente no termine de leer el programa por que no me queda claro que es lo que hace.

Cuando pidas ayuda con este tipo de problemas de apuntadores busca un Ejemplo basico pero que exprese lo que no entiendes.

Ejemplo

¿Como puedo incrementar la direccion a la que apunta mi apuntador en 1 bytes?

Código
  1. #include<stdio.h>
  2.  
  3. int main() {
  4. char *cadena = "Esta es una direccion de memoria que contiene caracteres ascii";
  5. char *ptr;
  6. ptr = cadena;
  7. *ptr++;
  8. printf("Cadena apunta a %p y ptr apunta a %p",cadena,ptr);
  9. return 0;
  10. }
  11.  

Salida en mi computadora
Código:
Cadena apunta a 0040A064 y ptr apunta a 0040A065

Espero que respondas tu duda nuevamente mejor redactada y con un ejemplo de tup problema y con gusto te ayudamos.

Saludos!


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ayuda con aritmetica de punteros
« Respuesta #2 en: 17 Marzo 2017, 19:21 pm »

En el último código hay una instrucción que crea código pero no tiene efecto. Es este:
Código
  1. *ptr++;
El asterisco hace que devuelva lo que hay dentro del puntero, pero como no hay nada que lo reciba se pierde.
La instrucción debería ser
Código
  1. ptr++;
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines