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


 


Tema destacado: Página de elhacker.net en Google+ Google+


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Aryuda con arrays con strings
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aryuda con arrays con strings  (Leído 183 veces)
Mozzard

Desconectado Desconectado

Mensajes: 25


cout << "Text here" << endl;


Ver Perfil
Aryuda con arrays con strings
« en: 10 Enero 2019, 22:13 »

Hola buenas este es un ejercicio de una pagina...
Ya me he pasado rato intentando ver como funciona esto pero no me salgo.
Lo que pide es que primero entres el numero de palabras que entraras en el programa, y despues de escribir cada palabra te escribe en pantalla los caracteres de las palabras que esten en la posicion de los numeros pares del array, y los de los numeros impares separados.
Pues este es el codigo, me pone error donde fgets(s), gracias!
Código:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int t,n=0;
    vector<char>s;
    cin>>t;
    for(int i=0;i<t;i++){
        fgets(s);
        for(int j=sizeof(s)/sizeof(*s);n<j;n++){
            if(s[n]%2==0){
                cout<<s[n];
            }
        }
        n=0;
        cout<<" ";
        for(int j=sizeof(s)/sizeof(*s);n<j;n++){
            if(s[n]%2!=0){
                cout<<s[n];
            }
        }
    }
   
    return 0;
}


En línea

Código:
Programalo... sin miedo...
YreX-DwX

Desconectado Desconectado

Mensajes: 296



Ver Perfil
Re: Aryuda con arrays con strings
« Respuesta #1 en: 10 Enero 2019, 22:21 »

Los vectores de la stl no se usan así. Mírate en cualquier sitio cómo funciona un vector y cómo funciona la función <fgets()>. Tienes que crear una variable auxiliar y después meterla en el vector, a grandes rasgos...

PD: Creo que estás interpretando mal el ejercicio, un array de palabras es un array de <string>, no de <char>. Has creado un vector de caracteres, no se palabras.

Aparte de eso, aunque el <for> se puede usar como lo estás usando en ese código, no es muy correcto. De todos modos el error más grave es el tipo del vector, miratelo a ver. Suerte :-X


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Beginner Web

Desconectado Desconectado

Mensajes: 285


youtu.be/0YhflLRE-DA


Ver Perfil
Re: Aryuda con arrays con strings
« Respuesta #2 en: 11 Enero 2019, 05:50 »

Código
  1. int main()
  2. {
  3. char palabra[]="salchicha", auxiliar[32];
  4. int i, j=0;
  5. for(i=0;i<strlen(palabra);i++){
  6. if(i%2==0)
  7. cout<<palabra[i];
  8. else{
  9. auxiliar[j]=palabra[i];
  10. j++;
  11. }
  12. }
  13. auxiliar[j]='\0';
  14. cout<<" "<<auxiliar<<endl;
  15. system("pause");
  16. }
« Última modificación: 11 Enero 2019, 05:53 por Beginner Web » En línea

Código
  1. #Programadora: Ana Kéldysh
  2. #Edad: 14 años
  3. #!/bin/bash
  4. echo Hola
Mozzard

Desconectado Desconectado

Mensajes: 25


cout << "Text here" << endl;


Ver Perfil
Re: Aryuda con arrays con strings
« Respuesta #3 en: 14 Enero 2019, 20:02 »

Código
  1. int main()
  2. {
  3. char palabra[]="salchicha", auxiliar[32];
  4. int i, j=0;
  5. for(i=0;i<strlen(palabra);i++){
  6. if(i%2==0)
  7. cout<<palabra[i];
  8. else{
  9. auxiliar[j]=palabra[i];
  10. j++;
  11. }
  12. }
  13. auxiliar[j]='\0';
  14. cout<<" "<<auxiliar<<endl;
  15. system("pause");
  16. }
Puedes explicar estas lineas pls? Gracias!
Código:
auxiliar[j]='\0';
cout<<" "<<auxiliar<<endl;
system("pause");
En línea

Código:
Programalo... sin miedo...
YreX-DwX

Desconectado Desconectado

Mensajes: 296



Ver Perfil
Re: Aryuda con arrays con strings
« Respuesta #4 en: 14 Enero 2019, 20:13 »

Una cadena de caracteres de tipo C, es decir, una variable char*, acaba cuando encuentra el caracter '\0'. Por ejemplo:
Código
  1. char *palabra = "hola"; // internamente se ha guardado hola\0
Si creas una cadena ingresando caracteres como en ese bucle, tienes que ingresar al final el caracter de final de cadena '\0'. Los métodos de copia <strcpy()> <strncpy()> y de entrada <gets()> <fgets()> etc ya hacen ellos eso y no tienes que preocuparte de ello. Sólo tienes que hacerlo si ingresas los caracteres "manualmente".

La siguiente línea es simplemente para mostrar la variable por pantalla. Y la última línea es para hacer una pausa y que no se cierre la pantalla del terminal cuando ejecutas el programa. El <system("pause")> es una mala práctica que se recomienda sustituir por <getchar()> en C (incluido en <stdio.h>) y <cin.get()> en C++ (incluido en <iostream>).
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Strings C « 1 2 3 »
Programación C/C++
sorcerer 21 5,458 Último mensaje 6 Febrero 2006, 21:07
por Manibal_man
Duda - Strings
Programación Visual Basic
h0oke 3 1,553 Último mensaje 23 Septiembre 2009, 01:11
por W0lFy
Duda con arrays dentro de arrays « 1 2 »
PHP
Servia 11 4,285 Último mensaje 10 Marzo 2011, 09:04
por Servia
Strings en C++
Programación C/C++
Fixxed 1 502 Último mensaje 11 Agosto 2015, 22:20
por ivancea96
Funcion RecomendarButacas Ayuda!! (Recorrer arrays de arrays)
Java
elenfatico 2 1,182 Último mensaje 7 Abril 2016, 00:44
por 50ShadesOfKenyi
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines