elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
18 Noviembre 2008, 11:11  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  Vectores!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Vectores!  (Leído 297 veces)
Nocturno7cr

Desconectado Desconectado

Mensajes: 21



Ver Perfil
Vectores!
« en: 06 Agosto 2008, 20:57 »

Hola de nuevo!!
Estoy ahora intentando comprender a nuestros amigos los vectores con un problema que debe mostrar por pantalla si contiene algun valor cero y si es creciente.

PD:Por favor ,no quiero un codigo hecho quiero que reactiveis ,con comentarios,la maquina oxidada que hay en mi cabeza,gracias!


Código
#include<stdio.h>
#include<conio.h>
#include<iostream>
main()
{
     int i,max=10,a;
     bool ok=!true;
 
     printf("\nTeclee numero de elementos (maximo 10): \n");
     scanf("%d",&max);
 
     typedef int vector [max];
 
     vector n;
 
 
 
     for(i=0;i<max;i++)
     {    
         printf("\nDame elemento :\n");
         scanf("%d",&a);          
 
         if(n[i]==0)
         ok=true;
 
     }
     printf("\nSi,contiene algun 0\n");
 
     system("PAUSE");
     fflush(stdin);
     getchar();
}                  
 
« Última modificación: 06 Agosto 2008, 22:16 por Nocturno7cr » En línea
Kerber0

Desconectado Desconectado

Mensajes: 103

Yo me Amo!


Ver Perfil
Re: Vectores!
« Respuesta #1 en: 06 Agosto 2008, 21:58 »

if(n=0), esta condicion siempre es verdadera ya que asignas a n=0, para comparar usa el '=='
En línea

Flakito81

Desconectado Desconectado

Mensajes: 378



Ver Perfil
Re: Vectores!
« Respuesta #2 en: 07 Agosto 2008, 02:24 »

Veo varias cosas extrañas:

1- Cuando se declara
Código:
typedef int vector [max];
max deberia de ser una constante y no una variable. Este tipo de declaraciones es para que se reserve espacio en tiempo de compilación, para hacer un vector dinámico existe el malloc.
2- utilizas iostream: esta cabecera es especifica del  C++, y no del C, y tu programa está escrito en este último. Si lo has puesto por el bool, resulta mejor que te crees una  variable short int y luego crees unas macros con true 1 false 0 (el false tmb existe y es más fácil de identificar q el !true, aunque el resultado sea el mismo)
3- No inicializas el vector: Cuando declaras un vector (o cualquier otra variable) no sabes que valor toman, asi q spara comenzar a trabajar con el vector has de darle valores.
4- La variable a no la estas utilizando.
5- el n == 0, pues lo mismo que el paso 3.


Imagino que la variable a la quieres utilizar para darle valores a la posición, y con el if pretendes encontrar si hay un cero, ¿pero para eso te hace falta utilizar un vector? Lo lógico es que leas el número de veces que vas a repetir el proceso y que sea la propia variable a la que kieras evaluar, saliendo si se teclea un cero (0).
Como es normal el bucle menos apropiado (aunque se puede mejorar un poco) es el for, lo mejor sería un do-while o un while controlando las dos condiciones de parada que seria i>man y a == 0.
Tal como tienes el código al encontrar un cero(0) el bucle terminaría a las max-iteraciones cuando no hace falta ya que se puede salir a la primera coincidencia.

Saludos!

En línea
ghastlyX
Moderador Global
*****
Desconectado Desconectado

Mensajes: 1.717


No es posible conseguir nada sin arriesgarse algo


Ver Perfil
Re: Vectores!
« Respuesta #3 en: 07 Agosto 2008, 13:25 »

Hay dos cosas que he dicho ya varias veces que me molestan bastante:
- conio.h NO es estándar, no se debe usar, lo único que hace es generar malos hábitos, aparte de que realmente no la utilizas en este código.
- fflush no tiene comportamiento definido con stdin, no hay que usarlo así.

Ahora vamos al programa, lo de comprobar si hay ceros está mal, pase lo que pase muestra que sí que hay tal y como está el código. Deberías añadir antes del printf algo así:
Código
if(ok) printf("\nSi,contiene algun 0\n");

Además, en el bucle también hay un fallo, ya que el número introducido lo recoges con la variable a, pero antes de meterlo en el vector, que ni lo haces, comparas si el vector es cero. Si quieres usar vectores para el programa, lo que no es realmente necesario, haz algo así:
Código
scanf("%d",&n[i]);

Y finalmente, como ya te han dicho, el bucle es inútil que si sólo mira si hay ceros siga mirando cuando ha encontrado ya uno. Ahora da igual, pero si en vez de 10 el máximo fueran 20000, habría bastante diferencia... añade a la condición del bucle que no haya ningún cero:
Código
for(i=0;i<max && !ok;i++)

Un saludo de ghastlyX ;)
En línea
ҒrεακΠιи∂

Desconectado Desconectado

Mensajes: 155



Ver Perfil
Re: Vectores!
« Respuesta #4 en: 08 Agosto 2008, 01:30 »

Buenas

if(n[ i]=0), esta condicion siempre es verdadera ya que asignas a n[ i]=0, para comparar usa el '=='
En realidad es siempre falsa, pero es solo un detalle

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C
EvilGoblin

Desconectado Desconectado

Mensajes: 882


LAIN IS LAIN


Ver Perfil
Re: Vectores!
« Respuesta #5 en: 09 Agosto 2008, 15:12 »

Código:
int *vector;
int cantidad =0;

vector = (int *) malloc(2*sizeof(int));

if (vector == NULL)
{
    printf("Error al Solicitar memoria\r\n");
    exit(1);
}

while(1)
{
printf("ingrese un valor: ");
scanf("%i";&vector[cantidad]);
if(vector[cantidad] ==0)
break;

cantidad++;
vector= (int *) realloc((2+cantidad)*sizeof(int));
}


for(int i=0;i<cantidad;i++)
{
printf("%i) %i\r\n",i,vector[i]);
}



algo asi seria xD

no lo probe :P no tengo un compilador a mano


pero fijate si funciona y sino . es poco lo que hay q modificar =)

:P es la mejor forma
En línea



Experimental Serials Lain
Enrikz

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Vectores!
« Respuesta #6 en: 13 Agosto 2008, 17:33 »

No entiendo por qué os complicáis tanto:
Código
#include <iostream>
#include <vector>
using namespace std;
int main()
{
   int n;
   cin >> n; //numero elementos
   vector<int> v(n,0);
   for(int i=0;i<n;i++) cin >> v[i];  //entrada de los n elementos
   bool is=0;
   for(int i=0;i<n and !is;i++) is=(v[i]==0);
   if(is) cout << "Almenos uno es cero" << endl;
   else cout << "No hay ningun cero" << endl;
}
 

Y para compilar: g++ archivo.cpp -o archivo.exe -O2
En línea
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC