elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con un programa(DEV C++)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con un programa(DEV C++)  (Leído 3,483 veces)
Kurosaki12

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Ayuda con un programa(DEV C++)
« en: 4 Mayo 2010, 22:09 pm »

Nesecito que alguien me ayude con este programa, no se como hacer para que al ingresar el nombre al registro me acepte espacios.

porfavor alguien que me ayude.

gracias


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
   
    char nombre[5][50];
    int r, c, op;
    char opc;
    for (r=0; r<=4; r++)
    for (c=0; c<=49; c++)
         nombre[r][c]=' ';
 
 
   
    cout << "Registros disponibles: ";
   
    for (r=0; r<=4; r++)
    if(nombre[r][0]==' ')
    printf("%i ", r+1);
   
    if (nombre[0][0]!=' ' && nombre[1][0]!=' ' && nombre[2][0]!=' ' && nombre[3][0]!=' ' && nombre[4][0]!=' ' )
    printf("Ninguno");
    else
    cout << endl;
   
     do{
   
    printf("Que registro desea editar (1 - 5): ");
    scanf("%i", &op);

    switch (op){

           case 1:
                if (nombre[0][0]==' ')
                {printf("Teclea el nombre a ingresar: ");
                scanf("%s", nombre[0]);}
                else
                printf("Registro ya ocupado por: %s \n", nombre[0]);
                break;

           case 2:
                if (nombre[2][0]!=' ')
                printf("Registro ya ocupado por: %s \n", nombre[1]);
                else
                printf("Teclea el nombre a ingresar: "), scanf("%s", nombre[1]);
                break;

           case 3:
                if (nombre[3][0]!=' ')
                printf("Registro ya ocupado por: %s \n", nombre[2]);
                else
                printf("Teclea el nombre a ingresar: "), scanf("%s", nombre[2]);
                break;

           case 4:
                if (nombre[3][0]!=' ')
                printf("Registro ya ocupado por: %s \n", nombre[3]);
                else
                printf("Teclea el nombre a ingresar: "), scanf("%s", nombre[3]);
                break;

           case 5:
                if (nombre[4][0]!=' ')
                printf("Registro ya ocupado por: %s \n", nombre[4]);
                else
                printf("Teclea el nombre a ingresar: "), scanf("%s", nombre[4]);
                break;
                default: cout<< "Has ingresado un dato erroneo\n";
}

cout << endl << "Deceas ingresar otro registro (S=Si,N=No):", cin >> opc;

} while(opc=='S' || opc=='s');

    cout << endl;
    cout << endl;
    cout << opc;
    system("pause");
    return 0;
}


En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Ayuda con un programa(DEV C++)
« Respuesta #1 en: 4 Mayo 2010, 22:18 pm »

No hace falta que lo vuelvas a repetir en otro post si ya lo pusiste.

En vez de scanf, utiliza otra funcion, ya que scanf a la hora de recoger strings sólo lo hace hasta el primer espacio. gets creo que sería, pero tenía sus defectos.


En línea

Kurosaki12

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Ayuda con un programa(DEV C++)
« Respuesta #2 en: 4 Mayo 2010, 22:20 pm »

ya intente usar gets pero me marca error en el programa
En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Ayuda con un programa(DEV C++)
« Respuesta #3 en: 5 Mayo 2010, 00:17 am »

Citar
ya que scanf a la hora de recoger strings sólo lo hace hasta el primer espacio

%[^\n] ahi le lee toda la linea.
En línea

Belial & Grimoire


Desconectado Desconectado

Mensajes: 559


Tea_Madhatter


Ver Perfil
Re: Ayuda con un programa(DEV C++)
« Respuesta #4 en: 5 Mayo 2010, 01:39 am »

utiliza fgets

fgets(op, sizeof(op), stdin);

y pon opt como char
En línea

.                                 
Kurosaki12

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Ayuda con un programa(DEV C++)
« Respuesta #5 en: 5 Mayo 2010, 17:51 pm »


Si pongo automaticamente la opcion (op) en 1 (o en cualquier otro) si me permite ingresar caracteres con espacios ("%[^\n]"), en pocas palabras al hacer la pregunta de cual registro se desea modificar es cuando surgen los problemas. Pero no lo he resuelto ¿como plantear la pregunta adecuadamente?.



Código
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. using namespace std;
  6. int main() {
  7.  
  8.    char nombre[5][50];
  9.    int r, c, pre;
  10.    int op;
  11.  
  12.    for (r=0; r<=4; r++)
  13.    for (c=0; c<=0; c++)
  14.         nombre[r][c]='0';
  15.  
  16.    nombre[0][1]='\0';
  17.    nombre[1][1]='\0';
  18.    nombre[2][1]='\0';
  19.    nombre[3][1]='\0';
  20.    nombre[4][1]='\0';
  21.  
  22.    do{
  23.  
  24.    cout << endl << "Registros disponibles: ";
  25.  
  26.    for (r=0; r<=4; r++)
  27.    if(nombre[r][0]=='0')
  28.    printf("%i ", r+1);
  29.  
  30.    if (nombre[0][0]!='0' && nombre[1][0]!='0' && nombre[2][0]!='0' && nombre[3][0]!='0' && nombre[4][0]!='0' )
  31.    printf("Ninguno");
  32.    else
  33.    cout << endl;
  34.  
  35.    op=1;
  36.  
  37.  
  38.  
  39.  
  40. switch (op){
  41.           case 1:
  42.                if (nombre[0][0]=='0')
  43.                {printf("Teclea el nombre a ingresar: ");
  44.                scanf("%[^\n]", nombre[0]);}                              
  45.                else
  46.                cout << "Registro ya ocupado por: " <<  nombre[0];
  47.                break;
  48.           case 2:
  49.                if (nombre[1][0]=='0')
  50.                {printf("Teclea el nombre a ingresar: ");
  51.                scanf("%[^\n]", nombre[1]);}
  52.                else
  53.                cout << "Registro ya ocupado por: " <<  nombre[1];
  54.                break;
  55.           case 3:
  56.                if (nombre[2][0]=='0')
  57.                {printf("Teclea el nombre a ingresar: ");
  58.                scanf("%[^\n]", nombre[2]);}
  59.                else
  60.                cout << "Registro ya ocupado por: " <<  nombre[2];
  61.                break;
  62.           case 4:
  63.                if (nombre[3][0]=='0')
  64.                {printf("Teclea el nombre a ingresar: ");
  65.                scanf("%[^\n]", nombre[3]);}
  66.                else
  67.                cout << "Registro ya ocupado por: " <<  nombre[3];
  68.                break;
  69.           case 5:
  70.                if (nombre[4][0]=='0')
  71.                {printf("Teclea el nombre a ingresar: ");
  72.                scanf("%[^\n]", nombre[4]);}
  73.                else
  74.                cout << "Registro ya ocupado por: " <<  nombre[4];
  75.                break;
  76.           default: cout<< "Has ingresado un dato erroneo\n";}
  77.           cout << endl;
  78.           cout << "Desea modificar otro registro?\nSi(1)\nNo(0)", cin >> pre;
  79.  
  80. }while (pre==1);
  81.       cout << endl << "Los registros quedaron de la siguiente manera: " << endl;
  82.       cout << "Registro 1: " << nombre[0] << endl;
  83.       cout << "Registro 2: " << nombre[1] << endl;
  84.       cout << "Registro 3: " << nombre[2] << endl;
  85.       cout << "Registro 4: " << nombre[3] << endl;
  86.       cout << "Registro 5: " << nombre[4] << endl;
  87.    cout << endl;
  88.    cout << endl;
  89.    system("pause");
  90.    return 0;
  91. }
  92.  
  93.  
  94.  
En línea

Horricreu
Wiki

Desconectado Desconectado

Mensajes: 290

¡La verdad os hará libres!


Ver Perfil WWW
Re: Ayuda con un programa(DEV C++)
« Respuesta #6 en: 5 Mayo 2010, 18:01 pm »

scanf():

Citar
scanf type specifiers:

Type: s
Qualifying input: string of characters. This will read subsequent characters until a whitespace is found (whitespace characters are considered to be blank, newline and tab).   
Type of argument: char *

En resumen, utiliza %s.

Saludos :P
« Última modificación: 24 Octubre 2010, 13:17 pm por Horricreu » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines