problemas con programa
Publicado por alberto rodas (3 intervenciones) el 31/01/2007 13:08:10
hola:
necesito por favor si alguien me puede ayudar:
este programa pide entrar por teclado un numero n con la cantidad de
elementos de un vector,luego cargarlos .cada elemento del mismo tiene apellido y nombre
direccion ,telefono y sueldo.
la funcion calcular calcula el total del sueldo abonado a todas las ppersonas ingresadas.
(con esta parte no hay problemas).
el tema es con la funcion modificar ,en la cual tengo que a cada apellido y
nombre y a cada direccion ,tengo que modificarlos de manera que me quede c
ada palabra al principio
con su primera letra en mayuscula (cada direccion y nombre y apellido puede estar separado
por uno o mas espacios) .
ejemplo: en el vector tengo como primer nombre jorge rodriguez
con la funcion modificar debe quedar en el vector original: Jorge Rodriguez
(con mayuscula y separado por un solo espacio)
el programa corre y compila ,pero no tengo el reultado esperado.
si por favor aluien me ayuda ,agradecido.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<ctype.h>
typedef struct
{
char ayn[50]; // apellido y nombre
char dir[60]; // dirección
char tel[30]; // teléfono
float sueldo; // sueldo
} tabla;
void numero(int *n)
{
printf("\nIngrese la cantidad de elementos:\n");
scanf("%d", n);
if (n <= 0)
{
printf("\nERROR: La cantidad debe ser mayor que 0\n");
exit(1);
}
}
tabla *crear(int n)
{
tabla *t;
t = (tabla *)malloc(n * sizeof(tabla));
if (NULL == t)
{
printf("\nERROR creando tabla\n");
exit(2);
}
return t;
}
void cargar(tabla t[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("\nApellido y nombre[%d]:\n", i + 1);
fflush(stdin);
gets(t[i].ayn);
printf("Direccion[%d]:\n", i + 1);
gets(t[i].dir);
printf("Telefono[%d]:\n", i + 1);
gets(t[i].tel);
printf("Sueldo[%d]\n", i + 1);
scanf("%f", &t[i].sueldo);
}
}
void mostrar(tabla t[], int n)
{
int i;
printf("\n");
for (i = 0; i < n; i++)
printf("%s; %s; %s; %.2f\n", t[i].ayn, t[i].dir, t[i].tel, t[i].sueldo);
printf("\n");
}
void calcular(tabla t[], int n) // n es la cantidad de elementos de la tabla t
{
int i;float total=0;
printf("\n");
for (i = 0; i < n; i++) {
total+=t[i].sueldo;
}
printf("el total de sueldo es:%2f",total);
}
//aca empieza el problema -----------------
void modificar(tabla t[], int n) // n es la cantidad de elementos de la tabla t
{
char *p;int i,largo;
char auxape[50],auxdir[60],auxape2[50],auxdir2[60];
for (i = 0; i < n; i++)
{
char auxi1[50]={'\0'};
strcpy(auxape,t[i].ayn);
p=strtok(auxape," ");
while (p!=NULL){
strcpy(auxape2,p);
largo=strlen(auxape2);
auxape2[0]=toupper(auxape2[0]);
auxape2[largo]=' ';
strcpy(auxi1,auxape2);
p=strtok(NULL," ");
}
strcpy(t[i].ayn,auxi1);
}
//fin primer for
for (i = 0; i < n; i++)
{
char auxi2[60]={'\0'};
strcpy(auxdir,t[i].dir);
p=strtok(auxdir," ");
while (p!=NULL){
strcpy(auxdir2,p);
largo=strlen(auxdir2);
auxape2[0]=toupper(auxdir2[0]);
auxape2[largo]=' ';
strcpy(auxi2,auxdir2);
p=strtok(NULL," ");
}
strcpy(t[i].dir,auxi2);
}
}
//fin de funcion modificar
//***programa principal*****************
void main()
{
tabla *tab;
int n;
numero(&n);
tab = crear(n);
cargar(tab, n);
printf("\nDatos ingresados:\n");
mostrar(tab, n);
calcular(tab, n);
modificar(tab, n);
printf("\nDatos modificados:\n");
mostrar(tab, n);
free(tab);
getch();
}
necesito por favor si alguien me puede ayudar:
este programa pide entrar por teclado un numero n con la cantidad de
elementos de un vector,luego cargarlos .cada elemento del mismo tiene apellido y nombre
direccion ,telefono y sueldo.
la funcion calcular calcula el total del sueldo abonado a todas las ppersonas ingresadas.
(con esta parte no hay problemas).
el tema es con la funcion modificar ,en la cual tengo que a cada apellido y
nombre y a cada direccion ,tengo que modificarlos de manera que me quede c
ada palabra al principio
con su primera letra en mayuscula (cada direccion y nombre y apellido puede estar separado
por uno o mas espacios) .
ejemplo: en el vector tengo como primer nombre jorge rodriguez
con la funcion modificar debe quedar en el vector original: Jorge Rodriguez
(con mayuscula y separado por un solo espacio)
el programa corre y compila ,pero no tengo el reultado esperado.
si por favor aluien me ayuda ,agradecido.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<ctype.h>
typedef struct
{
char ayn[50]; // apellido y nombre
char dir[60]; // dirección
char tel[30]; // teléfono
float sueldo; // sueldo
} tabla;
void numero(int *n)
{
printf("\nIngrese la cantidad de elementos:\n");
scanf("%d", n);
if (n <= 0)
{
printf("\nERROR: La cantidad debe ser mayor que 0\n");
exit(1);
}
}
tabla *crear(int n)
{
tabla *t;
t = (tabla *)malloc(n * sizeof(tabla));
if (NULL == t)
{
printf("\nERROR creando tabla\n");
exit(2);
}
return t;
}
void cargar(tabla t[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("\nApellido y nombre[%d]:\n", i + 1);
fflush(stdin);
gets(t[i].ayn);
printf("Direccion[%d]:\n", i + 1);
gets(t[i].dir);
printf("Telefono[%d]:\n", i + 1);
gets(t[i].tel);
printf("Sueldo[%d]\n", i + 1);
scanf("%f", &t[i].sueldo);
}
}
void mostrar(tabla t[], int n)
{
int i;
printf("\n");
for (i = 0; i < n; i++)
printf("%s; %s; %s; %.2f\n", t[i].ayn, t[i].dir, t[i].tel, t[i].sueldo);
printf("\n");
}
void calcular(tabla t[], int n) // n es la cantidad de elementos de la tabla t
{
int i;float total=0;
printf("\n");
for (i = 0; i < n; i++) {
total+=t[i].sueldo;
}
printf("el total de sueldo es:%2f",total);
}
//aca empieza el problema -----------------
void modificar(tabla t[], int n) // n es la cantidad de elementos de la tabla t
{
char *p;int i,largo;
char auxape[50],auxdir[60],auxape2[50],auxdir2[60];
for (i = 0; i < n; i++)
{
char auxi1[50]={'\0'};
strcpy(auxape,t[i].ayn);
p=strtok(auxape," ");
while (p!=NULL){
strcpy(auxape2,p);
largo=strlen(auxape2);
auxape2[0]=toupper(auxape2[0]);
auxape2[largo]=' ';
strcpy(auxi1,auxape2);
p=strtok(NULL," ");
}
strcpy(t[i].ayn,auxi1);
}
//fin primer for
for (i = 0; i < n; i++)
{
char auxi2[60]={'\0'};
strcpy(auxdir,t[i].dir);
p=strtok(auxdir," ");
while (p!=NULL){
strcpy(auxdir2,p);
largo=strlen(auxdir2);
auxape2[0]=toupper(auxdir2[0]);
auxape2[largo]=' ';
strcpy(auxi2,auxdir2);
p=strtok(NULL," ");
}
strcpy(t[i].dir,auxi2);
}
}
//fin de funcion modificar
//***programa principal*****************
void main()
{
tabla *tab;
int n;
numero(&n);
tab = crear(n);
cargar(tab, n);
printf("\nDatos ingresados:\n");
mostrar(tab, n);
calcular(tab, n);
modificar(tab, n);
printf("\nDatos modificados:\n");
mostrar(tab, n);
free(tab);
getch();
}
Valora esta pregunta


0