Dudas programación en C

Iniciado por ironserch, 24 Septiembre 2014, 12:53 PM

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

ironserch

Hola amig@s necesito crear un codigo en C. En el me piden que se escriban las siguientes expresiones enteras: 1 -12 -123 1234 12345 una en cada linea y con un ancho de campo igual a 9.

Ampliar el programa con una sentencia de escritura que escriba las mismas expresiones especificando solo un ancho de campo a 4.

(Hasta aqui creo que tendria el codigo bien)

Pero me pide ahora que añada otra sentencia de escritura que escriba en una nueva linea tu inicial con un ancho de campo = 3 seguida del caracter \ y a continuacion tus apellidos con un ancho de campo = 15.

Luego incluyendo una variable "r" de tipo float, añadir otras 3 sentencias de escritura que escriban en una nueva linea su valor real, su valor con dos decimales y su valor real en un ancho de 10 y 2 de precision. Asignar previamente el valor 123.129.


#include <stdio.h>

void main()
{
    system("title SALIDA DE DATOS CON FORMATO EJERCICIO A");

    int ent1, ent2, ent3, ent4, ent5;

    printf("Introducir primera expresion enteras: ");
    scanf("%d", &ent1);

    printf("\n\nIntroducir primera expresion enteras: ");
    scanf("%d", &ent2);

    printf("\n\nIntroducir primera expresion enteras: ");
    scanf("%d", &ent3);

    printf("\n\nIntroducir primera expresion enteras: ");
    scanf("%d", &ent4);

    printf("\n\nIntroducir primera expresion enteras: ");
    scanf("%d", &ent5);

    //ancho de campo = 9:

    printf("\n\n\nPara el ancho de campo = 9:");

    printf("\n\n%9d", ent1);

    printf("\n\n%9d", ent2);

    printf("\n\n%9d", ent3);

    printf("\n\n%9d", ent4);

    printf("\n\n%9d", ent5);

    //ancho de campo = 4:

    printf("\n\n\nPara el ancho de campo = 4:");

    printf("\n\n%4d", ent1);

    printf("\n\n%4d", ent2);

    printf("\n\n%4d", ent3);

    printf("\n\n%4d", ent4);

    printf("\n\n%4d", ent5);

    /* Hasta aqui me resuelve bien.

   pero no se como se haria el tercer punto */


    char nombre, apellido;

    printf("\n\n\nIntroducir nombre: ");
    scanf("%c", &nombre);
   
    printf("\n\n ")

    printf("\n\n\nIntroducir apellido: ");
    scanf("%c", &apellido);
   
    /* tendria que salir si el nombre por ej es ELENA y sus apellidos NITO DEL BOSQUE

    tendria que aparecer como ELE\NITO DEL BOSQUE*/

}



PD: Me piden que lo haga sin estructuras de control.

Muchas gracias! =)


ironserch

Para el tercer apartado me sale si escribo lo siguiente

   printf("\n\n%3s %15", "ELE\\NITO DEL BOSQUE");

Pero quiero tenerlo de esta otra forma:

char nombre, apellidos;

    printf("\n\n\nIntroducir nombre: ");
    scanf("%3s", &nombre);

    printf("\n\n\nIntroducir apellidos: ");
    scanf("%15s", &apellidos);

    printf("\n\nLa sentencia seria: %3s %15", "nombre\\apellidos");

eferion

Cita de: ironserch en 24 Septiembre 2014, 13:36 PM
char nombre, apellidos;

Si tu intención es almacenar cadenas de caracteres tienes que usar buffers. Un char, a secas, únicamente puede almacenar un carácter... una cadena de caracteres, como su propio nombre indica, es una agrupación de varios caracteres:

char nombre[20], apellidos[20];

Si sabes que el nombre no va a pasar de 3 caracteres y los apellidos de 15 puedes apurar el uso de memoria al máximo:

char nombre[4], apellidos[16];

Esto es porque las cadenas de caracteres SIEMPRE acaban con el carácter nulo, luego necesitas añadir uno a la longitud máxima prevista en la cadena.

Un saludo.

ironserch

#3
Pero como hago para que me aparezca como "ELE\NITO DEL BOSQUE"??

El codigo que tengo ahora es este:


   char nombre[4], apellidos[16];

    printf("\n\n\nIntroducir nombre: ");
    scanf("%s", &nombre);

    printf("\n\n\nIntroducir apellidos: ");
    scanf("%s", &apellidos);

    printf("\n\nLa sentencia seria: %s %s", nombre\\apellidos);


rir3760

Cita de: ironserch en 24 Septiembre 2014, 12:53 PMPero me pide ahora que añada otra sentencia de escritura que escriba en una nueva linea tu inicial con un ancho de campo = 3 seguida del caracter \ y a continuacion tus apellidos con un ancho de campo = 15.
Para obtener el nombre (una sola palabra) utilizas "%s" y para el apellido (varias palabras) " %[^\n]", de esta forma:
char nombre[4], apellidos[16];

puts("Nombre:");
scanf("%s", nombre); /* NO se debe utilizar el operador '&' */

puts("Apellidos:");
scanf(" %[^\n]", apellidos); /* NO se debe utilizar el operador '&' */


Para la impresión utilizas "%3c" para el primer carácter del nombre (almacenado en "nombre[0]"), "%15s" para los apellidos y el carácter '\' se debe escapar con '\\':
printf("%3c\\%15s\n", nombre[0], apellidos);

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language