Título: Ayuda programa de orden de nombres Publicado por: Jay en 11 Abril 2019, 22:49 pm #include<stdio.h>
#include <string.h> #include <stdlib.h> int main() { typedef struct{ char nombrecliente[20][20]; int numpedido; }pedido; typedef struct{ int numcliente; char direccion[20][20]; pedido p_nombrecliente; pedido p_numpedido; }servicio; servicio P[10]; int i, j, m; char aux[20]; for(i=0; i<1; i++){ printf("nombre: \n"); scanf("%s", &P.p_nombrecliente); fflush(stdin); printf("Ingresa tu numero de cliente: \n"); scanf("%d", &P.numcliente); //printf("Tu numero de cliente es: %d", &P.numcliente); printf ("Direccion: \n"); scanf("%s", &P.direccion); fflush(stdin); printf("numero de pedido: \n"); scanf("%d",&P.p_numpedido); } for(i=0; i<2; i++) for(j=i+1; j<1; j++) if(strcmp(P.p_nombrecliente, P[j].p_nombrecliente) > 0) { strcpy(aux, nombre); strcpy(P.p_nombrecliente, P[j].p_nombrecliente); strcpy(P.p_nombrecliente, aux); } no se que estoy haciendo mal al ordenar los nombres alfabeticamente y necesito las estructuras Título: Re: Ayuda programa de orden de nombres Publicado por: srWhiteSkull en 12 Abril 2019, 00:28 am Por qué tienes nombrecliente definido como un array bidimensional?
Título: Re: Ayuda programa de orden de nombres Publicado por: K-YreX en 12 Abril 2019, 00:37 am Como te han dicho, tanto la variable <nombrecliente> de <pedido> como <direccion> de <servicio> deberían ser arrays unidimensionales ya que solo vas a guardar una cadena de caracteres en cada uno de ellos.
Además dentro de <servicio> estás declarando dos <pedido> cuando creo que sólo quieres declarar uno. Un objeto de tipo <pedido> lleva internamente dos variables: el nombre del cliente <nombrecliente> y el número del pédido <numpedido>. No tiene sentido que vuelvas a crear dos objetos <pedido> en <servicio>. Y si era eso lo que querías hacer y en cada <servicio> guardar dos <pedidos>, te recomiendo cambiarles el nombre porque no se corresponden con la realidad. Aparte de un par de <fflush(stdin)> que no se recomiendan ya que la función <fflush()> se ha diseñado para limpiar el buffer de salida <stdout>. El comportamiento con el buffer de entrada <stdin> no está definido por lo que puede ser indeterminado. PD: Coloca tu código entre etiquetas de código GeSHi (hay un menú desplegable encima del cuadro de texto para seleccionar el lenguaje apropiado, C++ en este caso) para recibir más ayuda. Ya que la falta de etiquetas provoca una mala interpretación del código además de que es más complicado de ver y corregir. Suerte :-X |