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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


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

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Instruccion if
« en: 22 Octubre 2012, 13:58 pm »

Este codigo debe buscar el numero mayor de un array de punteros mostrar su valor y posicion, pero en la instruccion IF me da error

Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main()
  5. {
  6.  int *array[10];
  7.  
  8.  for(int i=0; i<10; i++)
  9.  {
  10.    printf(" \n Ingrese valor de array[%d]:  ",i); scanf("%d", (array+i));
  11.  }
  12.  
  13.  int may=0, pos = 0;
  14.  for(int i=0; i<10; i++)
  15.    if (*(array+i) > may)
  16.    {
  17.      may = *(array+i);
  18.      pos = i;
  19.    }
  20.  
  21. for(int i=0; i<10; i++)
  22.  {
  23.    printf(" \n valor posicion array[%d]= %d ", i, *(array+i));
  24.  }
  25.  
  26.  printf(" \n El valor mayor es: %d , en la pos array[i]", may, pos);
  27.  printf("\n\n);
  28.  system("pause");
  29. }
  30.  
  31.  


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Instruccion if
« Respuesta #1 en: 22 Octubre 2012, 17:00 pm »

El problema principal es: antes de utilizar un puntero debes asignarle una dirección de memoria valida. Como utilizas un array de punteros debes hacerlo por cada uno de sus elementos.

Lo usual es reservar memoria mediante malloc/calloc/realloc, supongo eso ya lo viste en clase. El programa con las correcciones:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int *p[10];
  7.  
  8.   for (int i = 0; i < 10; i++)
  9.      p[i] = malloc(sizeof *p[i]);
  10.  
  11.   for (int i = 0; i < 10; i++){
  12.      printf("Ingrese valor de array[%d]:\n", i);
  13.      scanf("%d", *(p + i));
  14.   }
  15.  
  16.   int may = *p[0];
  17.   int pos = 0;
  18.   for (int i = 1; i < 10; i++)
  19.      if (**(p + i) > may){
  20.         may = **(p + i);
  21.         pos = i;
  22.      }
  23.  
  24.   for (int i = 0; i < 10; i++)
  25.      printf("Valor en array[%d] = %d\n", i, **(p + i));
  26.   printf("El mayor es: %d, en la pos %d\n", may, pos);
  27.  
  28.   for (int i = 0; i < 10; i++)
  29.      free(p[i]);
  30.  
  31.   return 0;
  32. }

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
BJM

Desconectado Desconectado

Mensajes: 41


Ver Perfil
Re: Instruccion if
« Respuesta #2 en: 22 Octubre 2012, 17:44 pm »

Gracias rir3760, copile tu codigo y en la linea 9, me indica error esto es lo que dice:
 invalid conversion from `void*' to `int*'

Código
  1. p[i] = malloc(sizeof *p[i]);

En esta linea me indica error, lo copile con dev-c++
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Instruccion if
« Respuesta #3 en: 22 Octubre 2012, 17:48 pm »

copile tu codigo y en la linea 9, me indica error esto es lo que dice:
invalid conversion from `void*' to `int*'

Código
  1. p[i] = malloc(sizeof *p[i]);

En esta linea me indica error, lo copile con dev-c++
Si lo compilas como C no debe generar ningún error.

Si, por alguna extraña razón, lo compilas como C++ se genera el mensaje de error que mencionas.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Equivalencia C a ASM de una instrucción.
Electrónica
Meta 3 6,772 Último mensaje 19 Octubre 2008, 06:24 am
por MARCO_RECARGADO
se atasca en una instruccion
Java
Tyrz 9 5,657 Último mensaje 21 Enero 2011, 20:57 pm
por kasiko
Instrucción % en C++?
Programación General
.:UND3R:. 1 2,349 Último mensaje 17 Enero 2012, 16:49 pm
por pucheto
Instruccion sscanf [C]
Programación C/C++
oblivionxor 6 2,771 Último mensaje 26 Febrero 2013, 20:36 pm
por oblivionxor
Problema con instruccion
Programación General
nolasco281 2 1,817 Último mensaje 7 Mayo 2014, 18:45 pm
por nolasco281
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines