Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - veravluis

#1
Cita de: MAFUS en 19 Marzo 2017, 02:12 AM
Un ejemplo con tus datos:

#include <stdio.h>

int main() {
char nombreEdad[] = "Luis 20";
   char nombre[20];
   int edad;
   
   sscanf(nombreEdad, "%s %i", nombre, &edad);
   
   printf("Nombre: %s\n", nombre);
   printf("Edad: %i\n", edad);
}


Gracias por su ayuda me sirvió de mucho, pero se me presento otro problema no puedo leer numeros con 10 digitos, me lee perfecto hasta 9 numeros pero con 10 me sale un numero diferente al que leo, como podría solucionar esto ? gracias

Código (cpp) [Seleccionar]

char datos[] = "1 2304872458";

int code;
unsigned long code1;

sscanf(datos, "%i %i", &code, &code1);

printf("%i ",code);
printf("%i ",code1);


//Solución %u, Gracias por la ayuda.
#2
Cita de: MAFUS en 19 Marzo 2017, 00:44 AM
Deberías conocer la biblioteca estándar. Así verías que muchas de las cosas ya están hechas.

sscanf: http://c.conclase.net/librerias/?ansifun=sscanf

Citar
Si puedes hacer un ejemplo con lo que yo publique te lo agradecería
#3
Cita de: MAFUS en 19 Marzo 2017, 00:23 AM
Si sabes que la cadena a separar siempre tiene el mismo formato puedes usar sscanf.

Citar
No entiendo lo que me quieres decir.
scanf ó cin son para pedir datos a los usuarios pero yo no necesito pedirselos ya que ya los tengo solo deseo separarlos y luego usarlos en variables diferentes.
#4
// Estoy separando la variable (char) nombreEdad y funciona bien
// El resultado por pantalla es :
// Luis
// 20
// Me gustaría saber como podría poner el nombre Luis en una variable char diferente, y el numero 20 en una variable de tipo int, espero me entiendan y puedan ayudar gracias.

Código (cpp) [Seleccionar]

char nombreEdad[] = "Luis 20";
char* a;

a = strtok(nombre, " ");
while(a != NULL) {


cout << a << endl;
a = strtok(NULL, " ");

}
#5
Tengo un problema con esto espero puedan ayudarme, si to tengo una matriz

116456
115456
234566
789123
Ejemplo si yo estoy en la casilla (0,0) & al parecer en este momento soy el numero "1" el cual esta rodeado por los numeros "2 , 3 , 4 , 5 , 6" Lo que yo quiero hacer es que cuando le de al numero EJEMPLO "6" mi matriz quede así, osea transforme todos los numeros que llevaba en el numero que voy a presionar.

666456
665456
234566
789123

& si le vuelvo a dar al numero 4 mi matriz quedaría así.

444456
445456
234566
789123 & si vuelvo a presionar el 5 quedaría así

555556
555556
234566
789123 Bueno así hasta llenar la matriz con 1 solo numero, el problema es que en mi código cuando yo presiono el numero cambia todos los números, no solo los que tengo alrededor.

Los números que llevo deberían transformarse en el nuevo que acabo de presionar. espero su ayuda gracias.

[HIGHLIGHT="C"]
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define filas 10
#define columnas 10
#define fico 10

void cargar_matriz(int matriz[][columnas]);
void pintar_matriz(int matriz[][columnas]);
void movimiento_matriz(int matriz[][columnas]);
void jugar(int matriz[][columnas]);

int i,j;

int main() {

int matriz[filas][columnas];

jugar(matriz);

}

void cargar_matriz(int matriz[][columnas]) {

for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
matriz[i][j] = rand()%6+1;
}
}
return;
}

void pintar_matriz(int matriz[][columnas]) {

for(i = 0; i < filas; i++) {
printf("\n\t\t\t");
for(j = 0; j < columnas; j++) {
printf("%d",matriz[i][j]);
}
}
printf("\n\n");
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),7);
printf("\t1 \t2 \t3 \t4 \t5 \t6 \n");
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),1);
printf("\t%c",219);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),2);
printf("\t%c",219);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),3);
printf("\t%c",219);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),4);
printf("\t%c",219);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),5);
printf("\t%c",219);
SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),6);
printf("\t%c",219);


movimiento_matriz(matriz);
}

void movimiento_matriz(int matriz[][columnas]){

int mycolor;

mycolor = matriz[0][0];
matriz[0][0] = 10;

char tecla;

tecla = getch();
//matriz[0][0] = 10;

switch (tecla) {

case '1' : {
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
if(matriz[i][j] == mycolor ){
matriz[i][j] = 10;
}
}
}
for(i = 0; i < fico; i++) {
for (j = 0; j < fico; j++){
if(matriz[i][j] == 10) {
matriz[i][j] = 1;
}
}
}

break;
}

case '2' : {
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
if(matriz[i][j] == mycolor ) {
matriz[i][j] = 10;
}
}

}
for(i = 0; i < fico; i++) {
for (j = 0; j < fico; j++){
if(matriz[i][j] == 10) {
matriz[i][j] = 2;
}
}
}
break;
}

case '3' : {
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
if(matriz[i][j] == mycolor ) {
matriz[i][j] = 10;
}
}
}

for(i = 0; i < fico; i++) {
for (j = 0; j < fico; j++){
if(matriz[i][j] == 10) {
matriz[i][j] = 3;
}
}
}
break;
}

case '4' : {
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
if(matriz[i][j] == mycolor ) {
matriz[i][j] = 10;
}
}
}
for(i = 0; i < fico; i++) {
for (j = 0; j < fico; j++){
if(matriz[i][j] == 10) {
matriz[i][j] = 4;
}
}
}
break;
}

case '5' : {
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
if(matriz[i][j] == mycolor ) {
matriz[i][j] = 10;
}
}
}
for(i = 0; i < fico; i++) {
for (j = 0; j < fico; j++){
if(matriz[i][j] == 10) {
matriz[i][j] = 5;
}
}
}
break;
}

case '6' : {
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
if(matriz[i][j]== mycolor ) {
matriz[i][j] = 10;
}
}
}
for(i = 0; i < fico; i++) {
for (j = 0; j < fico; j++){
if(matriz[i][j] == 10) {
matriz[i][j] = 6;
}
}
}
break;
}

default : {

printf("\nError\n");
break;
}
}

system("cls");
pintar_matriz(matriz);

}

void jugar(int matriz[][columnas]) {

cargar_matriz(matriz);
pintar_matriz(matriz);
movimiento_matriz(matriz);

}
#6
Cita de: MAFUS en 24 Abril 2016, 22:07 PM
De entrada se me plantea una duda:
Si la matriz ordenada no puede repetir ningún número puede que sea de menor tamaño que la matriz original. Siendo así:
¿La matriz ordenada debe ser la misma matriz original? Si la matriz original es estática, eso es definida del tipo T[dimY][dimX], no se puede reducir su tamaño. ¿Cómo se marcan las casillas vacías? ¿Cómo se distribuye la información en la matriz?
Si la matriz original es dinámica se pueden reducir sus dimensiones pero de nuevo aparece el problema de como se distribuye el sistema si no se pueden cuadrar las dimensiones (número impar de elementos).

Entonces cuando cargo los números es que debería revisar si están repetido?
#7
Un ejemplo como podría hacer para que no se repitieran los números debería agregar una función o agregarlo a una de las que ya tengo.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define filas 5
#define columnas 5

void cargar_matriz(int matriz[filas][columnas]);
void ordenar_matriz(int matriz[filas][columnas]);
void imprimir_matriz(int matriz[filas][columnas]);

int i,j,k,l;

    int main()  {
   
    int matriz[filas][columnas];
   
    cargar_matriz(matriz);
    ordenar_matriz(matriz);
    imprimir_matriz(matriz);
       
    return 0;   
    }//Fin main
   
   
    void cargar_matriz(int matriz[filas][columnas]){
   
    for(i = 0; i < filas; i++) {
       
        for(j = 0; j < columnas; j++) {
        matriz[i][j] = rand()%25+1;
}
}
   
}//Fin función


void ordenar_matriz(int matriz[filas][columnas]){

int mayor;

for(i = 0; i < filas;i++)   {

            for(j = 0; j < columnas;j++){
           
            for(k = 0; k < 5;k ++) {
           
            for(l = 0; l < 5; l++) {
           
            if(matriz[i][j] < matriz[k][l]) {
           
            mayor = matriz[i][j];
            matriz[i][j] = matriz[k][l];
            matriz[k][l] = mayor;
           
}
}
}

            }
        }
}//Fin Función.

void imprimir_matriz(int matriz[filas][columnas]){

for(i = 0; i < filas; i++) {
        printf("\n");
        for(j = 0; j < columnas; j++) {
        printf(" %d ",matriz[i][j]);
}
}
}//Fin función
#8
Hola a todos, una pregunta como podría ordenar esta matriz de números aleatorios & hacer que no se repitieran ? Gracias por cierto me recomiendan algun libro de C para leer o algo gracias.


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define filas 5
#define columnas 5

int i,j;

int main() {

srand(time(NULL));
int num;
int matriz[filas][columnas];
//num = rand()%1+9;

for(i = 0; i < filas;i++) {
printf("\n");
for(j = 0; j < columnas;j++){
matriz[i][j] = rand()%9+1;
printf("%d ",matriz[i][j]);
}
}

return 0;
}
#9
Hola amigos en este momento se me esta presentando una complicación para realizar este código, mi problema es el siguiente debería hacer esto de la imagen:http://prnt.sc/ag69x6

Ya separe los números en vectores tengo su resultado pero no se como podria hacer para realizar las operaciones que salen en la foto seria cortar el vector en 2 como & efectuar las diagonales a este proceso se le llama la multiplicación arabe, si tienen idea de como podria hacer se los agradecería.

Llevo esto de código.


#include <stdio.h>

int main(){

int num,num2;
int vector[20];
int a,b,c,d,e,f,g,h;

printf("Ingrese el primero numero : ");
scanf("%d",&num);

if (num >= 0000){
if (num <= 9999){
a = num / 1000;
b = (num % 1000) / 100;
c = (num % 1000) % 100 / 10;
d = ((num % 1000) % 100) % 10 / 1;
}
}

printf("Ingrese el segundo numero : ");
scanf("%d",&num2);

if (num2 >= 0000){
if (num2 <= 9999){
e = num2 / 1000;
f = (num2 % 1000) / 100;
g = (num2 % 1000) % 100 / 10;
h = ((num2 % 1000) % 100) % 10 / 1;
}
}

//printf("Usted esta multiplicando %d * %d\n",num,num2);

vector[0] = d*e; vector[1] = c*e; vector[2] = b*e; vector[3] = a*e;
vector[4] = d*f; vector[5] = c*f; vector[6] = b*f; vector[7] = a*f;
vector[8] = d*g; vector[9] = c*g; vector[10] = b*g; vector[11] = a*g;
vector[12] = d*h; vector[13] = c*h; vector[14] = b*h; vector[15] = a*h;

printf("El resultado es : %d %d %d %d\n",vector[0], vector[4], vector[8], vector[12]);
printf("El resultado es : %d %d %d %d\n",vector[1], vector[5], vector[9], vector[13]);
printf("El resultado es : %d %d %d %d\n",vector[2], vector[6], vector[10], vector[14]);
printf("El resultado es : %d %d %d %d\n",vector[3], vector[7], vector[11], vector[15]);



return 0;

}
#10
Hola amigos, una pregunta como haria para que cuando toque el numero "3" salga un mensaje en pantalla Haz ganado, de ante mano gracias.



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

#define maxfilas 10
#define minfilas 3
#define maxcolum 10
#define mincolum 3

int main(){

int filas,columnas,i ,j,a,num,num2;
int matriz[400][400];
srand(time(NULL));

printf("Bienvenido.\n");

do {
fflush(stdin);
printf("Ingrese el numero de filas que tendra el juego\n");
a = isdigit(filas);
scanf("%d",&filas);
}


while(filas > maxfilas || filas < minfilas);

do {
fflush(stdin);
printf("Ingrese el numero de columnas para el juego\n");
a = isdigit(columnas);
scanf("%d",&columnas);
}
while(columnas > maxcolum || columnas < mincolum);



//Cargamos la matriz
for(i = 0; i < filas; i++) {
for(j = 0; j < columnas; j++) {
matriz[i][j]=0;
matriz[num][num2]=8;
    matriz[filas][columnas]=3;
}
}
imprimir(filas,columnas,matriz);
movimiento(filas,columnas,matriz);


return 0;
}

void imprimir(int filas,int columnas,int matriz[maxfilas][maxcolum]) {

system("cls");
//int matriz[filas][columnas];
int num,num2,i,j;

//Imprimiendo la matriz
for(i = 0; i < filas; i++) {
printf("\n");
for(j = 0; j < columnas; j ++) {
if(matriz[i][j]==0) {
printf("0",matriz[i][j]);
}
if(matriz[i][j]==8) {
printf("\1",matriz[i][j]);
}
if(matriz[i][j]==3) {
printf("3",matriz[i][j]);
}
}
}




}// cierre funcion imprimir.

void movimiento(int filas,int columnas,int matriz[maxfilas][maxcolum]) {


int num,num2;
char tecla;

//int matriz[filas][columnas];
num = rand()%2+1;
num2 = rand()%2+1;
matriz[num][num2]=8;
matriz[filas-1][columnas-1]=3;

do {

tecla = getch();



matriz[filas][columnas]=0;
matriz[num][num2]=0;

switch (tecla) {


case 'w': {
if (matriz[num-1][num2]==0) {
num--;
if(matriz[num][num2]==3){
break;
}
}
break;
}
case 's': {
if (matriz[num+1][num2]==0) {
num++;
if(matriz[num][num2]==3){
break;
}
}
break;
}
case 'a': {
if (matriz[num][num2-1]==0) {
num2--;
if(matriz[num][num2]==3){
break;
}
}
break;
}
case 'd': {
if (matriz[num][num2+1]==0){
num2++;
if(matriz[num][num2]==3){
break;
}
}
break;
}

}//cierre switch
system("cls");
matriz[num][num2]=8;
matriz[filas][columnas]=0;
matriz[filas][columnas]=3;

imprimir(filas,columnas,matriz);


}while(tecla != 'x');

}