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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con matrices y cadenas.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con matrices y cadenas.  (Leído 2,281 veces)
GustavoArango

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Problema con matrices y cadenas.
« en: 7 Mayo 2017, 05:31 am »

Empece a programar hace poco, y aunque en la universidad no hemos visto matrices, yo he estado investigando y ya se (mas o menos  :silbar:) como realizar una matriz, hice varios ejercicios, asi que decidi dar el siguiente paso, intente hacer una matriz con cadenas, y por el titulo del post pues ya se habran imaginado que paso  :xD este es el programa:

Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3. #include<string>
  4. using namespace std;
  5.  
  6. main()
  7. {
  8. int f1,c1,f,c,i,j,k,m;
  9. string a;
  10.  
  11.    printf("Por favor digite la cantidad de filas que desea:");
  12.    scanf("%d",&f);
  13.    printf("Por favor digite la cantidad de columnas que desea:");
  14.    scanf("%d",&c);
  15.  
  16. f1=f+1;
  17. c1=c+1;
  18.  
  19. string matrizB[f1][c1];    
  20.  
  21.   for(i=1;i<=f;i++)
  22.       {
  23.         printf("\n\t");
  24.  
  25.        for(j=1;j<=c;j++)
  26.        {          
  27.           printf("\n\t");
  28.           printf("posicion (%d,%d):",i,j);
  29.   scanf("%s",&a);
  30.           matrizB[i][j]=a;
  31.        }
  32.       }
  33.       for(i=1;i<=f;i++)
  34.       {
  35.       printf("\tF%d\t",i);
  36.   }
  37.  
  38.       for(i=1;i<=f;i++)
  39.       {
  40.       printf("\n");
  41.       printf("C%d",i);
  42.       for(j=1;j<=c;j++)
  43.       {
  44.       printf("\t%s\t",matrizB[i][j].c_str());
  45.   }
  46.   }    
  47. }
  48.  
Si, se que hay MUCHÍSIMOS errores (no me juzguen comencé hace poco  :rolleyes:), tal vez habrán muchas novatadas y cosas que sobran, pero es lo que puedo hacer hasta que tenga ya bastante experiencia en este tema. Bueno, el tema aquí es que si en vez de string cambio todo a int, es decir utilizo números, el programa funciona de maravilla:
Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3.  
  4. main()
  5. {
  6. int a,f1,c1,f,c,i,j,k,m;
  7.  
  8.    printf("Por favor digite la cantidad de filas que desea:");
  9.    scanf("%d",&f);
  10.    printf("Por favor digite la cantidad de columnas que desea:");
  11.    scanf("%d",&c);
  12.  
  13. f1=f+1;
  14. c1=c+1;
  15.  
  16. int matrizB[f1][c1];    
  17.  
  18.   for(i=1;i<=f;i++)
  19.       {
  20.         printf("\n\t");
  21.  
  22.        for(j=1;j<=c;j++)
  23.        {          
  24.           printf("\n\t");
  25.           printf("posicion (%d,%d):",i,j);
  26.   scanf("%d",&a);
  27.           matrizB[i][j]=a;
  28.        }
  29.       }
  30.       for(i=1;i<=f;i++)
  31.       {
  32.       printf("\tF%d\t",i);
  33.   }
  34.  
  35.       for(i=1;i<=f;i++)
  36.       {
  37.       printf("\n");
  38.       printf("C%d",i);
  39.       for(j=1;j<=c;j++)
  40.       {
  41.       printf("\t%d\t",matrizB[i][j]);
  42.   }
  43.   }
  44. }

Creí que simplemente cambiando los números a cadenas iba a funcionar, pero ya veo que no, alguien me podría ayudar por favor, o si lo estoy haciendo mal y hay otra forma con la que se introduce caracteres o cadenas a una matriz me podrían indicar cual es, muchas gracias  ;D ;D ;D


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex


« Última modificación: 7 Mayo 2017, 06:02 am por engel lex » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con matrices y cadenas.
« Respuesta #1 en: 7 Mayo 2017, 06:31 am »

ok... hace poco habia dicho que no se podìa programar mezclado c y c++ o era uno u otro... ya veo que no...

D: tu codigo es un desastre D:

si estás usando <string> y "using namespace" estás en c++, entonces lee y escribe por sus respectivos metodos para sus variables

primero que nada main debe ser int y retornar 0 si todo salió bien

no entiendo porque en tu array siempre empiezas desde 1 :s


simplemente te dejaré la forma en que yo lo haría en C++

