Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Estudiante000000

#31
Cita de: YreX-DwX en 16 Noviembre 2018, 03:26 AM
Muy bien, empecemos por partes.

Código (C++) [Seleccionar]

#include <iostream>
#include <stdlib.h>


Lo primero de todo parece que estás programando en C++. Por lo tanto sería recomendable usar el formato de las librerías de C++: una libreria C  se declararía como <libreria.h> como has hecho en <stdlib.h>. Su variante en C++ sería <clibreria>, es decir, que la misma librería quedaría <cstdlib>. El funcionamiento va a ser correcto de todos modos pero es simplemente por aclarar esto desde los comienzos de la programación. Por tanto sería conveniente modificarlo por:

Código (C++) [Seleccionar]

#include <iostream>
#include <cstdlib>


Dicho esto empecemos con el programa ya que veo algunos errores básicos. Creo que no es necesario analizar exhaustivamente las primeras líneas; en ellas declaramos 3 arrays (vectores) de tamaño 101, 3 variables i, j, z inicializadas a 1 y una variable valor. Es conveniente también no usar "números mágicos", estos son números que aparecen literales como el 101, por lo tanto el tamaño de los arrays es conveniente hacerlo con constantes, así si queremos cambiar el tamaño solo tenemos que cambiarlo en un sitio y el programa funcionaría correctamente:

Código (C++) [Seleccionar]

const int TAM = 101;
int valores[TAM], numeros[TAM], solucion[TAM];


Vamos a revisar el acceso a los arrays. Un array v[3] tiene tamaño = 3, va de 0 a 2, por lo tanto sus posiciones son v[0], v[1], v[2]. Visto esto el bucle quedaría así para poner todas las posiciones a 0:

Código (C++) [Seleccionar]

for (i = 0; i < TAM; i++) // CICLO FOR PARA RELLENAR LOS 3 VECTORES CON CEROS EN TODAS SUS POSICIONES.
{
  valores[i] = 0;
  numeros[i] = 0;
  solucion[i] = 0;
}


Pero esto no es necesario ya que si en la declaración hacemos:

Código (C++) [Seleccionar]

const int TAM = 101;
int valores[TAM] = {0}, numeros[TAM] = {0}, solucion[TAM] = {0};


Excepcionalmente si inicializamos los arrays así, se inicializarían todas las posiciones del array a 0.

El segundo bloque empezando en i = 1, guarda el doble de i (imagino que en la posición i del vector) e incrementa i en 1. Primero vemos que falta el índice del array como en el bucle anterior y en segundo lugar vemos que si i empieza en 1 la posición 0 no se modifica por lo que valores[0] = 0. Una alternativa es usar un bucle for y evitar el uso del 101 usando la variable TAM, también se puede evitar el uso de la variable valor (opcional). Esto quedaría:

Código (C++) [Seleccionar]

for (i = 1; i < TAM; i++) // ESTE CONDICIONAL ME VA GUARDAR LOS NUMEROS DE 2 EN 2 HASTA EL 200 EN LA VARIABLE VALORES .
{
  valor = i * 2;
  valores[i] = valor;
}


Excepcionalmente date cuenta que si la primera operación que hacemos sobre el array valores es de escritura no es necesario inicializarlo a 0 y simplemente empezando este segundo for en i = 0 el resultado obtenido sería el mismo, pero no es mala idea inicializar las variables en la declaración.

El tercer bloque es estructuralmente idéntico al segundo ya explicado por lo que puedes aplicar las mismas modificaciones. Recuerda siempre poner el índice al array, es fundamental.

El cuarto bloque... Vamos a corregirlo de raíz porque tiene graves problemas. Pero para ello necesito que me expliques cual es el funcionamiento deseado ya que tiene muchas interpretaciones posibles o si simplemente te han dado este código para que lo analices (de ser así un código un poco...). Bueno espero tu respuesta.

Ahora analizamos el bloque final. Me he dado cuenta ahora de que igual no sabías que la primera posición del array es la 0, no la 1.
El trozo de "Solucion = " hay que ponerlo antes del if ya que si la posición 1 es 0 pero las otras no, se escribirían las otras posiciones pero no aparecería "Solucion = " por pantalla. Además faltaba el índice dentro del for de <solucion>. El código quedaría algo así:

Código (C++) [Seleccionar]

cout << "Solucion = ";
if (solucion[0] != 0)
{
  cout << solucion[1];
}

for (i = 1; i < TAM; i++)
{
  if (solucion[i] != 0)
  {
   cout << " - " << solucion[i];
  }
}


Y para finalizar, comentarte que hay muchas referencias a evitar la llamada system("pause"). Como alternativa te recomiendo cin.get();
Puedes buscar información adicional sobre esto si te interesa.

PD: Viendo el funcionamiento del programa igual lo correcto era crear arrays de tamaño 100 y empezar metiendo el 1 en posición 0. Ya que es un valor que he visto que no se ha utilizado en toda la ejecución del programa. Te lo dejo a ti por si quieres intentarlo y me cuentas.
En cuanto a tu segunda pregunta no puedo darte una respuesta sin saber cual es el funcionamiento buscado en el bloque que he dejado sin explicar.

Vale muchísimas gracias por tu respuesta , estos codigos no los hago yo son así que nos lo da el profesor para que lo analizemos , tal cual digamos correr el programa en frío se que los arreglos empiezan de la posición 0 esto es muy correcto pero en el programa lo inicializo en 1 y declaro la dimensión del vector  en [101] porque a según nosotros en el laboratorio de la universidad no usas Dev c++ , si no el visual basic c++ , y  según acá  si lo declarase vector[100] no leria el programa la posición 100 si no desde la posición 0 a la posición 99 , saludos.
#32
Hola , bueno estos codigos los pone el profesor para que lo analizemos  , se que estos programas son algo confuso totalmente de acuerdo ,pero por eso pongo en los comentarios mis dudas se que hace el programa pero en donde puse los comentarios seria fantastisco que me aclararas esas dudas gracias amigo.
#33
Buenas noches quisiera saber el paso a paso de este programa osea en frio , el programa haya el determinante de una matriz cuadrada de 3x3 , pero quisiera saber el paso  a paso del programa , puse comentarios en las linea de codigo que no entiendo del programa , muchas gracias

Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;
int main()
{

int matriz[6][4];
int i, j;
int valor1=0, valor2=0, delta, aux;

for (i = 1; i <= 3; i = i + 1)
{
  for (j = 1; j <= 3; j = j + 1)
  {
   system("cls");
   cout << "Ingrese valor (" << i << "," << j << ")= ";
   cin >> matriz[i][j];
  }
}

for (i = 4; i <= 5; i = i + 1)
{
 
   matriz[i][1] = matriz[i - 3][1];
   matriz[i][2] = matriz[i - 3][2];
   matriz[i][3] = matriz[i - 3][3];
}


for (i = 1; i <= 3; i = i + 1)
{

  aux = matriz[i][1] * matriz[i + 1][2] * matriz[i + 2][3];
  valor1 = valor1 + aux;
  aux = matriz[i][3] * matriz[i + 1][2] * matriz[i + 2][1];
  valor2 = valor2 + aux;
}

delta = valor1 - valor2;

system("cls");
for (i = 1; i <= 3; i = i + 1)
{
  cout << "|" << matriz[i][1] << " , " << matriz[i][2] << " , " << matriz[i][3] << "|" <<endl ;
}

cout << "La resuesta es: " << delta<< endl;
system("PAUSE");
return 0;

}
#34
Continuando y  analizando este programa.

Hay que determinar
#¿ Que hace el programa ?
#¿ Cual es el valor de solucion[3] al finalizar el programa?

Código (cpp) [Seleccionar]




#include<iostream>
using namespace std;
int main()
{
int valores[101], numeros[101], solucion[101];
int i = 1,j=1,z=1;
int valor;

for (i = 0; i <= 100; i = i + 1)
{
 valores[i] = 0;
 numeros[i] = 0;
 solucion[i] = 0;
}

i = 1;
while (i<101)
{
 valor = i * 2;
 valores[i] = valor;
 i = i + 1;
}


for (i = 1; i <= 100; i = i + 1)
{
 valor = i * 3;
 numeros[i] = valor;
}




i = 1;

iterar:

for (j = 1; j <= 100; j = j + 1)

{
 if (valores[i] == numeros[j])
 {
  solucion[z] = valores[i];
  z = z + 1;
 }
}

if (i <= 100)
{
 i = i + 1;
 goto iterar;
}




if (solucion[1] != 0)
{
 cout << "Solucion = " << solucion[1];
}

for (i = 2; i <= 100; i = i+1)
{
 if (solucion[i] != 0)
 {
  cout << " - " << solucion[i];
 }
}

cout << endl;

return i;


}

#35
Cita de: AlbertoBSD en 15 Noviembre 2018, 21:52 PM
Una pregunta muy burda, realmente sabes algo de C o de C++, por que tu codito tiene tanto iostream como stdio y realmente no estas usando nada de stdio.


La parte interesante de tu codigo es:

  i = i + 0.000001;
  calculo = i*i;


Donde itera sucesivamente cada 0.000001. hasta que encuentra un producto tal que i*i sea igual o un poco mayor al numero buscado.

Basicamente el programa realiza fuerza bruta probando "todas" las posibilidades, lo cual es INEFICIENTE

Saludos!

Muchisimas gracias saludos crack!
#36
Programación C/C++ / Re: Programa duda(solucionado)
16 Noviembre 2018, 00:58 AM
Cita de: Estudiante000000 en 15 Noviembre 2018, 20:55 PM
Buenas tardes a todos , tengo una gran duda que seria  de mucha ayuda que si me  la aclararan seria genial.

El siguiente programa es un programa que sin el uso de librerias calcula la raiz cuadrada de un numero , mi duda es la siguiente ¿ Cual es el funcionamiento ? , me refiero a que si me ponen el programa como yo se que se trata de calcular la raiz cuadrada  del numero , alguien me explica  que hace cada paso porfavor gracias.


#include<iostream>
#include<stdlib.h>

using namespace std;
int main()
{
int numero=0;
double i=0, calculo=0;


while (numero <= 1 || numero >= 100000)
{
 cout << "ingrese numero = ";
 cin >> numero;
}
while (calculo <= numero)
{
 i = i + 0.000001;
 calculo = i*i;
}

cout << "La solucion es = "<<i<<endl;
system("pause");
return i;

}


MUCHAS GRACIAS AL QUE PUEDA AYUDARME .


#37
Cita de: MAFUS en 15 Noviembre 2018, 22:04 PM
Básicamente empiezas con i que vale 0,000001
Y mientras el cuadrado de i no supere el número buscado se sumará 0,000001.
De hecho tu el programa tiene una falla. Lo verás en el ejemplo:

Por pasos y en vez de 0,000001 supongamos 1 para la suma. Y que 9 es el número al que se busca la raíz cuadrada.

i = 1
i * i < 9 : 1 * 1 = 1; 1 < 9? Sí, recalcula

i = i + 1: i = 1+1; i = 2
i * i < 9 : 2 * 2 = 4; 4 < 9? Sí, recalcula

i = i + 1: i = 2+1; i = 3
i * i < 9 : 3 * 3 = 4; 9 < 9? No, fin

Cómo ves, la condición para continuar el bucle es i * i < num. Si hubiera sido i * i <= num habría habido un recalculado e i hubiera valido 4. Y 4 es la raíz cuadrada de 16.

Excelente muchisimas gracias por tu  ayuda bien explicado.
#38
Programación C/C++ / Programa ayuda
15 Noviembre 2018, 20:55 PM
Buenas tardes a todos , tengo una gran duda que seria  de mucha ayuda que si me  la aclararan seria genial.

El siguiente programa es un programa que sin el uso de librerias calcula la raiz cuadrada de un numero , mi duda es la siguiente ¿ Cual es el funcionamiento ? , me refiero a que si me ponen el programa como yo se que se trata de calcular la raiz cuadrada  del numero , alguien me explica  que hace cada paso porfavor gracias.


#include<iostream>
#include<stdlib.h>

using namespace std;
int main()
{
int numero=0;
double i=0, calculo=0;


while (numero <= 1 || numero >= 100000)
{
 cout << "ingrese numero = ";
 cin >> numero;
}
while (calculo <= numero)
{
 i = i + 0.000001;
 calculo = i*i;
}

cout << "La solucion es = "<<i<<endl;
system("pause");
return i;

}


MUCHAS GRACIAS AL QUE PUEDA AYUDARME .