Dev - C++ - Ayuda con este programa

   
Vista:

Ayuda con este programa

Publicado por Enrique (8 intervenciones) el 11/03/2015 23:58:38
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <cmath>
using namespace std;
float Producto(float a[], float b[], int n);
float Norma(float a[], int n);
float Coseno(float a[], float b[], int n);
int main()
{
    float a[100],b[100],x;
    int n,opcion;
 
    cout<<"Ingrese 1 si desea calcular el producto escalar de dos vectores\n";
    cout<<"Ingrese 2 si desea calcular la norma de un vector\n";
    cout<<"Ingrese 3 si desea calcular el coseno del angulo entre dos vectores\n";
    cout<<"Ingrese cualquier otra tecla para salir\n";
    cin>>opcion;
 
    switch(opcion){
                   case1:
                   cout<<"Ingrese la dimension de el vector\n";
                   cin>>n;
                   for(int i=0;i<n;i++){
                   cout<<"Componente "<<i+1<<" del vector a = ";
                   cin>>x;
                   a[i]=x;
                   }
                   for(int i=0;i<n;i++){
                   cout<<"Componente "<<i+1<<" del vector b = ";
                   cin>>x;
                   b[i]=x;
                   }
                   cout<<"El producto escalar de los vectores es: "<<Producto(a,b,n)<<endl;
                         break;
                   case2:
                         cout<<"Ingrese la dimension de los vectores"<<endl;
                         cin>>n;
                         for(int i=0;i<n;i++){
                         cout<<"Componente "<<i+1<<" del vector a = ";
                         cin>>x;
                         a[i]=x;
                         }
                         cout<<"La norma del vector a es: "<<Norma(a,n)<<endl;
                         break;
                   case3:
                         cout<<"Ingrese la dimension de los vectores\n";
                         cin>>n;
                         for(int i=0;i<n;i++){
                         cout<<"Componente "<<i+1<<" del vector a = ";
                         cin>>x;
                         a[i]=x;
                         }
                         for(int i=0;i<n;i++){
                         cout<<"Componente "<<i+1<<" del vector b = ";
                         cin>>x;
                         b[i]=x;
                         }
                         cout<<"El coseno del angulo entre los dos vectores es: "<<Coseno(a,b,n)<<endl;
                         break;
                   default:
                         cout<<"Ha elegido salir\n";
                         break;
                         }
    return 0;
}
float Producto(float a[], float b[], int n)
{
      float prod,x;
      cout<<"Ingrese la dimension de el vector\n";
    cin>>n;
    for(int i=0;i<n;i++){
            cout<<"Componente "<<i+1<<" del vector a = ";
            cin>>x;
            a[i]=x;
            }
    for(int i=0;i<n;i++){
            cout<<"Componente "<<i+1<<" del vector b = ";
            cin>>x;
            b[i]=x;
            }
      for(int i=0;i<n;i++)
      prod+=a[i]*b[i];
 
      return prod;
}
float Norma(float a[],int n)
{
      float nor;
      for(int i=0;i<n;i++)
      nor+=a[i]*a[i];
 
      return nor;
}
float Coseno(float a[], float b[], int n)
{
      float cos,prod,nor;
      for(int i=0;i<n;i++){
      prod+=a[i]*b[i];
      nor+=a[i]*a[i];
      }
      cos=prod/(sqrt(nor*prod));
       return cos;
}

Al ejecutar, introduzco una opción (1,2 o 3) pero no importa cual elija, no hace las asignaciones de cada case, simplemente se salta de un solo al default, hay algo malo??
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

Ayuda con este programa

Publicado por Rene gar (50 intervenciones) el 12/03/2015 01:42:42
No llenes los switch de codigo ya que puede generar errores ya que aveces no lee todas las lineas te aconsejo meterlos en funciones o metodos y desde ahi lo vas encapsulando de mejor forma

y respecto a porque te da error es que pusistes "case1" pegado cuando deberia ser "case 1:" asi

te dejo este codigo

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <cmath>
using namespace std;
float Producto(float a[], float b[], int n);
float Norma(float a[], int n);
float Coseno(float a[], float b[], int n);
 
 
void metodo1(float a[],float b[],int n, int x);
void metodo2(float a[],int n, int x);
void metodo3(float a[],float b[],int n, int x);
 
 
 
int main()
{
float a[100],b[100],x;
int n,opcion;
 
cout<<"Ingrese 1 si desea calcular el producto escalar de dos vectores\n";
cout<<"Ingrese 2 si desea calcular la norma de un vector\n";
cout<<"Ingrese 3 si desea calcular el coseno del angulo entre dos vectores\n";
cout<<"Ingrese cualquier otra tecla para salir\n";
cin>>opcion;
 
switch(opcion){
case 1:
    metodo1(a,b,n,x);
    break;
 
case 2:
    metodo2(a,n,x);
    break;
 
case 3:
    metodo3(a,b,n,x);
    break;
 
 
default:
    cout<<"Ha elegido salir\n";
    break;
}
 
 return 0;
}
 
 
 
/////////////implementacion de metodos o funciones///////////////////////////////////////////////////////////////77
 
void metodo1(float a[],float b[],int n, int x){
 
    cout<<"Ingrese la dimension de el vector\n";
    cin>>n;
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector a = ";
    cin>>x;
    a[i]=x;
    }
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector b = ";
    cin>>x;
    b[i]=x;
    }
    cout<<"El producto escalar de los vectores es: "<<Producto(a,b,n)<<endl;
}
 
 
void metodo2(float a[],int n, int x){
 
    cout<<"Ingrese la dimension de los vectores"<<endl;
    cin>>n;
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector a = ";
    cin>>x;
    a[i]=x;
    }
    cout<<"La norma del vector a es: "<<Norma(a,n)<<endl;
}
 
void metodo3(float a[],float b[],int n, int x){
    cout<<"Ingrese la dimension de los vectores\n";
    cin>>n;
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector a = ";
    cin>>x;
    a[i]=x;
    }
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector b = ";
    cin>>x;
    b[i]=x;
    }
    cout<<"El coseno del angulo entre los dos vectores es: "<<Coseno(a,b,n)<<endl;
}
 
 
float Producto(float a[], float b[], int n)
{
    float prod,x;
    cout<<"Ingrese la dimension de el vector\n";
    cin>>n;
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector a = ";
    cin>>x;
    a[i]=x;
    }
    for(int i=0;i<n;i++){
    cout<<"Componente "<<i+1<<" del vector b = ";
    cin>>x;
    b[i]=x;
    }
    for(int i=0;i<n;i++)
    prod+=a[i]*b[i];
 
    return prod;
}
float Norma(float a[],int n)
{
    float nor;
    for(int i=0;i<n;i++)
    nor+=a[i]*a[i];
 
    return nor;
    }
    float Coseno(float a[], float b[], int n)
    {
    float cos,prod,nor;
    for(int i=0;i<n;i++){
    prod+=a[i]*b[i];
    nor+=a[i]*a[i];
}
    cos=prod/(sqrt(nor*prod));
    return cos;
}
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

Ayuda con este programa

Publicado por Horacio (8 intervenciones) el 12/03/2015 20:34:42
Que error mas tonto!!!!!!! :00
no me habia dado cuenta que puse pegado los cases, bueno gracias por la ayuda
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