Dev - C++ - AYUDA.... error de compilación del ejercicio

   
Vista:

AYUDA.... error de compilación del ejercicio

Publicado por charly (5 intervenciones) el 07/12/2014 23:15:46
Hola comunidad de programadores, me podrian ayudar con este ejercicio que no compila bien

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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
 
int funcionclientes(); //Declaracion de una funcion para utilizarla posteriormente en el main()
 
int main()
{
funcionclientes(); //Llamado a la funcion clientes, la cual esta creada en la parte inferior
}
 
int funcionclientes(); //Inicio de la funcion clientes
{
int i;
 
struct clientes; //Se declara la estructura Clientes
{
 char nit[12];
   char nombre[20];
   char direccion[30];
   int telefono;
   char e_mail[25];
}
 
clientes_datos[1]; //arreglo para indicar que deseo guardar 2 Clientes
 
for (i=0; i<2; i++) //Ciclo for, para ir almacenando los datos que ingrese el usuario
 {
   cout<<"Ingrese los datos del cliente ";
   cout<<(i+1);
   cout<<"\n\n";
   cout<<"Ingre el NIT ";
   cin>>datos[i].nit;
   cout<<"Ingre el Nombre ";
   gets(datos[i].nombre);
   cout<<"Ingre la Direccion ";
   gets(datos[i].direccion);
   cout<<"Ingre el Telefono ";
   cin>>datos[i].telefono;
   cout<<"Ingre el e-mail ";
   cin>>datos[i].e_mail;
   cout<<"\n\n";
   system ("cls");
   }
system ("cls");
cout<<"Los Datos Ingresados Fueron: \n";
 
for (i=0; i<2; i++) //Cilo for de la estructura clientes para mostrar en pantalla los datos ingresados
 {
   cout<<"NIT: ";cout<<datos[i].nit;cout<<" ";
   cout<<"Nombre: ";cout<<datos[i].nombre;cout<<" ";
   cout<<"Direccion: ";cout<<datos[i].direccion;cout<<" ";
   cout<<"Telefono: ";cout<<datos[i].telefono;cout<<" ";
   cout<<"e-mail: ";cout<<datos[i].e_mail;cout<<"\n";
   }
 
    FILE *guardar_clientes; //Guardo en un archivo de texto, los datos de la estructura Clientes
    guardar_clientes = fopen("cliente.txt","ab+");
    fwrite(&datos,sizeof(datos),1,guardar_clientes);
    fclose(guardar_clientes);
 
    cout << "\nCliente Guardado Satisfactoriamente" << endl; //Informacion al usuario que se ha guardado la estructura
   getch();
   return 0;
   }
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.... error de compilación del ejercicio

Publicado por Capitan Kirk capitan.kirk09@gmail.com (44 intervenciones) el 09/12/2014 11:46:38
int funcionclientes(); //Declaracion de una funcion para utilizarla posteriormente en el main()

Al declarar el prototipo, si no vas a pasar parámetros a la función, debes poner void:

int funcionclientes (void);

Con la función main, pasa lo mismo:

int main()

Si no vas a utilizar argumentos, debes poner

int main(void)

Además, debes retornar un valor. Aunque no hay ninguna norma específica, al finalizar el programa la costumbre es devolver 0 si todo ha ido correctamente, o un valor distinto de 0 si ha habido algo raro (esta comprobación se haría, por ejempo, en un archivo de proceso por lotes que llame al programa). Por lo tanto, tu función main debería quedar

int main(void)
{
funcionclientes(); //Llamado a la funcion clientes, la cual esta creada en la parte inferior

return 0;
}

Cuando implementas la función funcionclientes, has puesto

int funcionclientes(); //Inicio de la funcion clientes

En primer lugar, te digo lo mismo que con el prototipo: Dado que no pasas parámetro, debes poner void.
Además, te sobra el punto y coma. Este lo pones en el prototipo, pero no en la implementación. Si lo pones en la implementación, probablemente te encuentres, primero, que te dice que la función ya está definida, y segundo, que a partir de ahí tengas un montón de errores, puesto que lo que viene debe estar dentro de una función y, como lo anterior te lo ha considerado un prototipo, las líneas que siguen ya no están donde deben.

Corrige esto. Una vez corregido, ya veremos el resto del programa.

Saludos,
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.... error de compilación del ejercicio

Publicado por CARLOS MURCIA carlosedm84@gmail.com (5 intervenciones) el 10/12/2014 02:39:09
Hola, corregi y compile pero aun sigue el error.

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
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
 
int funcionclientes(void) //Declaracion de una funcion para utilizarla posteriormente en el main()
 
int main(void)
{
funcionclientes(); //Llamado a la funcion clientes, la cual esta creada en la parte inferior
 
return 0;
}
 
