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 - Sword9K

#1
gracias, ya he podido arreglar el programa. Sobre el problema, lo hice con el depurador y vi que, al poner un numero en el for, al menos el ciclo si terminaba, si utilizaba ne, después de usar pun+i, cambiaba el valor de ne y no terminaba, o cambiaba el valor de los string.

En el programa deje solo un puntero en el struct.

Código (cpp) [Seleccionar]

struct notas{

...

}*pun;


y luego en la funcion capt(), puse un arreglo dinamico.

Código (cpp) [Seleccionar]

void capt(){
system("pause");
gt(15,10); cout<<"Digite el Numero de Formularios a agregar: "; cin>>ne;

pun = new notas [ne];

for(int i=0;i<ne;i++){
...
}


Ademas, cambie el fflush() con el cin.ignore() y utilice el cin.getline() con los punteros.
#2
Gracias.

Ya pude entender mejor donde estaba el problema de los punteros, voy a intentar hacerlo con un array de estructuras, no entiendo muy bien la libreria vector xD.

Lo del problema es que, como el puntero accedia a un memoria que no tenia reservada, me cambiaba algunas variables, por ejemplo.

Código (cpp) [Seleccionar]

void capt(){
system("cls");
gt(15,10); cout<<"Digite el Numero de Formularios a agregar: "; cin>>ne;
const int ju = ne;

for(int i=0;i<ju;i++){
formu();
fflush(stdin);
gt(23,9); gets((pun+i)->cod);
gt(24,11); gets((pun+i)->nom);
gt(26,12); gets((pun+i)->apel);
gt(23,14); cin>>(pun+i)->n1;
gt(23,15); cin>>(pun+i)->n2;

(pun+i)->defi=((pun+i)->n1+(pun+i)->n2)/2;
gt(38,17); cout<<(pun+i)->defi;
system("pause");
}
ne = ju;
}


Con ne, la variable para pedir el numero de formularios para el for, como que cambiaba su valor y no salia del for, por eso agregue una constante "const int ju", digamos para solucionarlo y que su valor no cambiara, pero aun asi tambien cambiaba los demas valores.

Ya lo unico que me no entiendo es,  si pongo un numero cualquiera en el for, ya me salen los datos bien. Como ejemplo, pongo que solo se hagan 3 formularios, y eso ya arregla el problema.

Código (cpp) [Seleccionar]

void capt(){
system("cls");

for(int i=0;i<3;i++){
formu();
fflush(stdin);
gt(23,9); gets((pun+i)->cod);
gt(24,11); gets((pun+i)->nom);
gt(26,12); gets((pun+i)->apel);
gt(23,14); cin>>(pun+i)->n1;
gt(23,15); cin>>(pun+i)->n2;

(pun+i)->defi=((pun+i)->n1+(pun+i)->n2)/2;
gt(38,17); cout<<(pun+i)->defi;
system("pause");
}
}

#3
Hola, es sobre un problema que estoy teniendo a la hora de mostrar unos datos con punteros, lo que pasa es que uno de los datos que ingreso se "cambia" por un carácter especial o algo así.

Aquí esta parte del código, perdón si esta asi, lo copie rápido.

Código (cpp) [Seleccionar]

#include <string.h>
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

void gt(int x, int y){             // -Posicion X y Y en el Programa
HANDLE Manipulador;  //Puntero
COORD Coordenadas; //Coordenadas
Manipulador = GetStdHandle(STD_OUTPUT_HANDLE); //Contenedor del Programa
Coordenadas.X = x; //Posicion en X
Coordenadas.Y = y; //Posicion en Y
SetConsoleCursorPosition(Manipulador,Coordenadas); //Envia el Contenedor y variable para la posicion
}

void formu(){
system("cls");
gt(15,9); cout<<"Codigo: ";
gt(15,11); cout<<"Nombres: ";
gt(15,12); cout<<"Apellidos: ";
gt(15,14); cout<<"Nota 1: ";
gt(15,15); cout<<"Nota 2: ";
gt(15,17); cout<<"Su Nota Definitiva es: ";
}

struct notas{
char nom[50];
char apel[50];
char cod[50];
float n1, n2;
float defi;
}alu, *pun=&alu;

void capt();
void list();
void consul();
int ne;

int main(){
char op;
do{
system("cls");
gt(20,10); cout<<"MENU REGISTROS";
gt(22,12); cout<<"1. Capturar.";
gt(22,13); cout<<"2. Consultar registros.";
gt(22,14); cout<<"3. Salir.";

gt(23,16); cout<<char(167)<<"Digite un numero: "; op = getch();

switch(op){
case '1':
capt();
break;
case '2':
consul();
break;
case '3':
gt(6,18); cout<<"Saliendo...";
Sleep(200);
gt(5,25); exit(1);
break;
default:
gt(6,18); cout<<"Debe digitar un numero del 1 al 3...";
system("pause");
break;
}
}
while(op != '3');
}

void capt(){
system("cls");
gt(15,10); cout<<"Digite el Numero de Formularios a agregar: "; cin>>ne;
const int ju = ne;

for(int i=0;i<ju;i++){
formu();
fflush(stdin);
gt(23,9); gets((pun+i)->cod);
gt(24,11); gets((pun+i)->nom);
gt(26,12); gets((pun+i)->apel);
gt(23,14); cin>>(pun+i)->n1;
gt(23,15); cin>>(pun+i)->n2;

(pun+i)->defi=((pun+i)->n1+(pun+i)->n2)/2;
gt(38,17); cout<<(pun+i)->defi;
system("pause");
}
ne = ju;
}

void consul(){
char op;
do{
system("cls");
gt(20,10); cout<<"MENU - Consultas";
gt(22,12); cout<<"1. Listar.";
gt(22,13); cout<<"2. Volver al menu anterior";
gt(22,14); cout<<"3. Salir";

gt(23,16); cout<<"Digite un numero: "; op = getch();

switch(op){
case '1':
list();
break;
case '2':
gt(6,18); cout<<"Volviendo...";
Sleep(200);
main();
break;
case '3':
gt(6,18); cout<<"Saliendo...";
Sleep(200);
gt(5,25); exit(1);
break;
default:
gt(6,18); cout<<"Digite un numero del 1 al 3...";
system("pause");
break;
}
}
while(op != '4' || op == '2');
system("pause");
}

void list(){
system("cls");
fflush(stdin);
if((pun)->defi == 0){
gt(15, 10); cout<<"No se Encontraron Registros...";
}
else{
gt(16,8); cout<<"--- REGISTROS ---";

gt(3,10); cout<<"No.";
gt(7,10); cout<<"Codigo";
gt(17,10); cout<<"Nombre";
gt(33,10); cout<<"Apellido";
gt(47,10); cout<<"Nota 1";
gt(57,10); cout<<"Nota 2";
gt(67,10); cout<<"Definitiva";

for(int i=0;i<ne;i++){
gt(3,i+12); cout<<i+1;
gt(7,i+12); cout<<(pun+i)->cod;
gt(17,i+12); cout<<(pun+i)->nom;
gt(32,i+12); cout<<(pun+i)->apel;
gt(47,i+12); cout<<(pun+i)->n1;
gt(57,i+12); cout<<(pun+i)->n2;
gt(67,i+12); cout<<(pun+i)->defi;
}
system("pause");
}
}


Y asi me queda cuando quiero mostrar los registros.

               --- REGISTROS ---

  No. Codigo    Nombre          Apellido      Nota 1    Nota 2    Definitiva

  1   32GRE     ANDRES         SUR            45        20        32.5
  2   AH3H2     ♥              PEREZ          34        50        42
  3   4H2BG     ESTEBAN        HONZ           45        35        40Presione una tecla para continuar . . .
#4
Hola, soy nuevo con lo de Paginas web y me gustaría saber como hacer que un usuario que entra a una pagina, pueda modificar o implementar algo en ella (agregar un texto, foto etc.). ya teniendo conocimiento de como hacer un login y todo eso con php. :-*
#5
 :D Hola, Necesito guardar un número de elementos en un arreglo y luego que sean escritos en el programa.

Por ejemplo en un programa que me pase un numero a binario, utilice una sentencia while que me daría cada resultado de la división, Pero ahora quiero es guardar esos resultados en un arreglo.

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

using namespace std;

int main(){  //Numero a Binario
   int numero, resto, mostr=0, binario[500], div=2;
   int i=0;
   
   cout <<"\nIngrese el Numero:";
   cin>>numero;
   
   while(numero>=div){
                      mostr = mostr + 1;
                      resto = numero;
                     
                      numero = numero / div;
                      resto = resto % div;
                     
                      resto = binario[i];
   }
                               
   for(int i=0;i<mostr;i++){
           cout<<"\n--------------------------------";
           cout<<"\n"<<binario[i];
   }
                               
                                                             
getch();
return 0;
}
#6
:0, Esta Perfecto me siento pendejo pero bn. mi error era que utilizaba una variable int para cada arreglo. Muchas Gracias por ayudarme, es increíble. ;D
#7
Es crear un programa que realice las medidas de dispersión en datos agrupados, pero como este utiliza dos arreglos, uno para los datos y luego otro para la frecuencia de cada uno. de estos toca sacar el promedio, desviación al cuadrado, de esa desviación multiplicarla por la frecuencia etc. el programa creo que esta bien, pero no se que pasa en la desviación al cuadrado que creo que los datos salen mal
#8
ya corregí algunas cosas en el arreglo para pedir los valores, pero no se que es lo que podría estar mal en la desviación por la frecuencia.


#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

int main(int argc, char** argv) {
   
   ddouble  numeros[500], numeros2[500], numeros3[500], n;
                                double  fre=0, coef=0, des=0, varia=0, suma=0, media=0, suma2=0;
                               
                               
                                cout <<"\nDigite el Numero de Datos:";
                                cin>>n;
                               
                                for(int i=0, j=0, k=0;i<n && j<n && k<n;i++ && j++ && k++){     
                                               
                                               cout <<"\n-Digite el numero: ";
                                               cin>>numeros[i];
                                               cout <<"\n-Digite la Frecuencia del Dato: ";
                                               cin>>numeros2[j];
                                               
                                               fre = fre + numeros2[j];
                                               
                                               numeros3[k] = numeros[i] * numeros2[j] ;
                                               //cout <<"\n X.F:"<<numeros3[k];
                                               suma = suma + numeros3[k];
                                }
                                media = suma / fre;
                                cout<<"\n Promedio:"<<media;
                               
                                for(int i=0;i<n;i++){
                                        numeros[i]= numeros[i] - media;
                                        numeros[i]= pow(numeros[i],2);
                                        cout<<"\nDesviacion al cuadrado: "<<numeros[i];
                                }
                               
                                for(int i=0, j=0;i<n && j<n;i++ && j++){
                                       numeros2[j] = numeros2[j] * numeros[i];
                                       cout<<"\nDesviacion por la Frecuencia: "<<numeros2[j];
                                       suma2 = suma2 + numeros2[j];
                                }
                               
                                varia = suma / fre;
                                cout<<"\nLa Varianza es: "<<varia;
                               
                                des = sqrt(varia);
                                cout<<"\nLa Desviacion Estandar es: "<<varia;
                               
                                coef = (des*100)/media;
                                cout<<"\nCoeficiente de Variacion: "<<coef;
getch();
return 0;
}
#9
wow, el problema era que sobrepasaba, entonces si cambio arriba en for(int j=0;j<n-1;j++){    , creo que ya estaría. pero ahora uno de los problemas es el rango que no se como podría seleccionar el dato mayor y dato menor sin seleccionarlos todos.




aunque si en amp =numeros[i-01] cambio i por n me daría error de invalido.



Mod: Prohibido el doble o triple post. Usa el botón "Modificar".
#10
No veo que pueda estar mal, aunque... creo que el problema empieza con el ordenamiento.

Código (cpp) [Seleccionar]

#include<iostream>
#include<conio.h>
#include<math.h>

using namespace std;

int main(){
             int l=0;
             double  numeros[500], j, aux, n, deses=0, coef=0, pos = n/2, suma=0, media=0, varia=0, amp=0;
             
             //Amplitud de Variación de los Datos

             cout<<"Digite el Numero de Elementos: ";
             cin>>n;
             
             for(int i=0;i<n;i++){
                     cout<<"digite un numero: "<<endl;
                     cin>>numeros[i];
             }
             for(int i=0;i<n;i++){  //Ordenamiento
                              for(int j=0;j<n-1;j++){
                                      if(numeros[j]>numeros[j+1]){
                                                                  aux = numeros[j];
                                                                  numeros[j] = numeros[j+1];
                                                                  numeros[j+1] = aux;
                                                                  }
                                      }
                              }
             for(int i=0;i<n;i++){
             cout<<"Numeros en Orden: ";
             cout<<" - "<<numeros[i]<<endl;
             suma = suma + numeros[i];
             amp =numeros[i-01]-numeros[0];
             }
             
             media = (suma)/(n);
             cout<<"El Rango es: "<<amp<<endl;        
             cout<<"La Media Aritmetica es: "<<media<<endl;
             
             for(int i=0;i<n;i++){
                     numeros[i]= numeros[i]- media;
             cout<<"Desviacion: ";
             cout<<" - "<<numeros[i]<<endl;
             }
             
             for(int i=0;i<n;i++){
                     numeros[i]= pow(numeros[i],2);
             cout<<"Desviacion al Cuadrado: ";
             cout<<" - "<<numeros[i]<<endl;
             suma = suma + numeros[i];
             }
             
             varia = (suma)/(n-1);
             cout<<"Varianza: "<<varia<<endl;
             
             deses = sqrt(varia);
             cout<<"Desviacion Estandar: "<<deses<<endl;
             
             coef = (deses*100)/media;
             cout<<"Coeficiente de Variacion: "<<coef;
             cout<<"% ";

getch();
return 0;
}