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 - i-node

#1
[quote author=Geeke link=topic=451817.msg2068787#msg2068787 date=1462218147]
Esta algo complicado pero  ::)


[/quote]

Te van a recriminar el haberselo hecho y cerraran el hilo.

Lo que no entiendo es si debemos dar solo pistas o que. No le veo el sentido.
#2
Cita de: Sosar en  2 Mayo 2016, 20:20 PM
MAFUS: no creo lograr hacer eso soy un principiante aun

Pues empieza por algo mas simple.
#3
Cita de: qwery.azc en  2 Mayo 2016, 18:02 PM
divide y venceras... usa funciones te simplificara la vida

Estoy de acuerdo. Es solo que voy haciendo los ejercicios de un libro mientras aprendo C++ y, aunque ya se utilizar funciones, prefiero hacer los ejercicios con los datos que me ha dado el libro, porque tal vez sea para que aprenda ciertas caracteristicas de lo que me acaban de explicar en ese capitulo.
#4
En el codigo que te he puesto esta hecho asi.

No se pq te empeñas en seguir llamando a system y pause. Ese codigo no es portable y tampoco es seguro.



Ese codigo no va a compilar. Estas operando con la variable fila sin inicializar. Ademas no tiene mucho sentido esa variable, pero bueno.
#5
Desde el desconocimiento, pero.. Si estas programando en C++, por que incluyes headers de C y funciones como printf, cuando tienes cout? Y para rand y srand no te hace falta tampoco el header de C

#include <cstdlib>
#6
Lo he hecho deprisa y corriendo y reutilizando tu codigo, que me ire ahora a dormir.. Mañana si quieres te lo hago de cero. Asi a bote pronto, que recuerde..

No te recomiendo hacer ese using namespace std. Usa un using por cada funcion que vayas a utilizar. Debajo del include de su libreria.
Si pasas fila por referencia, no te hace falta hacer ningun return, ya que estas modificando la variable declarada en main directamente, asi que esa funcion debe ser sin retorno (void).
Las mayusculas se suelen usar para nombres de constantes si no me equivoco, no para un nombre de matriz.
No necesitas la funcion system para hacer eso, ademas su uso es muy peligroso, no te la recomiendo bajo ningun concepto.

Por cierto, ese codigo no compilaba.

Gracias a esto he aprendido que los arrays multidimensionales deben tener declarado el tamaño de al menos su primera dimension :D

Bueno, espero que te sirva.

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

#include <iomanip>

using std::setw;

#include <cstdlib>

const int N=3;
const int M=4;
int f,c;

void mostrar_matriz(int [N][M]);
void sumas(int [N][M],int [N]);
void busca_mayor(int [N],int &);


int main()
{
int MATRIZ[N][M],
Suma[N] = { 0 },
fila = 0,
pausa;

for(f=0;f<N;f++) {
for(c=0;c<M;c++) {
cout<<"Ingrese el elemento ("<<f<<" , "<<c<<") =";

cin>>MATRIZ[f][c];

while(MATRIZ[f][c]<0) {
cout<<"Los valores deben ser positivos\n"<<endl;
cout<<"Vuelva a ingresar el elemento ("<<f<<" , "<<c<<") =";
cin>>MATRIZ[f][c];
cout<<"\n\n";
}

}
}


mostrar_matriz(MATRIZ);

cout << "[C]ontinuar? ";
cin >> pausa;

sumas(MATRIZ, Suma);

busca_mayor(Suma, fila);

cout << "El elemento mayor es Suma[" << fila << "] = " << Suma[fila] << "\n";

return 0;
}

void mostrar_matriz(int MATRIZ[N][M]) {
cout<<"La matriz ingresada es: "<<endl;

for(f=0;f<N;f++) {
cout<<endl;
for(c=0;c<M;c++) {
cout<<setw(4)<<MATRIZ[f][c];
}
}

cout<<"\n\n";
}


void sumas(int MATRIZ[N][M],int Suma[N]) {
for(int i = 0; i < N; i++)
for(int j = 0; j < M; j++)
Suma[i] += MATRIZ[i][j];

for(int i = 0; i < N; i++)
cout << "Suma[" << i << "] = " << Suma[i] << "\n";
}

void busca_mayor(int Suma[N],int &fila) {
for(int i = 1; i < N; i++)
if(Suma[i] > Suma[fila])
fila = i;
}
#7
Lo siento, pero ese codigo no hay por donde cogerlo.. Te he hecho uno desde cero con el metodo de ordenamiento de burbuja. Espero que te sirva.

#include <iostream>

using std::cout;
using std::cin;

#include <cstdlib>

using std::rand;

void ordenaVector(int[], int);
void imprimeVector(int [], int);

int main() {
const int tamano = 9,
  numMax = 9;
int opcion,
    miVector[tamano];

cout << "1- Crear un vector ordenado."
<< "\n2- Crear un vector desordenado"
<< "\nOpcion: ";
cin >> opcion;

        for(int i = 0; i < tamano; i++)
                miVector[i] = rand() % numMax;

if(opcion == 1)
ordenaVector(miVector, tamano);

imprimeVector(miVector, tamano);

return 0;
}

void imprimeVector(int miVector[], int tamano) {
for(int i = 0; i < tamano; i++)
cout << "miVector[" << i << "] = " << miVector[i] << "\n";
}

void ordenaVector(int miVector[], int tamano) {
int temporal;

for(int pasada = 0; pasada < tamano -1 ; pasada ++) { // Ordenamiento metodo burbuja
for(int j = 0; j < tamano -1; j++)
if(miVector[j] > miVector[j + 1]) {
temporal = miVector[j];
miVector[j] = miVector[j + 1];
miVector[j + 1] = temporal;
} // fin del if
} // fin del for
}
#8
Cita de: Geeke en  1 Mayo 2016, 23:30 PM
El proceso para descifrar esto sería

if n >= 7
  n = n - 7
else
  n = n + 3



Muchas gracias!

Ejercicio terminado :)

#include <iostream>

using std::cout;
using std::cin;

int main() {
const int tamano = 4;
int numero = 0, numeroTmp[4], cont = tamano -1;

while(numero == 0) {
cout << "Introduce el numero cifrado: ";
cin >> numero;
}

while(numero != 0) {
numeroTmp[cont] = (numero % 10);
numero /= 10;
cont--;
}

numero = numeroTmp[0];
numeroTmp[0] = numeroTmp[2];
numeroTmp[2] = numero;

for(cont = 0; cont < tamano; cont++)
if(numeroTmp[cont] >= 7)
numeroTmp[cont] -= 7;
else
numeroTmp[cont] +=3;

cout << "\nEl numero descifrado es: " ;

for(int cont = 0; cont < tamano; cont++)
cout << numeroTmp[cont];

cout << "\n";

return 0;
}
#9
Cita de: boctulus en  1 Mayo 2016, 22:21 PM
Lo que te dice @MAFUS es:

decript(encryp(valor)) = valor

Es un tipo de encriptacion simple porque la funcion es biyectiva, en la vida real no pasa eso  ;D




No habia leido ese termino (funcion biyectiva) en mi vida. Tendre que investigar y buscar codigo de ejemplo en Google.

Cita de: MAFUS en  1 Mayo 2016, 22:30 PM
cifrado: Sumar 7 al valor. Si el resultado es mayor de 10 restarle 10.
Visto así sacar el descifrado no debe ser difícil.

No, no le resta 10 si es mayor de 10, hace un modulo, no una division.
#10
Cita de: MAFUS en  1 Mayo 2016, 21:59 PM
Yo lo he sacado con papel y boli  ;D

Pero bueno: aquí va una pista... dos pistas en una sola idea:

1 => 8
5 => 2

entonces

2 => 5
8 => 1

¿Qué ves?

Unas equivalencias, no? Que cada numero, cifrado, siempre tendra un valor. Es decir, el 1, tras encriptarlo, siempre tendra un valor de 8 y el 5 de 2.

Muchas gracias.