Ayuda programar c

Buenas:

Bueno, intentaré ser breve, estudio ingenieria industrial mecanica y tengo una asignatura que es fundamentos informaticos. La verdad esque las 3 o 4 practicas que han mandado las he hecho pero nos han mandado una ahora que no tengo ni repajolera idea. Alomejor es una tonteria pero la verdad esq apenas se ha explicado. La practica que tengo k hacer la adjunto a continuacion. No pretendo que nadie me la haga exactamente, sigo k me ayuden a encontrar lal uz xD. Tengo hecha una parte pero no tengo apenas idea. La práctica en si es de programar en c y el tema de las funciones.

Si algun alma caritativa se anima a ayudarme jejeje.

Saludos!

Aqui esta el enlace.
No parece muy dificil.
Te tienes que crear un tipo que sea por ejemplo empleado y tenga dentro los subapartados de forma que luego rellenes cada apartado tal que así
gets (empleado[i].codigo);
por ejemplo.

Si no estuviese de examenes te lo hacía yo mismo.
De todas formas tampoco sé qué nivel tienes, si sabes como van las funciones y procedimientos por ejemplo, para poderte explicar de forma más adecuada.

Suerte
basicamente pretenden que hagas uso de estructuras en C, no es demasiado complicado si te lo han explicado, mirate los apuntes relativos a ese tema e intentalo despues. Si sigues sin ver algo, dilo e intentaré echarte una mano
Si salgo bien del hospital y no me entran las ganas de hacer lo que tengo que hacer, te la hago yo hoy mismo.
Asi que ves rezando para que no me corten el dedo xD

(En 2 horas si todo va bien me paso por aqui)
Lo he leido por encima. Te piden básicamente que uses listas y estructuras. Si sabes usarlas la práctica es una tontería.
yo se hacerlo en c++, ahora explicar buf.... si me pongo a explicar yo te lio mas fijo, pero si me lo pides hecho en un rato supongo que lo tendria...
No te voy a resolver la practica pero si voy a darte una ayuda para que no tengas demasiados problemas a la hora de hacerla:

Un struct se define de la siguiente manera:
[size=100]
struct tipo_estructura{
   tipo miembro_1;
   tipo miembro_2;
   //...
   tipo miembro_n;
};[/size]


así pues, el struct que te estan pidiendo seria lo siguiente (suponiendo que puedas usar strings, sino pues el char* de toda la vida...):

[size=100]

const int kMAX=25;

struct empleado{
   string codigo;
   string nombre;
   string domicilio;
   long int telefono;
   int edad;
   string puesto;
   int perspectiva;
};

/*
para hacerlo mas llevadero y emplearlo como un tipo de datos más tendras que poner lo siguiente:
*/

typedef struct empleado templeado;

//typedef es un creador de sinonimos, su estructura es la siguiente:
//[i] typedef tipo_origen nombre_que_quieras;
//desde ese momento "nombre_que_quieras" tendra la misma funcion que "tipo_origen"
//ejemplo:  typedef int entero;[/i]

templeado vector[kMAX]; //esto ya te crea el vector de structs


/*
nota: si empleas los strings que no se te olvide añadir en la cabecera del fichero:
   #include <string>
*/
[/size]


ahora una explicacion sobre como trabajar con structs:

- para modificar los datos (en plan generico) seria del siguiente modo:

estructura.miembro=valor

un ejemplo con el codigo que te he puesto antes en el que queremos modificar el nombre:

//*posicion sera un entero de 0 a 24 como maximo
vector[posicion].nombre="pepito grillo";


- Leer los datos del struct:

gets(estructura.miembro);

Ejemplo con el codigo de antes en el que queremos leer el telefono del empleado que ocupa la posicion 20 del vector:
gets(vector[20].telefono);



Ea, ahora a trabajar :)
gracias, por la ayuda, he hecho un pedazo, os lo adjunto ahi, es mmm algo asi como el comienzo, pero claro, ando mas perdido k mm xD.

he empezado definiendo las variables y utilizando lo de struct, a partir de ahi intenté crear el menu pero puf, me voy perdiendo a cada rato, os dejo x aki lo k he hecho para asi tener una guia y k sea mas facil ayudarme.

Saludos!

PD: si, soy medio tronco pero sin una previa explicacion es bastante complicado

Adjuntos

las variables globales de las lineas 18 y 38 (int opciones; , int i; ) las quitaria (o desplazaria dentro de la función a la que correspondan) puesto que no forman parte de una programación segura y estructurada (vamos, las puedes usar si quieres pero puede que te quiten nota si te revisan el codigo)
Joder no recordaba lo feo que es C despues de estar trabajando con C++.
airam16, vallamos por partes:


1º-

El operador de equivalencia no es = sino ==, así pues (por ejemplo):

(linea 33)

if(opciones=3)

estaria mal puesto que tendria que ser if(opciones==3)

Si lo dejas como tienes ahora estaras haciendo una asignación.


2º- en la funcion pedir_datos te has rallado a tope (xD), si no he entendido mal estas pidiendo los datos de un empleado y luego modificas la variable i, la cual poseera la posicion del siguiente elemento del vector... ok, hasta ahí correcto (excepto en lo de la variable global que no me gustan) perooo luego estas haciendo un bucle for de 0 a 24. Si no tienes relleno todo el vector a la hora de ejecutar el programa te va a petar.
So quieres que ello no ocurra, la perspectiva deberias añadirla de forma individual para cada empleado que acabas de insertar (es decir, no seria necesario el bucle for. (nada más pedir todos los datos le calculas la perspectiva para ese empleado y para nadie mas, la siguiente vez que llames a la función lo haria con el siguiente empleado).

3º- El valor de la perspectiva es algo que se va sumando segun el empleado vaya cumpliendo ciertas caracteristicas, por ello, en pedir_datos pondria en la linea 56:

Empleado[i].perspectiva=0;

y sumar a la perspectiva los distintos valores segun los requisitos que cumpla del siguiente modo:

[size=100]
if(Empleado[i].edad<30)
   Empleado[i].perspectiva[B]+=[/B]10;
if((Empleado[i].edad>=30)&&(Empleado[i].edad<50))
   Empleado[i].perspectiva[B]+=[/B]2;
if(Empleado[i].edad>=50)
   Empleado[i].perspectiva[B]+=[/B]1;
}[/size]


Por cierto, poner:
[size=100]Empleado[i].perspectiva[B]+=[/B]10;
[/size]
es equivalente a poner:
[size=100]Empleado[i].perspectiva=Empleado[i].perspectiva+10;
[/size]




Tb he encontrado varios fallos más pero es aconsejable que te des cuenta por ti mismo de ellos (prueba a compilar una vez tengas la practica (o parte) terminada y mira los fallos que te da el compilador).


Ta luego
nada, finalmente no me sale, tengo k entregar la practica en 2 dias y no se como se hace. Si alguien se aburre y s tan amable de hacermela se lo agradeceré eternamente xD.

La cosa es hacerlo solo con el #include y haciendo funciones y bucles.

Un saludo y gracias x la ayuda prestada.
Yo ahora estoy con lo mismo que tú XD

Me he leido la práctica y no parece muy complicada (luego hay que ponerse y es otra historia XD). Como te han dicho tienes que meter un registro y después implementar las funciones que te piden.

El menú es lo de menos. Yo ya digo que no se mucho, pero lo haría con un switch:

swich(identificador_de_la_variable)
{

case 1: bloque de acciones

case 2: bloque de acciones

default: bloque de acciones

}

Por ejemplo (para windows):

#include <stdio.h>
#include <stdlib.h>

int seleccion=0;
char nombre[50];

int main(){

do{

printf("Menu\n\n");

printf("1- esta opcion hace blablabla\n");
printf("2- esta opcion hace blablabla\n");
printf("3- esta opcion hace blablabla\n");

printf("Selecciona una opcion: ");
scanf("%d",&seleccion);

switch(seleccion)
{

case 1: printf("Has seleccionado la opción 1");
             break; /*esto sale del menú)*/
case 2: printf("Introduce tu nombre: ");
            scanf("%s",&nombre);
            printf("\nTu nombre es: %s",&nombre);
            break;
case 3: system("EXIT");
            break;
default: printf("selecciona una opción (1-3)");
}

}while (seleccion!=3)

return(0)
}


Sobre el registro ya te lo han puesto arriba (struct) y lo que tiene más chicha es el tema de las funciones/procedimientos que yo al menos lo haría con un bucle for que fuera recorriendo el registro hasta encontrar lo que buscas (busqueda secuencial, supongo que habrás dado algo en pseudocódigo)

Paciencia y ánimos! Yo ayer estabube recluido en casa acabando una práctica por dejarla para el último día [sonrisa]

Dedicale un poco de tiempo y verás que te la sacas! [bye]
airam16, si lo intentas aun puedes completarla. Anda que no he terminado yo practicas bien jodidas el mismo dia... xD
gracias a todos.

Desenlace:
Al final hoy tuve la practica, habia k explicarla y compilarla y ver k todo okey y al final ha salido. Ayudandonos entre todos los compañeros y eso xD.

Saludos!
14 respuestas