int funcionclientes(void); //Inicio de la funcion clientes
{
int i;
 
struct clientes; //Se declara la estructura Clientes
{
char nit[12];
   char nombre[20];
   char direccion[30];
   int telefono;
   char e_mail[25];
}
 
clientes_datos[1]; //arreglo para indicar que deseo guardar 2 Clientes
 
for (i=0; i<2; i++) //Ciclo for, para ir almacenando los datos que ingrese el usuario
 {
   cout<<"Ingrese los datos del cliente ";
   cout<<(i+1);
   cout<<"\n\n";
   cout<<"Ingrese el NIT ";
   cin>>datos[i].nit;
   cout<<"Ingrese el Nombre ";
   gets(datos[i].nombre);
   cout<<"Ingrese la Direccion ";
   gets(datos[i].direccion);
   cout<<"Ingrese el Telefono ";
   cin>>datos[i].telefono;
   cout<<"Ingrese el e-mail ";
   cin>>datos[i].e_mail;
   cout<<"\n\n";
   system ("cls");
   }
system ("cls");
cout<<"Los Datos Ingresados Fueron: \n";
 
for (i=0; i<2; i++) //Cilo for de la estructura clientes para mostrar en pantalla los datos ingresados
 {
   cout<<"NIT: ";cout<<datos[i].nit;cout<<" ";
   cout<<"Nombre: ";cout<<datos[i].nombre;cout<<" ";
   cout<<"Direccion: ";cout<<datos[i].direccion;cout<<" ";
   cout<<"Telefono: ";cout<<datos[i].telefono;cout<<" ";
   cout<<"e-mail: ";cout<<datos[i].e_mail;cout<<"\n";
   }
 
    FILE *guardar_clientes; //Guardo en un archivo de texto, los datos de la estructura Clientes
    guardar_clientes = fopen("cliente.txt","ab+");
    fwrite(&datos,sizeof(datos),1,guardar_clientes);
    fclose(guardar_clientes);
 
    cout << "\nCliente Guardado Satisfactoriamente" << endl; //Informacion al usuario que se ha guardado la estructura
   getch();
   return 0;
   }
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
Imágen de perfil de vangodp

AYUDA.... error de compilación del ejercicio

Publicado por vangodp (287 intervenciones) el 10/12/2014 07:15:49
Como tenias unos tropecientos errores te los comente todos en el programa. http://codepad.org/1ExCTQrQ

No voy a volver a hacertelo. Ya te lo hice mas abajo. en otro post.
te voy a comentar los errores que vi.

1º declaras prototipos y te olvidas poner punto y coma despues.
2ºpones puntos y comas antes de cuerpos de funciones.
Un prototipo siempre lleva punto y coma, pero la funcion no.
//Esto es un prototipo
void funcion(); //lleva punto y coma
int main(){
return 0;
}
//Esto es la implementacion
void funcion{} //No te olvides quitar punto y coma antes las {} llaves por que no lleva punto y coma
3ºno se declara estructuras dentro de funciones. que sean antes del prototipo. Antes de main.
La razon por la que no se declara clientes dentro de funciones es por que solo se declararia dentro de esta funcion y su vida "util" seria la misma de la funcion.
Vea un ejemplo:
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
#include <iostream>
using namespace std;
 
void funcion1 (){
struct Cliente{
    string nombre;
}cliente;
    cout << "nombre para el cliente" << endl;
    cin >> cliente.nombre;
}
 
void funcion2 (Cliente c){
    cout << c.nombre;
}
 
 
int main (){
    //quiero llamar a funcion 1 para dar nombre a cliente y luego la funcion 2 para ver nombre 
    //de cliente. Pero me va fallar ya que cleinte para cuando lo llame en la funcion 2 ya no va existir por que la vida de la funcion 1 llego a su fin y ademas no tengo aceso a cliente desde main.
    funcion1();
    funcion2(cliente);  // esto no funciona asi por que main no tiene acceso a cliente que esta dentro de la funcion 1.
 
    //En FIN ESTE PROGRAMA ES TOTALMENTE INUTIL.
 
    cin.ignore();
    return 0;
}

Eso arreglado es asi: http://codepad.org/RuowrI5x
Si necesitas ayuda te puedo explicar unos cuantos conceptos por skype. Me puedes buscar alla por el mismo nombre.

Sigamos..
4º has declarado clientes asi: clientes_datos[1];. Sin embargo al mover clientes antes del prototipo se declara Clientes clientes_datos[2];.
Tambien declaras 1 y no 2 ya que haces clientes_datos[1];. Pero este es un 5º error ya y quizas el mas importante. Al declarar 1 cliente no corrijes el for y alli si estas tomando datos para 2 clientes. El caso es que no tienes memoria asignada para ello por que solo declaraste 1 cliente y eso es grave.
El For cuenta de cero a menor que 2, que es 1 o sea cuenta de cero a uno. ¿cuantos numeros son? ¿cero y uno no? ¡Son 2! pero solo declaras uno clientes_datos[1]; o sea que te puede petar el ordenata programa al escribir en memoria que no te corresponde.

¿Tienes maestro? Y si lo tienes... Dile que es muy malo de mi parte jajaj
¿Que clase de maestro enseña los alumnos a usar iostream.h en vez de iostream.? lo mismo para stdio y no cstdio. Y lo que es peor :O nunca uses conio jajajaja

Seguro estaes programando en un entorno borland de los años catapum. XD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

AYUDA.... error de compilación del ejercicio

Publicado por charly (5 intervenciones) el 10/12/2014 21:23:13
Gracias vangodp por el aporte, estoy aprendiendo en entorno de dev-c++
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.... error de compilación del ejercicio

Publicado por charly (5 intervenciones) el 11/12/2014 01:04:38
Disculpa, como hago para que los resultados se muestren en una tabla???
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
Imágen de perfil de vangodp

AYUDA.... error de compilación del ejercicio

Publicado por vangodp (287 intervenciones) el 11/12/2014 02:04:28
¿No lo entiendo...Eso dices?
tabla0201
Si es eso pues usando asc2.: http://www.elcodigoascii.com.ar/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main (){
    cout << char(201);
    for ( int i = 0; i<10;i++ ) cout << char( 205 );
    cout << char(187);
    cout << endl << char (186) << "Hola Mundo" << char (186) <<  endl;
    cout << char(200);
    for ( int i = 0; i<10;i++ ) cout << char( 205 );
    cout << char(188);
    cin.ignore();
    return 0;
}

=D
Son valores de la tabla asc2 convertidos a char con un simple cast.
Ahora el cuadro lo tienes que currar vos XD
surte
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