Buenas tardes amigos, necesito una ayuda urgente

Iniciado por Lucho1110, 9 Agosto 2016, 17:21 PM

0 Miembros y 2 Visitantes están viendo este tema.

Lucho1110

Este algoritmo lo hice con ayuda de foros, mas que todo este y hay algo que no entiendo bien, mi duda es porque control[100]; "en la linea 13" no esta declarada como una variable como tal, sin char, int, float etc, necesito saber eso, gracias...
Código (cpp) [Seleccionar]
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

using namespace std;

struct agenda {
char nom[15];
char t_f[20];
char t_m[20];
char dir[30], email[40], grupos[12];
} control[100];
int cont=0;

void agregar();
void buscar();
void contactos();

main(){
int opc;

do{
system("cls");

cout<<"MENU:"<<endl;
cout<<"1.Agregar"<<endl;
cout<<"2.Buscar"<<endl;
cout<<"3.Ver todos los contactos"<<endl;
cout<<"4.Salir"<<endl;

cin>>opc;

switch(opc){
case 1:
agregar();
system("pause");
break;

case 2:
buscar();
system("pause");
break;

case 3:
contactos();
system("pause");
break;
}
}while(opc!=4);

return 0;
}

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

fflush(stdin);
cout<<"Nombre de contacto:"<<cont+1<<endl;
gets(control[cont].nom);

fflush(stdin);
cout<<"\nTelefono fijo:"<<endl;
cin>>control[cont].t_f;

fflush(stdin);
cout<<"\nTelefono movil:"<<endl;
cin>>control[cont].t_m;

fflush(stdin);
cout<<"\nDireccion:"<<endl;
gets(control[cont].dir);

fflush(stdin);
cout<<"\nE-mail:"<<endl;
gets(control[cont].email);

fflush(stdin);
cout<<"\nGrupo:"<<endl;
gets(control[cont].grupos);

cont++;

}

void buscar(){
char busca[15];
int i;

system("cls");

fflush(stdin);
cout<<"\nBuscar contacto\nIngrese el nombre del contacto:";
gets(busca);

for(i=0;i<cont;i++){
if(strcmpi(busca,control[i].nom)==0){
cout<<"\nNombre: "<<control[i].nom<<"\n";
cout<<"Telefono fijo: "<<control[i].t_f<<"\n";
cout<<"Telefono movil: "<<control[i].t_m<<"\n";
cout<<"Direccion: "<<control[i].dir<<"\n";
cout<<"E-mail: "<<control[i].email<<"\n";
cout<<"Grupo: "<<control[i].grupos<<"\n";
}
}

}

void contactos(){
int aux, i, j;
char auxc[50];

system("cls");

for(i=0;i<cont-1;i++){
for(j=0;j<cont-1-i;j++){
if(strcmp(control[j].nom,control[j+1].nom)>0){

strcpy(auxc,control[j].nom);
strcpy(control[j].nom,control[j+1].nom);
strcpy(control[j+1].nom,auxc);

aux = control[j].t_f[20];
control[j].t_f[20] = control[j+1].t_f[20];
control[j+1].t_f[20] = aux;

aux = control[j].t_m[20];
control[j].t_m[20] = control[j+1].t_m[20];
control[j+1].t_m[20] = aux;

strcpy(auxc,control[j].dir);
strcpy(control[j].dir,control[j+1].dir);
strcpy(control[j+1].dir,auxc);

strcpy(auxc,control[j].email);
strcpy(control[j].email,control[j+1].email);
strcpy(control[j+1].email,auxc);

strcpy(auxc,control[j].grupos);
strcpy(control[j].grupos,control[j+1].grupos);
strcpy(control[j+1].grupos,auxc);
}
}
}

cout<<"\nAgenda.\n";

for(i=0;i<cont;i++){
cout<<"\n.Nombre: \n"<<(i+1)<<control[i].nom<<endl;
cout<<"Telefono fijo: \n"<<control[i].t_f<<endl;
cout<<"Telefono movil: \n"<<control[i].t_m<<endl;
cout<<"Direccion: \n"<<control[i].dir<<endl;
cout<<"E-mail: \n"<<control[i].email<<endl;
cout<<"Grupo: \n"<<control[i].grupos<<endl;
}

}

AlbertoBSD

Pues esta mal declarada :P no se si funcione pero al parecer quieren hacer como si fuera un tipo de dato definido al estilo Typedef.

Deberia de ser asi:

typedef struct agenda {
char nom[15];
char t_f[20];
char t_m[20];
char dir[30], email[40], grupos[12];
}registro;

registro control[100];


Ya asi tenemos que control es un arreglo de 100 registros loa cuales tienen la estrucutura de una agenda.

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

ivancea96

Imagínate que el tipo, en vez de "float" o "string", fuera "struct Agenda{...}".

De hecho, podrías incluso no ponerle nombre a la struct:

Código (cpp) [Seleccionar]
struct {
char nom[15];
char t_f[20];
char t_m[20];
char dir[30], email[40], grupos[12];
} control[100];

Claro que tampoco podrás crear más variables de ese tipo, como sí podías de la otra forma:

Código (c++) [Seleccionar]
struct agenda ag;
agenda ag2; // En C++



CitarPues esta mal declarada
Es correcto. Con typedef lo que evitas es tener que poner "struct XXX varName;".

FurioMoltisanti

La definición es correcta. Es un array de agenda.

Fuente:Tutorialspoint

Defining a Structure

To define a structure, you must use the struct statement. The struct statement defines a new data type, with more than one member. The format of the struct statement is as follows −

struct [structure tag] {

   member definition;
   member definition;
   ...
   member definition;
} [one or more structure variables]; 


The structure tag is optional and each member definition is a normal variable definition, such as int i; or float f; or any other valid variable definition. At the end of the structure's definition, before the final semicolon, you can specify one or more structure variables but it is optional. Here is the way you would declare the Book structure −

struct Books {
   char  title[50];
   char  author[50];
   char  subject[100];
   int   book_id;
} book; 

AlbertoBSD

Pues aun asi se me hace que visualmente no se entiende, ya vimos que el que abrio el topic se confundio, pero mientras funcione esta bien, Si solo vas a usar una unica variable de ese tipo de estrucutura o el arreglo esta bien.

Yo prefiero seguirlo haciendo de la manera completa:

struct nodo{
//definicion de variables
};


Y para declarar las variables struct nodo *arbol,*grafo,*cola; //etc

Me gustan mas lo apuntadores en fin es el estilo de cada QUIEN

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

Lucho1110

Muchas gracias amigos, me ayudaron muchos sus sugerencias, y si solo usa esa variable de tipo estructura, no usare otra, solo esa, ya aclare esa duda, gracias a todos, estuve mirando lo que me comentaron para cambiarlo, pero como lo dije antes solo usare eso, pero a futuro lo tomare en cuenta para hacerlo de la manera correcta, gracias de nuevo