Duda con lectura de nombre y apellido.

Iniciado por diego-4, 17 Septiembre 2010, 19:30 PM

0 Miembros y 1 Visitante están viendo este tema.

diego-4

Hola , perdon por la molestia pero tengo una re duda
=D

yo tengo este codigo fuente

#include <stdio.h>
#include <conio.h>

void main()
{
int NumCli, MinInAbo, MinCon;
char NomTit[20], ApeTit[20];
float ImpAbo, CosMinExc, ImpFac;
printf("Numero de Cliente: ");
scanf("%d",&NumCli);
printf("\nNombre y Apellido del Titular: ");
scanf("%s %s",&NomTit,&ApeTit);
printf("\nImporte del Abono: ");
scanf("%f",&ImpAbo);
printf("\nMinutos Incluidos en el Abono: ");
scanf("%d",&MinInAbo);
printf("\nMinutos Consumidos: " );
scanf("%d",&MinCon);
printf("\nCosto del Minuto Excedente: ");
scanf("%f",&CosMinExc);
clrscr();
printf("Numero del Cliente: %d",NumCli);
printf("\nNombre del Titular: %s %s",NomTit,ApeTit);
printf("\nImporte del Abono: $ %f pesos",ImpAbo);
printf("\nMinutos Incluidos en el Abono: %d minutos",MinInAbo);
printf("\nMinutos consumidos: %d minutos",MinCon);
printf("\nCosto del Minuto Excedente: $ %f pesos",CosMinExc);
   if(MinCon>MinInAbo)
   {
   ImpFac=ImpAbo+(MinCon-MinInAbo)*CosMinExc;
   printf("\nImporte de la factura: $ %f pesos",ImpFac);
   }
   else
   {
   printf("\nImporte de la factura: $ %f pesos",ImpAbo);
   }
getch();
}



EN ESTA PARTE LA PROFESORA MARCO "USAR UNA VARIABLE PARA NOMBRE Y APELLIDO!
scanf("%s %s",&NomTit,&ApeTit);

plis ayudissss ^^ graciasss =D

Horricreu

#1
Puedes usar:

#include <stdio.h>

int main()
{
char string[50];

fgets(string, 50, stdin);

printf("Nombre y apellidos: %s", string);

getchar();

return 0;
}


Una cosa, sigues cometiendo fallos que te corregimos en algún otro tema tuyo y has pasado olímpicamente de los consejos... no sé, no lo digo con mala intención, sólo que leas lo que te escribimos.

Saludos :P

diego-4

te entiendo perfectamente :D, pero en este momento en programacion uno no estamos usando las bibliotecas, estamos con el diagrama de flujo y como codificarlo, por eso te pregunto o les pregunto a todos, porq en esa situacion me puso eso :)


Littlehorse

#3
La profesora te pidió que uses una sola "variable" (arreglo en realidad) y vos en tus lecturas estas usando dos.
No obstante, lo ideal es usar una cadena con fgets que es precisamente lo que se te esta pidiendo y de paso, es la forma correcta de hacerlo. Por lo tanto, no entiendo cual es el problema con el ejemplo que te puso Horricreu.

Especifica cual es la duda porque por lo menos yo no te he entendido todavía.

En cuanto a esto:

scanf("%s %s",&NomTit,&ApeTit);

Esta mal, el identificador del array es un puntero que apunta a la primera posición de dicho arreglo. De la forma que lo haces solo funciona porque el puntero direcciona el mismo lugar que la primera referencia, intenta hacer lo mismo pero reservando memoria dinámica para el arreglo y veras el error. Lo correcto con scanf seria:

scanf("%s %s",NomTit,ApeTit);

Es decir, los ampersand están de mas en este caso.

Saludos

PD: Utiliza títulos descriptivos para los posts.
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

diego-4

MUchas gracias por sus consejos, perdonen por la ignorancia es q soy muy novato en esto... el enunciado decia lo siguiente

1- Se desea efectuar la factura de un teléfono celular. Para ellos solicitar por pantalla e ingrsar los siguientes datos: Numero de cliente, nombre de titular(cadena de caracteres), importe del abono(real), minutos incluidos en el abono(entero), minutos consumidos(entero), costo del minuto excedente(real).
la factura se calcula de la siguiente forma:

Importe del abono+ (minutos consumidos . minutos incluidos en el abono)*costo del minuto excedente. Si los minutos son < a los minutos incluidos en el abono, el cliente debe pagar el importe del abono completo

2.-imformar los datos ingresados y el importe de la factura con leyendas aclaratorias.

y aca esta el codigo terminado ^^

Codigo
#include <stdio.h>
#include <conio.h>


void main()
{
int NumCli, MinInAbo, MinCon;
char NomTityApeTit[50];
float ImpAbo, CosMinExc, ImpFac;
printf("Numero de Cliente: ");
scanf("%d",&NumCli);
printf("\nNombre y Apellido del Titular: ");
fflush(stdin);
fgets(NomTityApeTit,50,stdin);
printf("\nImporte del Abono: ");
scanf("%f",&ImpAbo);
printf("\nMinutos Incluidos en el Abono: ");
scanf("%d",&MinInAbo);
printf("\nMinutos Consumidos: " );
scanf("%d",&MinCon);
printf("\nCosto del Minuto Excedente: ");
scanf("%f",&CosMinExc);
clrscr();
printf("Numero del Cliente: %d",NumCli);
printf("\nNombre del Titular: %s",NomTityApeTit);
printf("\nImporte del Abono: $ %f pesos",ImpAbo);
printf("\nMinutos Incluidos en el Abono: %d minutos",MinInAbo);
printf("\nMinutos consumidos: %d minutos",MinCon);
printf("\nCosto del Minuto Excedente: $ %f pesos",CosMinExc);
   if(MinCon>MinInAbo)
   {
   ImpFac=ImpAbo+(MinCon-MinInAbo)*CosMinExc;
   printf("\nImporte de la factura: $ %f pesos",ImpFac);
   }
   else
   {
   printf("\nImporte de la factura: $ %f pesos",ImpAbo);
   }
getch();

}

Tambien me pedian el diagrama de flujo por si la kieren ver :D igual ya me dijo q estaba bien :D


Uploaded with ImageShack.us

EDit: como se pone en color blanco de fondo el codigo, asi no kedo mal :) gracias