Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1)
- /*
- Nombre: Lucas Alarcon
- Fecha: 05-09-2017
- Nombre programa: Bus ticket
- Proposito: comprueba si la cadena incluye 2 letras diferentes y estas se encuentran alternadas
- */
- #include <stdio.h>
- #include <string.h>
- #define MAX 101
- int main()
- {
- int n,i,j,largo,flag;
- char boleto[MAX];
- scanf("%d",&n); //lectura de la cantidad de tickets
- for(i=0;i<n;i++) // dentro de este ciclo se lee y determina si el boleto cumple las condiciones
- {
- flag=1;
- strcpy(boleto,""); //se inicializa la cadena
- scanf("%s",boleto); //se lee el codigo
- getchar();
- largo = strlen(boleto); // calcula el largo del codigo
- for(j=0;j<largo-2;j=j+1) // recorre el codigo y compruba si cumple las codiciones
- {
- if((boleto[j] == boleto[j+1]) || (boleto[j] != boleto[j+2])) //si las letras no estan alternadas cambia la variable
- {
- flag=0;
- }
- }
- if((flag == 1) && (largo % 2 == 0)) //si el codigo cumple las condiciones se imprime SI
- {
- printf("SI\n");
- }
- else
- {
- printf("NO\n"); //si el codigo no cumple las condiciones se imprime NO
- }
- }
- return 0;
- }
- 2)
- /*
- Nombre: Lucas Alarcon
- Fecha: 05-09-2017
- Nombre programa: Culpable
- Proposito: compara que secuencia tiene la mayor similitud
- */
- #include <stdio.h>
- #define MAXCOL 20
- #define MAXFIL 10
- #define MAXNAME 51
- int main()
- {
- int n,i,j,mayor,cont;
- char nombres[MAXFIL][MAXNAME];
- int matriz[MAXFIL][MAXCOL];
- int vector[MAXCOL];
- int porcentaje[MAXFIL];
- do{ // valida que la cantida de sospechosos sea menor o igual a 10
- scanf("%d",&n);
- if(n<3) // si hay menos de 3 sospechosos termina el programa
- {
- printf("No hay suficientes sospechosos");
- return 0;
- }
- }while(n>10);
- getchar(); // elimina el enter de la lectura de n
- for(i=0;i<n;i++) // ciclo que lee los nombres y adn de los sospechosos y los guarda
- {
- scanf("%[^\n]s",nombres[i]);
- for(j=0;j<MAXCOL;j++)
- {
- scanf("%d",&matriz[i][j]);
- getchar();
- }
- }
- for(i=0;i<MAXCOL;i++) // lee la secuencia de adn encontrada en el sitio del suceso
- {
- scanf("%d",&vector[i]);
- getchar();
- }
- for(i=0;i<n;i++) // calcula el porcentaje de similitud del adn
- {
- cont = 0;
- for(j=0;j<MAXCOL;j++) // ciclo que ve cuantos digitos del sospechoso son iguales a los de la cadena
- {
- if(matriz[i][j] == vector[j])
- {
- cont++; // va guardando cantidad de digitos iguales
- }
- }
- porcentaje[i] = (cont * 100) / 20;
- }
- mayor = porcentaje[0];
- for(i=1;i<n;i++) // ciclo que encuentra la similitud mayor
- {
- if(porcentaje[i] > mayor)
- {
- mayor = porcentaje[i];
- }
- }
- for(i=0;i<n;i++) // ciclo que busca la posicion de la similitud mayor e imprime el o los culpables
- {
- if(porcentaje[i] == mayor)
- {
- printf("El culpable es %s con una similitud de %d%%\n",nombres[i],mayor);
- }
- }
- return 0;
- }
- 3)
- /*
- Nombre: Lucas Alarcon
- Fecha: 05-09-2017
- Nombre programa: Rotar matriz
- Proposito: rota una matriz por el angulo que se indica
- */
- #include<stdio.h>
- #define MAX 10
- int main ()
- {
- int n,m,i,j,k,aux;
- long long int ang,rot;
- int matriz[MAX][MAX];
- int matriz_rot[MAX][MAX];
- scanf("%d%d",&m,&n); // se lee las filas y columnas
- scanf("%lld",&ang); // se lee el angulo en el que se debe rotar
- if(ang % 90 == 0) // si el angulo es multiplo de 90 se ejecuta la rotacion de la matriz
- {
- for(i=0;i<m;i++) // se lee la matriz
- {
- for(j=0;j<n;j++)
- {
- scanf("%d",&matriz[i][j]);
- }
- }
- if(ang == 0) // si el angulo es 0 no se debe rotar la matriz
- {
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++)
- {
- printf("%d ",matriz[i][j]);
- }
- printf("\n");
- }
- }
- else
- {
- rot = ang / 90; // numero de rotaciones
- for(k=0;k<rot;k++)// ciclo que controla las rotaciones de la matriz
- {
- for(i=0;i<m;i++)// ciclo que rota la matriz en 90°
- {
- for(j=0;j<n;j++)
- {
- matriz_rot[j][i]=matriz[i][n-1-j];
- }
- }
- aux = n;
- n = m;
- m = aux;
- for(i=0;i<m;i++) // se copia la matriz rotada en la matriz original
- {
- for(j=0;j<n;j++)
- {
- matriz[i][j]=matriz_rot[i][j];
- }
- }
- }
- for(i=0;i<m;i++) // este ciclo imprime la matriz rotada
- {
- for(j=0;j<n;j++)
- {
- printf("%d ",matriz_rot[i][j]);
- }
- printf("\n");
- }
- }
- }
- else // si el angulo no es multiplo de 90 se imprime "angulo no valido" y termina el programa
- {
- printf("Angulo no valido");
- }
- return 0;
- }
- 4)
- /*
- Nombre: Lucas Alarcon
- Fecha: 05-09-2017
- Nombre programa: Sudoku
- Proposito: valida si un sudoku esta logrado, no logrado o incompleto
- */
- #include <stdio.h>
- #include <string.h>
- #define MAX 26
- int main()
- {
- int i,j,k,cont_cero,cont;
- char nombre[MAX];
- int matriz[9][9];
- cont_cero = 0;
- cont = 0;
- scanf("%[^\n]s",nombre); // se lee el nombre de la persona
- for(i=0;i<9;i++) // este ciclo lee el sudoku
- {
- for(j=0;j<9;j++)
- {
- scanf("%d",&matriz[i][j]);
- if(matriz[i][j] == 0) // si se encuentra un cero dentro de la matriz cambia la variable
- {
- cont_cero = 1;
- }
- }
- }
- if(cont_cero == 1) // se encontro un cero en la matriz se imprime el resultado
- {
- printf("%s: No finalizado",nombre);
- }
- else //si no se encontro un cero el programa continua
- {
- //este ciclo recorre cada fila de la matriz y busca si se repite un numero
- for(i=0;i<9;i++)
- {
- for(j=0;j<8;j++)
- {
- for(k=j+1;k<9;k++)
- {
- if(matriz[i][j] == matriz[i][k]) // si se repite un numero aumenta el contador y se termina el ciclo
- {
- cont++;
- break;
- }
- }
- }
- }
- //este ciclo recorre cada columna de la matriz y busca si se repite un numero
- for(j=0;j<9;j++)
- {
- for(i=0;i<8;i++)
- {
- for(k=i+1;k<9;k++)
- {
- if(matriz[i][j] == matriz[k][j]) // si se repite un numero aumenta el contador y se termina el ciclo
- {
- cont++;
- break;
- }
- }
- }
- }
- if (cont == 0) // si no se repitio ningun numero en la misma fila o columna imprime logrado
- {
- printf("%s: Logrado",nombre);
- }
- else if (cont != 0) // si se repitio algun numero imprime no logrado
- {
- printf("%s: No logrado",nombre);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement