me pueden ayudar con este arreglo en programacion c++, muchas gracias
Resuelve el problema que se presenta a continuación:
Crea un arreglo de tipo entero, pregunta al usuario cuántos valores enteros va a capturar, esa cantidad será la longitud del arreglo. Tener un menú con las siguientes opciones:
1. Capturar valores
2. Ordenar valores
3. imprimir valores originales
4. imprimir valores ordenados
5. Salir
Cuando se oprima la opción de salir deberá preguntar al usuario si desea salir o no antes de salir del programa, mientras el usuario no desee salir regresar al menú.
Respuestas
Estoy intentando hacer el siguiente programa con uso de arreglo unidimensional:
Crea un arreglo de tipo entero, pregunta al usuario cuántos valores enteros va a capturar, esa cantidad será la longitud del arreglo. Tener un menú con las siguientes opciones:
Capturar valores
Ordenar valores
imprimir valores originales
imprimir valores ordenados
Salir
El código que tengo es el siguiente, pero, ¿Cómo hacer que el usuario ingrese la cantidad de arrays que quiere?
#include <stdio.h>
#define TAMANIO 15 /*define los tamaños de los arreglos*/
void procesa( int resp[] ); /*prototipo de funcion*/
void ordena_arreglo( int a[] ); /*prototipo de funcion*/
void imprime_arreglo( const int a[] ); /*prototipo de funcion*/
int main(){/*la función main comienza la ejecución del programa*/
int respuesta[TAMANIO];
int i, total=0;
printf("\n\tPrograma que almacena en arreglos digitos para despues ser ordenados\n\n\n");
printf("Ingrese los 15 numeros enteros:\n");
for( i=0; i < TAMANIO; i++ ){
printf("\n\t\t\tIntroduzca valor [%d]: ", i);
scanf("%d", &respuesta[i]);
}/*fin de for*/
procesa( respuesta );/*fución qu procesa las respuestas*/
printf("\n\n");
system("pause");
return 0;
}/*fin de la función main*/
void procesa( int resp[] ){/*ordena el arreglo e imprime por pantalla*/
printf("\n\nEl arreglo llamado respuestas desordenado es: \n");
imprime_arreglo( resp );/*muestra el arreglo desordenado*/
ordena_arreglo( resp );/*ordena el arreglo*/
printf("\n\n\nEl arreglo llamado respuesta ordenado es: \n");
imprime_arreglo( resp );/*muestra el arreglo ordenado*/
}/*fin de la función procesa*/
void ordena_arreglo( int a[] ){/*función que ordena un arreglo*/
int pasada; /*contador de pasadas*/
int j; /*contaodr de pasadas*/
int almacena;/*ubicación temporal utilizada para intercambiar los elementos*/
for ( pasada = 1; pasada < TAMANIO; pasada++ ){/*ciclo para controlar el número de pasadas*/
for ( j = 0; j < TAMANIO - 1; j++ ){/*ciclo para controlar el número de comparaciones por pasada*/
if ( a[ j ] > a[ j + 1 ] ){/*intercambia los elementos si no se encuentran en orden*/
almacena = a[ j ];
a[ j ] = a[ j + 1 ];
a[ j + 1 ] = almacena;
}/*fin de if*/
}/*fin del for interno*/
}/*fin del for externo*/
}/*fin de la función ordena_arreglo*/
void imprime_arreglo( const int a[] ){/*muestra el contenido del arreglo (5 valores por línea)*/
int j; /* contador */
for ( j = 0; j < TAMANIO; j++ ){/*muestra el contenido del arreglo*/
if ( j % 5 == 0 ){/* comienza una nueva línea cada 5 valores*/
printf( "\n" );
}/*fin de ifend if*/
printf( "%3d", a[ j ] );
}/*fin de for*/
} /* fin de la función imprime_arreglo */
c array optimización
compartirmejorar esta pregunta
editada el 18 oct. 16 a las 23:10
ArtEze
2,286102561
formulada el 18 oct. 16 a las 22:45
Raul Samperio
111
añade un comentario
1 respuesta
activas más antiguas votos
1
Necesitas usar memoria dinámica. Te recomiendo que investigues sobre el funcionamiento de la función malloc ()
La memoria dinámica se utiliza cuando el ta
Es fácil, crea un entero que guarde el tamaño del arreglo y un arreglo con un numero alto de valores, de esta manera:
int main(){
int tam,arr[100]
}
Después pídele el tamaño al usuario:
cout<<“Digite el tamanio del vector; cin>>tam;
Y se hace un bucle para poner valores en el arreglo:
for(int i=0;i<tam;i++){
cout<<“Digite el valor para [“<<i<<“]: “; cin<<arr[i]
}
Y con eso ya tendras el tamaño del arreglo deseado por el usuario.
Espero haberte ayudado, Adiós.