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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Con qué carácter especial detengo un vector?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Con qué carácter especial detengo un vector?  (Leído 1,570 veces)
estudianteuv

Desconectado Desconectado

Mensajes: 10


Ver Perfil
¿Con qué carácter especial detengo un vector?
« en: 24 Mayo 2018, 23:14 pm »

Hola a todos, ¿qué tal?

Lo que pasa es que tengo este programa que adjuntaré, el cuál no sé si es correcto (espero puedan ayudarme en la función, si es que está mal) pero en fin, mi pregunta es que; ¿cuál es el carácter especial para detener un vector, por ejemplo en cadenas es '\0', como sabes, ¿pero en un vector?

Espero puedan ayudarme. Este es el programa:
Lo he compilado y funciona pero al final sale 0.

Código
  1. #include<stdio.h>
  2. #define T 5
  3.  
  4. int buscar_nmayor(int *v,int n);
  5.  
  6. int main(){
  7. int vct[T];
  8. int mayor,i=0;
  9. int num_mayor;
  10.  
  11. for(i=0;i<T;i++){
  12. printf("Inserte valor %i del vector: ",i+1);
  13. scanf("%i",&vct[i]);}
  14. mayor=vct[0];
  15. num_mayor=buscar_nmayor(vct,mayor);
  16. printf("El numero mayor del vector es: %i",num_mayor);
  17. return 0;
  18. }
  19.  
  20. int buscar_nmayor(int *v,int n){
  21. if(*v=='\0')return 0;
  22. else{if(*v>n)return buscar_nmayor(++v,n);
  23. else return buscar_nmayor(++v,n);}
  24. }


« Última modificación: 24 Mayo 2018, 23:18 pm por estudianteuv » En línea

XKC

Desconectado Desconectado

Mensajes: 128



Ver Perfil
Re: ¿Con qué carácter especial detengo un vector?
« Respuesta #1 en: 24 Mayo 2018, 23:16 pm »

Hola a todos, ¿qué tal?

Lo que pasa es que tengo este programa que adjuntaré, el cuál no sé si es correcto (espero puedan ayudarme en la función, si es que está mal) pero en fin, mi pregunta es que; ¿cuál es el carácter especial para detener un vector, por ejemplo en cadenas es '\0', como sabes, ¿pero en un vector?

Espero puedan ayudarme. Este es el programa:
Lo he compilado y funciona pero al final sale 0.

Código:
#include<stdio.h>
#define T 5

int buscar_nmayor(int *v,int n);

int main(){
int vct[T];
int mayor,i=0;
int num_mayor;

for(i=0;i<T;i++){
printf("Inserte valor %i del vector: ",i+1);
scanf("%i",&vct[i]);}
mayor=vct[0];
num_mayor=buscar_nmayor(vct,mayor);
printf("El numero mayor del vector es: %i",num_mayor);
return 0;
}

int buscar_nmayor(int *v,int n){
if(*v=='\0')return 0;
else{if(*v>n)return buscar_nmayor(++v,n);
else return buscar_nmayor(++v,n);}
}

Has probado con NULL??


En línea

Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse.
Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
estudianteuv

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: ¿Con qué carácter especial detengo un vector?
« Respuesta #2 en: 24 Mayo 2018, 23:19 pm »

Has probado con NULL??

Sinceramente no, y no sé como usarlo, ¿solamente escribo NULL? ¿O tengo que agregarle algo más?
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ¿Con qué carácter especial detengo un vector?
« Respuesta #3 en: 24 Mayo 2018, 23:55 pm »

NULL es un define de 0.
Lo que debes pasar a la función que reciba tu vector es el número de elementos que tiene.
En vez de pasar mayor, que no sirve de nada pues ese dato lo puedes sacar una vez dentro de la función, pásale el número de elementos, así podrás hacer un for desde 0 hasta ese máximo.
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.351


Ver Perfil
Re: ¿Con qué carácter especial detengo un vector?
« Respuesta #4 en: 25 Mayo 2018, 00:09 am »

De entrada no todas las cadenas acaban en null (carácter ASCII 0), solo las BString.
Hay cadenas de longitud fija, cuyo tamaño va justo delante del puntero al primer carácter. Estas no acaban sino en lo que tenga la propia cadena, si se rellenó de espacios, acabará en espacio, si no con lo que se rellenare.

Es decir es una convención que siguen muchos lenguajes, pero no es universal (no se aplica siempre)

Y en cuanto a los arrays, pasa lo mismoq ue con las cadenas de longitud fija, hay un descriptor (estructura), que delimita el tamaño del array. Que to sepa, ningún lenguaje implementa nada similar a una BString, para un array... la razón es que al contrario que una cadena que solo tiene sentido que tenga caracteres imprimibles (en general), en un array cualquier byte tiene igual probabilidad y sentido que aparezca, luego es imposible fijar un byte concreto para tal propósito, sin matar la útilidad de un array...
Imagina que cargas un fichero desde disco, el array finalizaría cuando encontrara x byte?.... es decir nadie, nunca, para nada, podría usar un determinado byte???... ni siquiera cuando procede de un resultado arimético?. A-B-S-U-R-D-O.
Ahora ya sabes porque no existe.

Para buscar en un array, necesitas saber el límite del array. Si yu ya declaras que el array tiene 'T' elementos, entonces ya sabes que el límite es 'T'.

Código:
entero = Funcion BuscarMayor(array X() , entero T)
    entero j, k

    j= x(0)
    bucle para k desde 1 hasta T-1
        si ( x(k) es mayor que j) luego
            j = x(k)
        fin si
    siguiente
    devolver j
fin funcion
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