Código
  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.  int f,c,i,j;
  8.  
  9.  cout << "Por favor digite la cantidad de filas que desea:";
  10.  cin >> f;
  11.  cout << "Por favor digite la cantidad de columnas que desea:";
  12.  cin >> c;
  13.  
  14.  string matrizB[f][c];
  15.  
  16.  for(i=0;i<f;i++){
  17.    cout << endl;
  18.  
  19.    for(j=0;j<c;j++){
  20.      cout << endl;
  21.      cout << "\tposicion (" << (i+1) << ":" << (j+1) << "): ";
  22.      cin >> matrizB[i][j];
  23.    }
  24.  }
  25.  for(i=0;i<f;i++){
  26.    cout << "\tF" << (i+1) << "\t";
  27.  }
  28.  
  29.  for(i=0;i<f;i++){
  30.    cout << endl;
  31.    cout << "C" << (i+1);
  32.    for(j=0;j<c;j++){
  33.      cout << "\t" << matrizB[i][j] << "\t";
  34.    }
  35.  }
  36.  cout << endl;
  37.  return 0;
  38. }
  39.  

y aquí en C
Código
  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int main(){
  5.  int f,c,i,j;
  6.  
  7.  printf("Por favor digite la cantidad de filas que desea:");
  8.  scanf("%d",&f);
  9.  printf("Por favor digite la cantidad de columnas que desea:");
  10.  scanf("%d",&c);
  11.  
  12.  char matrizB[f][c][20];    
  13.  
  14.  for(i=0;i<f;i++){
  15.    printf("\n\t");
  16.  
  17.    for(j=0;j<c;j++){          
  18.      printf("\n\t");
  19.      printf("posicion (%d,%d):",i+1,j+1);
  20.      scanf("%s",matrizB[i][j]);
  21.    }
  22.  }
  23.  for(i=0;i<f;i++){
  24.    printf("\tF%d\t",i+1);
  25.  }
  26.  
  27.  for(i=0;i<f;i++){
  28.    printf("\n");
  29.    printf("C%d",i+1);
  30.    for(j=0;j<c;j++){
  31.      printf("\t%s\t",matrizB[i][j]);
  32.    }
  33.  }  
  34.  printf("\n");
  35.  return 0;
  36. }


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con matrices y cadenas.
« Respuesta #2 en: 7 Mayo 2017, 17:17 pm »

Cuidado con dimensionar arrays a partir de variables,  eso es una dependencia del compilador. El estándar dice que solo se pueden dimensionar con constantes. Para dimensionar con variables debe de forma dinámica.
En línea

GustavoArango

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Problema con matrices y cadenas.
« Respuesta #3 en: 7 Mayo 2017, 18:46 pm »

Vale, gracias, no tenia idea que no podía mezclar una cosa con la otra, lo he hecho todo el tiempo  :silbar: , y lo de que la matriz comience en +1 son puras paranoias mías, creí que si lo dejaba exacto no iba a funcionar porque no leería el ultimo dato o alguna cosa así :xD , ya veo que no, el problema es que no estoy familiarizado con la librería iostream, sino con la stdio, no sabia que la primera era la de c++, solo me han enseñado stdio, de nuevo muchas gracias por mostrarme el programa, me ayudo a aclararme en muchas cosas, saludos  :)
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con matrices y cadenas.
« Respuesta #4 en: 7 Mayo 2017, 18:49 pm »

Cuidado con dimensionar arrays a partir de variables,  eso es una dependencia del compilador. El estándar dice que solo se pueden dimensionar con constantes. Para dimensionar con variables debe de forma dinámica.

cierto XD pero soy sincero y me ha dado pereza siempre la redimensión en C y en C++ eso me iba a tomar como 6 lineas XD
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
un problema de matrices
Programación Visual Basic
ZifuSka 3 1,862 Último mensaje 24 Octubre 2005, 05:35 am
por ZifuSka
Problema con matrices
Programación Visual Basic
nhaalclkiemr 6 2,231 Último mensaje 25 Agosto 2007, 22:04 pm
por CeLaYa
Ayuda con matrices de cadenas « 1 2 »
Programación C/C++
negux 14 13,451 Último mensaje 30 Junio 2010, 00:17 am
por negux
[c] Problema con matrices
Programación C/C++
Dacan 1 1,662 Último mensaje 5 Abril 2013, 03:53 am
por betokscr
Problema con matrices
Programación C/C++
Xammm 4 2,647 Último mensaje 10 Julio 2014, 14:07 pm
por Xammm
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines