bueno mi duda seria como hago las otras dos estructuras, en el enunciado dice que tengo que hacer una lista para los CDs y una lista para la disqueras y como la relaciono con la primera que hice que es la de "interprete"
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúLa empresa disquera "TEMPTATIONS" desea obtener información rápida de sus CD´s e Intérpretes, es decir; que por el titulo de un CD desea conocer el interprete y, dado un intérprete conocer todos los CD´s que él posee.
Se sabe que están disponibles las siguientes estructuras de listas, almacenadas en forma dinámica:
LISTAS DE INTÉRPRETES: Sus nodos contienen la siguiente información:
- Nombre del intérprete,
- Apuntador al principio de la lista de CD´s que posee el interprete,
- Apuntador al final de la lista de CD´s que posee ese interprete,
- Apuntador al sucesor de la lista del intérprete.
LISTAS DE CD´s: Sus nodos contienen la siguiente información:
- Nombre del CD,
- Apuntador al sucesor de la lista de CD´s de ese interprete.
LISTA DE DISQUERAS:
- Nombre de la Disquera,
- Apuntador al sucesor de la lista de Disquera de ese CD.
Nota: Suponga que un CD consta de un único interprete y de una sola disquera, y un intérprete puede tener uno o más CD´s y haber grabado con una o más disqueras.
Basado en la información anterior:
Diseñe un algoritmo y un programa en C, muestre un menú cuya primera opción sea para agregar los elementos de la lista, la segunda opción debe mostrar el nombre de los intérpretes y todos sus CD´s y estos a su vez la disquera, si este existe o envíe un mensaje de error en caso contrario, la opción de eliminar elementos de la lista y la última opción de salir.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
using namespace std;
typedef struct TEMPTATIONS
{
char interprete[20];
char CDs[15];
TEMPTATIONS *siguiente;
} TEMPTATIONS;
void mostrar_menu();
void agregar_elemento();
void mostrar_lista();
void eliminar();
TEMPTATIONS *primero, *ultimo;
int main()
{
char opcion;
primero=(TEMPTATIONS *)NULL;
ultimo=(TEMPTATIONS *)NULL;
do
{
mostrar_menu();
opcion=getche();
switch(opcion)
{
case '1': agregar_elemento();
break;
case '2': mostrar_lista();
break;
case '3': eliminar();
break;
case '4': exit(1);
default: printf("Opcion no valida\n");
break;
}
}while(opcion!='4');
}
void mostrar_menu()
{
printf("1.- Anadir Interprete \n");
printf("2.- Mostrar Lista de Interpretes?\n");
printf("3.- Eliminar Interprete?\n");
printf("4.- Salir\n\n");
printf("Escoge una opcion: \n");
fflush(stdin);
}
void agregar_elemento()
{
TEMPTATIONS *nuevo;
nuevo=(TEMPTATIONS *)malloc(sizeof(TEMPTATIONS));
if(nuevo==NULL)
printf("No hay memoria disponible!!! \n");
else
{
printf("\n");
printf("Agregar \n");
printf("Interprete: ");
fflush(stdin);
gets(nuevo->interprete);
printf("CDs: ");
fflush(stdin);
gets(nuevo->CDs);
nuevo->siguiente=NULL;
if(primero==NULL)
{
primero=nuevo;
ultimo=nuevo;
}
else
{
ultimo->siguiente=nuevo;
ultimo=nuevo;
}
}
system("pause");
system("cls");
}
void mostrar_lista()
{
TEMPTATIONS *auxiliar;
int i;
i=0;
auxiliar=primero;
printf("\n Mostrando la lista completa:\n");
while(auxiliar!=NULL){
printf("Interprete: %s, CDs: %s\n",auxiliar->interprete, auxiliar->CDs);
auxiliar= auxiliar->siguiente;
i++;
}
if(i==0){
printf("\nLa lista esta vacia!!\n");
}
}
void eliminar()
{
TEMPTATIONS *aux2, *aux1, *auxiliar1;
int j, borralo;
auxiliar1=primero;
j=1;
if(auxiliar1==NULL)
{
printf("--->La lista esta vacia\n");
}
else
{
while(auxiliar1!=NULL)
{
printf("\n %d Interprete: %s y su CDs es:%s \n",j,auxiliar1->interprete,auxiliar1->CDs);
auxiliar1=auxiliar1->siguiente;
j++;
}
printf("Cual desea eliminar\n");
scanf("%d",&borralo);
aux2=primero;
for(j=1;j<borralo-1;j++)
{
aux2=aux2->siguiente;
}
if(borralo==1)
{
primero=aux2->siguiente;
aux2->siguiente=NULL;
}
else
{
aux1=aux2;
aux2=aux2->siguiente;
aux1->siguiente=aux2->siguiente;
aux2->siguiente=NULL;
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <windows.h>
// Posiciones: '0'=desocupado | '1'=Hay barco | '2'=Barco destruido
void wait(int seconds) // Funcion 'clock' para el tiempo de juego
{
clock_t endwait;
endwait = clock() + seconds * CLOCKS_PER_SEC;
while( clock() < endwait )
{}
}
void imprimir();
void iniciar();
int i, j, k, jugador[10][10], oponente[10][10], opcion1, opcion2, puntajejugador=0, puntajeoponente=0; // Variables globales
time_t start,end;
double dif, tiempototal=0;
//________________________________________________________________________________________________
void imprimir() // Funcion que imprime el tablero de juego
{
printf("\t\t\t\t\t Tiempo transcurrido= %.1f segundos\n\n", tiempototal);
for(i=1;i<=10;i++) // Imprime tablero del oponente
{
printf("\n\t");
for(j=1;j<=10;j++)
{
if(oponente[i][j]==3)
{
printf(" #");
}
else
{
if(oponente[i][j]==2) // Imprime 'X' si vale 2
{
printf(" X");
}
else
{
printf(" -");
}
}
}
if(i==3)
{
printf("\tOPONENTE");
}
else
{
if(i==1)
{
printf("\t\t\tPuntaje oponente: %d", puntajeoponente);
}
}
}
printf("\n\n\t ______________________________\n\n");
for(i=1;i<=10;i++) // Imprime el tablero del jugador
{
printf("\n\t");
for(j=1;j<=10;j++)
{
if(jugador[i][j]==3)
{
printf(" #");
}
else
{
if(jugador[i][j]==2) // Imprime 'X' si vale 2 || 'O' si vale 1
{
printf(" X");
}
else
{
if(jugador[i][j]==1)
{
printf(" O");
}
else
{
printf(" -");
}
}
}
}
if(i==3)
{
printf("\tJUGADOR");
}
else
{
if(i==1)
{
printf("\t\t\tPuntaje jugador: %d", puntajejugador);
}
}
}
printf("\n\n");
}
//_______________________________________________________________________________________________
void iniciar() // Rellena con '0' el arreglo y coloca los barcos
{
for(i=1;i<=10;i++) // Llena todo con '0'
{
for(j=1;j<=10;j++)
{
jugador[i][j]=0;
oponente[i][j]=0;
}
}
printf("\n\n Dame las coordenadas de tus barcos~\n\n");
srand(time(NULL));
for(k=1;k<=10;k++) // Distribuye los barcos
{
imprimir();
i=1+rand()%10; // Distribuye los barcos oponentes
j=1+rand()%10;
while(oponente[i][j]==1)
{
i=1+rand()%10; j=1+rand()%10;
}
oponente[i][j]=1; // La posicion de los barcos valdra 1
printf("\n\tX%d = ", k);
scanf("%d", &opcion2);
while(opcion2<1 || opcion2>10)
{
printf(" Escoje un valor valido ( 1 a 10 )\n\n\tX%d = ", k);
scanf("%d", &opcion2);
}
printf("\n\tY%d = ", k);
scanf("%d", &opcion1);
while(opcion1<1 || opcion1>10)
{
printf("\n Escoje un valor valido ( 1 a 10 )\n\n\tY%d = ", k);
scanf("%d", &opcion1);
}
if(jugador[opcion1][opcion2]==1)
{
printf("\n Ese valor ya existe...");
getche();
k=k-1;
}
jugador[opcion1][opcion2]=1;
system("cls");
}
}
void presentacion()
{
system("color 0B");
printf("\n\n\t ~BATALLA NAVAL~\n\n\t\t#\n\t\t#|\n\t\t#|#\n\t\t#|##\n\t\t#|###\n\t\t#|####");
printf("\n\t\t#|#####\n\t\t#|######\n\t#########################\n\t _______________________");
printf("\n\t ####/)###############\n\t ###(/##############\n\t #################\n\t ###############");
printf("\n\n\n\t1- JUGAR\n\n\t2- SALIR\n\n\n\tDame tu opcion:");
}
//_______________________________________________________________________________________________
main() // Inicia el programa (main)
{
int res, auxiliar, probabilidadcpu, destruidosoponente=0, destruidosjugador=0, ganador;
float dificultadcpu=0.5;
presentacion();
scanf("%d", &res);
system("cls");
switch(res)
{ // Eliges la opcion Jugar o Salir
case 1:
{
iniciar(); // Llama a la funcion iniciar
printf("\n\n\n\t\t Preparado?\n\n");
wait(2);
printf("\n\t\t AHORA!!!");
wait(1);
do
{
time(&start);
system("cls"); // Limpia la pantalla
imprimir();
printf(" Es tu turno! Dame la posicion que deseas atacar~\n\n");
printf("\tX = ");
scanf("%d", &opcion2);
while(opcion2<1 || opcion2>10)
{
printf("\n Escoje un valor valido ( 1 a 10 )\n\n\tX = ");
scanf("%d", &opcion2);
}
printf("\tY = ");
scanf("%d", &opcion1);
while(opcion1<1 || opcion1>10)
{
printf("\n Escoje un valor valido ( 1 a 10 )\n\n\tY = ");
scanf("%d", &opcion1);
}
auxiliar=oponente[opcion1][opcion2];
oponente[opcion1][opcion2]=3;
system("cls");
imprimir();
oponente[opcion1][opcion2]=auxiliar;
if(oponente[opcion1][opcion2]==1)
{
oponente[opcion1][opcion2]=2;
destruidosoponente=destruidosoponente+1;
puntajejugador=puntajejugador+200;
printf("\n Haz acertado!!\n\n");
}
else
{
printf("\n Haz fallado...\n\n");
}
system("PAUSE");
system("cls");
if(destruidosoponente==5)
{
printf("\n\n\n\n\t\t\tHAZ GANADO!!");
getche();
}
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[(int)posicion1], mayor);
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[posicion1], mayor);
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[*posicion1], mayor);
Cita de: CalgaryCorpus en 11 Julio 2014, 16:30 PM
Es superfluo asignar los punteros en cada vuelta.
Si se eliminan esas asignaciones el resultado será el mismo.
#include <stdio.h>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
const char *paises_miembros[] = {"Argentina","Belgica","Estados Unidos","Francia","Reino Unido",
"Grecia","Hungria","Italia","Nueva Zelanda","Rusia","Suecia","Japon"};
const char *paises_postulados[] = {"Japon","Brasil","Suecia","Mexico"};
int contador=0;
void mayor_menor(int array[]);
int main() {
int votos[]={0,0,0,0};
printf("BIENVENIDO AL SISTEMA DE VOTACION PARA LA ELECCION DE LA SEDE DE LOS JUEGOS OLIMPICOS\n");
printf("\npara iniciar las votaciones presiones cualquier tecla...");
getch();
printf("\n\nlos paises miembros del comite son los siguientes: ");
for(contador=0;contador<12;contador++)
{
printf(" %s ",paises_miembros[contador]);
}
getch();
printf("\n\nlos paises postulados son los siguientes: ");
for(contador=0;contador<4;contador++)
{
printf(" %s ",paises_postulados[contador]);
}
getch();
printf("\n\n \t\t\t INICIA PROCESO DE VOTACION");
getch();
contador=0;
int opcion=0;
while(contador<10)
{
opcion=0;
printf("\n\n %s cual de las siguientes opciones elige para que sea la sede de los proximos juegos olimpicos?",paises_miembros[contador]);
printf ("\n\n 1.%s 2.%s 3.%s 4.%s",paises_postulados[0],paises_postulados[1],paises_postulados[2],paises_postulados[3]);
printf("\n elija una opcion del 1 al 4: ");
scanf("%d",&opcion);
if(opcion>0 && opcion<5)
{
votos[opcion-1]=votos[opcion-1]+1;
contador++;
}
else
{
printf("\n\nOPCION INVALIDA!!!");
}
}
mayor_menor(votos);
return 0;
}
void mayor_menor(int array[])
{
int mayor,menor,*posicion1=0, *posicion2=0;
mayor=votos[0];
for(contador=1;contador<4;contador++)
{
if (votos[contador]>mayor)
{
mayor=votos[contador];
*posicion1=contador;
}
}
menor=votos[0];
for(contador=1;contador<4;contador++)
{
if (votos[contador]<menor)
{
menor=votos[contador];
*posicion2=contador;
}
}
printf("\n\nEL PAIS GANADOR ES %s con %d votos",paises_postulados[*posicion1], mayor);
printf("\n\nEL PAIS CON MENOS VOTOS ES %s con %d votos",paises_postulados[*posicion2],menor);
}
char *paises_miembros[] = {"Argentina","Belgica","Estados Unidos","Francia","Reino Unido",
"Grecia","Hungria","Italia","Nueva Zelanda","Rusia","Suecia","Japon"};
9 77 C:\Users\Nerys\Desktop\main.cpp [Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
scanf("%d",&res2);
poderj1[indice]=res2;
for(int cc=0;cc<=res2;cc++)
{
if(poderj1[cc]==res2)
{
printf("\n no puedes utilizar dos poderes iguales!!!\n");
getch();
}
}
indice=indice+1;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct datos {
char primer_nombre [45];
char segundo_nombre [45];
char apellido_persona [45];
};
void lista_personas()
{
printf("Ingresar la cantidad de personas que se generara en su lista: ");
int k=0;
scanf("%d",&k);
printf("\n\nla cantidad de personas en su lista es de %d: ",k);
datos datos_estruct[k];
for( int m=0;m<k;m++)
{
printf("\n\nEl I.D Registro de la persona es: %d\n\n",m+1);
printf("Ingrese el Primer nombre de la persona:\n");
scanf("%s",&datos_estruct[m].primer_nombre);
printf("\nIngrese el segundo nombre de la persona:\n");
scanf("%s",&datos_estruct[m].segundo_nombre);
printf("\nIngrese el apellido de la persona:\n");
scanf("%s",&datos_estruct[m].apellido_persona);
}
FILE *Doc;
Doc=fopen("Documento.txt","w");
if (Doc!= NULL) //2 Se abre para escritura
{
for(int m=0;m<k;m++)
{
fprintf(Doc, "%s " , &datos_estruct[m].apellido_persona);
fprintf(Doc, "%s " , &datos_estruct[m].primer_nombre);
fprintf(Doc, "%s \n" , &datos_estruct[m].segundo_nombre);
}
}
else{
exit(0);
}
fclose(Doc);
//fin listado_personas
}
// Inicio main
main(){
lista_personas();
printf("\n\n\nSus datos fueron guardados satisfactoriamente.\n\n\n");
system("pause");
}