Dev - C++ - Ayuda con arreglos

 
Vista:

Ayuda con arreglos

Publicado por Mariano (3 intervenciones) el 17/09/2019 19:44:54
Tengo que hacer un programa que identifique si un caracter es numérico o es una letra, esto convirtiendo a codigo ascii; y los ordene de mayor a menor o menor a mayor con un switch, pero cuando quiero ordenar el arreglo de numeros e imprimirlos se imprime el codigo ascii. Descompuse el codigo y me quede con la parte numerica, ordenar de menor a mayor pero imprime el codigo ascii.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
int main(){
 
 
    int ascii,c;
    int i,j,h,b;
    char ban,letra;
	char l[5];
    int a[5];
    char variable[5], numeros[5];
 
 
    for(int i=0;i<5;i++){
		//system("cls");
		printf("\nIngresa el caracter %i: ",i+1);
	    scanf("%c",&variable[i]);
        getchar();
 
        //codigo ascii
		printf("El caracter %c",variable[i]);
 
        ascii = variable[i];
        printf(" tiene codigo ascii: %d\n\n",ascii);
 
 
        //numeros
        if((ascii>=48)&&(ascii<=57)){
 
		 	printf ("El caracter es un numero\n");
		 	printf("------------------------\n");
 
 
		 	printf("El codigo ascii  %d",ascii);
            l[i] = toascii(ascii);
 
            printf(" tiene el caracter: %c\n\n",l[i]);
 
		}
 
        for(int i=0; i <5; i++){
 
            printf("%2c",l[i]);
 
        }
        for (i=0; i <5; i++)
            for (j=0; j <5; j++)
 
            if ( l[i] < l[j]){
                h= l[i];
                l[i]=l[j];
                l[j]=h;
            }
            //arreglo
 
        for(i=0; i <5; i++){
 
            printf("%3d", l[i]);
        }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Juan Manuel
Val: 59
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Ayuda con arreglos

Publicado por Juan Manuel (21 intervenciones) el 22/09/2019 03:14:41
No se si aun te sirve pero hice algo como esto :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <stdlib.h>
#include <iostream>
using namespace std;
const int MAX=50;
typedef char tvector [MAX];
void cargar (tvector &letras, int &ocup);
void mostrar (tvector letras, int ocup);
void numeroletras (tvector letras, int ocup);
void cambio (char &a,char &b);
void orden (tvector &letras, int ocup);
main (){
	tvector letras;
	int ocup=-1,opc;
	do{
	cargar (letras,ocup);
	cout << "Ingrese cualquier numero para continuar con el ingreso y 0 para terminar" <<endl;
	cin >> opc;
	}while (opc !=0);
	numeroletras ( letras,  ocup);
	orden ( letras,  ocup);
	system("pause");
}
 
void cargar (tvector &letras, int &ocup){
	if(ocup == MAX-1)
	cout << "vector lleno"<<endl;
	else{
		cout << "ingrese caracter"<<endl;
		ocup++;
		cin >> letras[ocup];
	}
}
 
void mostrar (tvector letras, int ocup){
	int i;
	for (i=0; i<=ocup; i++)
	cout << letras[i]<<endl;
}
 
void numeroletras (tvector letras, int ocup){
	int i;
	for (i=0; i<=ocup; i++)
	if (letras[i] >= '1' && letras[i] <= '9')
	cout << letras[i] << " es un numero" << endl;
	else
	  if (letras [i] >= 'A' && letras [i]<= 'z')
	  cout << letras[i] << " es una letra" <<endl;
}
 
void orden (tvector &letras, int ocup){
	int opc,i,j;
	bool band=false;
	cout << " 1-creciente | 2-decreciente" << endl;
	cin >> opc;
	switch(opc){
		case 1:
			while (band==false){
				band=true;
				for(i=0; i < ocup; i++)
					if(letras[i]> letras[i+1]){
					cambio (letras [i], letras[i+1]);
					band=false;
					}
			}
			break;
		case 2: while (band==false){
				band=true;
				for(i=0; i < ocup; i++)
					if(letras[i]< letras[i+1]){
					cambio (letras [i], letras[i+1]);
					band=false;
					}
			}
 
			break;
		default : "ingreso erroneo";
	}
	mostrar ( letras,  ocup);
}
 
 
void cambio (char &a,char &b)
{
	int aux;
	aux =a;
	a=b;
	b=aux;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar