|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - badyalberto
1
« en: Domingo 4 de Abril de 2010, 20:46 »
CREATE PROCEDURE nou_usuari @nomuser VARCHAR(50),@cognomuser VARCHAR(50),@loginuser VARCHAR(50) AS IF ( @loginuser = '' ) BEGIN SET @loginuser = LOWER(SUBSTRING(@nomuser,1,1)) + @cognomuser INSERT INTO usuaris VALUES (@nomuser,@cognomuser,@loginuser) END ELSE INSERT INTO usuaris VALUES (@nomuser,@cognomuser,@loginuser) GO EXEC nou_usuari 'Anna','Jimenez',''
Como poner un contador para que compare si esta el login, y si esta sucede que le ponga un numero detras ?
2
« en: Jueves 7 de Enero de 2010, 20:38 »
Como puedo convertir una array de string a una array de int?
string[] nummac = mac.Split(separador); foreach (string a in nummac) int[] valores = Convert.ToInt32(a);
Yo hago una cosa asi, pero me da error :S
3
« en: Martes 29 de Diciembre de 2009, 21:50 »
Okis gracias era eso Pero yo cuando comparo quiero comparar el valor mac o ip por separado. Como tu lo haces no lo mira por separado pq compara con value y value que valor tiene entonces ? Me pasa lo mismo cuando quiero printar los dos valores. using System; using System.Collections.Generic; using System.IO; public class Dato { public string mac; public string ip; } public class Treball { static SortedDictionary <string,Dato > dic = new SortedDictionary <string,Dato >(); public static void Main() { string clave="",dir; //dir=SeleccionarCarpeta(); StreamReader sr = new StreamReader ("J:\ASI2\EDD\dhcp.conf"); string linia = sr.ReadLine(); char[] separador = { ' ' }; bool guardamaccorrect=false,guardaipcorrect=false,clavecorrect=false; while ( linia != null ) { if ( linia.Contains("host") || linia.Contains("ethernet") || linia.Contains("fixed-address")) { string[] palabras = linia.Split(separador); foreach ( string p in palabras ) { if (!p.Contains(":") && !p.Contains("{") && !p.Contains("hardware") && !p.Contains("ethernet") && !p.Contains("fixed-address") && !p.Contains(".")) { if (p != "host") { clave=p; Console.WriteLine(clave); clavecorrect=true; } } if ( p.Contains(":")) { dato.mac=p; guardamaccorrect=true; } if (p.Contains(".")) { dato.ip=p; guardaipcorrect=true; } } Console.ReadKey(); } if (clavecorrect == true && guardaipcorrect == true && guardamaccorrect == true) { dic.Add(clave,dato); } linia = sr.ReadLine(); } Console.WriteLine("error"); menu(); } public static string SeleccionarCarpeta() { string dir; do { Console.Clear(); Console.WriteLine("Introdueix la direccio on esta ubicat el fitxer dchp.conf (Direccio Completa):"); dir=Console.ReadLine(); if (!File.Exists(dir)) { Console.WriteLine("El Fitxer no existeix"); Console.WriteLine("Pulsi una tecla ..."); Console.ReadKey(); } }while(!File.Exists(dir)); Console.WriteLine("Direccio Correcte."); Console.WriteLine("Presioni una tecla ..."); return dir; } public static void consultes() { string consult; Console.WriteLine("Introdueix el nom del host,la ip o la mac que vols consultar:"); consult=Console.ReadLine(); if (consult.Contains(".")) { foreach ( KeyValuePair<string,Dato> par in dic) { if (consult.CompareTo(par.Value.ToString()) == 0) { Console.WriteLine("{0} -> {1}", par.Key,par.Value); } } } else if (consult.Contains(":")) { foreach ( KeyValuePair<string,Dato> par in dic) { if (consult.CompareTo(par.Value.ToString()) == 0) { Console.WriteLine("{0} -> {1}", par.Key,par.Value); } } } else { foreach ( KeyValuePair<string,Dato> par in dic) //segunda forma { if (consult.CompareTo(par.Key.ToString()) == 0) { Console.WriteLine("{0} -> {1}", par.Key,par.Value); } } } Console.ReadKey(); } public static void modificar() { } public static void afegir() { } public static void eliminar() { } public static void guardar() { } public static void menu() { bool salir = false; while (!salir) { //Console.Clear(); Console.WriteLine("Escull una opcio:"); Console.WriteLine("1) Fer consultes sobre el diccionari."); Console.WriteLine("2) Modificar les dades d'un host existent en el diccionari."); Console.WriteLine("3) Afegir un host al diccionari."); Console.WriteLine("4) Eliminar un host del diccionari."); Console.WriteLine("5) Guardar el contingut del diccionari reemplaçant la secció corresponent del fitxer dhcp.conf"); Console.WriteLine("6) Salir."); ConsoleKeyInfo ck = Console.ReadKey(); switch(ck.KeyChar) { case '1': consultes(); break; case '2': modificar(); break; case '3': afegir(); break; case '4': eliminar(); break; case '5': guardar(); break; case '6': salir = true; Console.WriteLine("nPresione una tecla para salir ..."); break; } } Console.ReadKey(); } }
4
« en: Martes 29 de Diciembre de 2009, 16:06 »
using System; using System.Collections.Generic; using System.IO; public class Dato { public string mac; public string ip; } public class Treball { static SortedDictionary <string,Dato > dic = new SortedDictionary <string,Dato >(); public static void Main() { string clave,dir; dir=SeleccionarCarpeta(); StreamReader sr = new StreamReader (dir ); string linia = sr.ReadLine(); char[] separador = { ' ' }; bool guardamaccorrect=false,guardaipcorrect=false,clavecorrect=false; while ( linia != null ) { if ( linia.Contains("host") || linia.Contains("ethernet") || linia.Contains("fixed-address")) { string[] palabras = linia.Split(separador); foreach ( string p in palabras ) { if (!p.Contains(":") && !p.Contains("{") && !p.Contains("hardware") && !p.Contains("ethernet") && !p.Contains("fixed-address") && !p.Contains(".")) { if (p != "host") { clave=p; Console.WriteLine(clave); clavecorrect=true; } } if ( p.Contains(":")) { dato.mac=p; guardamaccorrect=true; } if (p.Contains(".")) { dato.ip=p; guardaipcorrect=true; } } } if (clavecorrect == true && guardaipcorrect == true && guardamaccorrect == true) { dic.Add(clave,dato); } linia = sr.ReadLine(); } menu(); Console.ReadKey(); } public static string SeleccionarCarpeta() { string dir; do { Console.Clear(); Console.WriteLine("Introdueix la direccio on esta ubicat el fitxer dchp.conf (Direccio Completa):"); dir=Console.ReadLine(); if (!File.Exists(dir)) { Console.WriteLine("El Fitxer no existeix"); Console.WriteLine("Pulsi una tecla ..."); Console.ReadKey(); } }while(!File.Exists(dir)); Console.WriteLine("Direccio Correcte."); Console.WriteLine("Presioni una tecla ..."); return dir; } public static void consultes() { string consult; Console.WriteLine("Introdueix el nom del host,la ip o la mac que vols consultar:"); consult=Console.ReadLine(); if (consult.Contains(".")) { foreach ( KeyValuePair<string,Dato> par in dic) { if ( par.Value == consult ) { Console.WriteLine("{0} -> {1}", par.Key,par.Value); } } } else if (consult.Contains(":")) { foreach ( KeyValuePair<string,Dato> par in dic) { if ( par.Value == consult ) { Console.WriteLine("{0} -> {1}", par.Key,par.Value); } } } else { foreach ( KeyValuePair<string,Dato> par in dic) //segunda forma { if ( par.key == consult ) { Console.WriteLine("{0} -> {1}", par.Key,par.Value); } } } } public static void modificar() { } public static void afegir() { } public static void eliminar() { } public static void guardar() { } public static void menu() { bool salir = false; while (!salir) { Console.Clear(); Console.WriteLine("Escull una opcio:"); Console.WriteLine("1) Fer consultes sobre el diccionari."); Console.WriteLine("2) Modificar les dades d'un host existent en el diccionari."); Console.WriteLine("3) Afegir un host al diccionari."); Console.WriteLine("4) Eliminar un host del diccionari."); Console.WriteLine("5) Guardar el contingut del diccionari reemplaçant la secció corresponent del fitxer dhcp.conf"); Console.WriteLine("6) Salir."); ConsoleKeyInfo ck = Console.ReadKey(); switch(ck.KeyChar) { case '1': consultes(); break; case '2': modificar(); break; case '3': afegir(); break; case '4': eliminar(); break; case '5': guardar(); break; case '6': salir = true; Console.WriteLine("nPresione una tecla para salir ..."); break; } } } }
Pq me dice uso de la variable local clave no asignada ? Y luego en el apartado de consultas no se como se compararia los valores si el tipo dato tiene dos variables ?
5
« en: Miércoles 16 de Diciembre de 2009, 20:23 »
/* Contar las veces que aparece cada palabra en una frase. */ using System; using System.Collections.Generic; public class ContarPalabras { public static void Main() { Dictionary <string, int> dic = new Dictionary <string, int>(); int cont1=0,cont2=0,cont3=0,cont4=0; string frase = "un dos tres dos cuatro un un"; char[] delimiterChars = { ' ' }; string[] words = frase.Split(delimiterChars); for (int i=0;i<words.Length;i++) { if ( words[i] == "un" ) { if ( cont1 == 0 ) dic.Add(words[i],cont1); cont1++; } if ( words[i] == "dos" ) { if ( cont2 == 0 ) dic.Add(words[i],cont2); cont2++; } if ( words[i] == "tres" ) { if ( cont3 == 0 ) dic.Add(words[i],cont3); cont3++; } if ( words[i] == "cuatro" ) { if ( cont4 == 0 ) dic.Add(words[i],cont4); cont4++; } } Console.WriteLine("{0}{1}{2}{3}",cont1,cont2,cont3,cont4); foreach ( KeyValuePair<string,int> par in dic) //segunda forma { Console.WriteLine(" Clave Contador "); Console.WriteLine("========================="); Console.WriteLine("{0,6} {1,5} ",par.Key,par.Value); Console.WriteLine(); } Console.ReadKey(); } }
Alguien sabe pq antes de entrar al foreach me printa los cont y despues al entrar me los printa con un 0 ?
6
« en: Sábado 12 de Diciembre de 2009, 16:24 »
/* Escriu un programa que busqui en una carpeta ( i subcarpetas ) tots els fitxers amb mida 0 bytes. Una vegada fet això ha de mostrar quants s'han trobat i un per un fer aquesta pregunta : "Vols eliminar el fitxer #####.### ? (Si,No,Cap,Tots) ?" L'opció "Cap" significa no fer res amb els que queden, l'opció "Tots" significa eliminar tots els que queden. Nota : Els fitxers s'eliminen amb el mètode File.Delete(path) */ using System; using System.Collections.Generic; using System.IO; public class Fitxers { public static void Main() { string dire; Console.WriteLine("Introdueix la direcció de la carpeta:"); dire=Console.ReadLine(); while (Directory.Exists(dire) == false)//para saber si el directorio existe { Console.WriteLine("Este directorio no existe, vuelve a escribirlon"); dire=Console.ReadLine(); } fitxers(dire); Console.WriteLine("Presione una tecla para salir."); Console.ReadKey(); } public static void fitxers(string dire) { string[] dirs = Directory.GetDirectories(dire); foreach(string d in dirs) { fitxers(d); } string[] fils = Directory.GetFiles(dire); foreach (string f in fils) { dadesfi(f); } } public static void dadesfi(string d ) { Queue <string> cola = new Queue <string>(); FileInfo fi = new FileInfo (d ); long mida = fi.Length; string res; if (mida != 0) { cola.Enqueue(d); Console.WriteLine(d); } while ( cola.Count > 0 ) //Saber el numero de elementos de la cola. { //Console.Clear(); bool cap=false; string n = cola.Dequeue(); //Sacar de la cola elementos. Console.WriteLine("Vols Elimnar el fitxer {0} ?",n); res=Console.ReadLine(); if (res == "si") { File.Delete(n); //Console.WriteLine("El fitxer s'ha eliminat correctament"); } else if ( res == "no" ) { //Console.WriteLine("El fitxer no s'ha eliminat"); } else if ( res == "cap") { Console.WriteLine("Prueba cap"); while ( cola.Count > 0 ) { Console.WriteLine(n); n = cola.Dequeue(); } Console.WriteLine("No s'ha eliminat cap fitxer"); //break; } else if ( res == "tots") { Console.WriteLine("Prueba tots"); while ( cola.Count > 0 ) { File.Delete(n); n = cola.Dequeue(); } Console.WriteLine("S'han eliminat tots els fitxers"); } else Console.WriteLine("No has escrit la paraula correcta"); } } }
Tengo un problema a la hora de eliminar tots o cap. Cuando escribo tots no me deberia volver a preguntar si quiere eliminar el siguiente fichero,sino eliminarlos ya todos, y me lo vuelve a preguntar. Lo mismo pasa con el cap q no deberia preguntarme si quiero eliminar el siguente, sino no eliminar ninguno.
7
« en: Miércoles 9 de Diciembre de 2009, 08:25 »
Okis, muchas gracias Ahora se entiende xDDD
8
« en: Martes 8 de Diciembre de 2009, 20:48 »
/* Escriu un programa que demani nom d'alumnes i nota obtinguda en un examen fins entrar una linea buida. Finalment mostra els alumnes suspesos i el aprovats en llistes separades , amb la seva nota, pero mantenint en cada llista l'ordre d'introducció. */ using System; using System.Collections.Generic; using System.IO; public class Dato { public string nombre; public int nota; } public class Colas { static void Main() { Queue <Dato > alumne = new Queue <Dato >(); Dato alumno = new Dato (); string nombre1; int nota1; do { Console.WriteLine("Introdueix el nom de l'alumne:"); nombre1=Console.ReadLine(); alumne.Enqueue(alumno); Console.WriteLine("Introdueix la nota de l'alumne:"); nota1 = Int32.Parse(Console.ReadLine()); alumne.Enqueue(alumno); }while ( nombre1 != null ); Console.WriteLine("Alumnos Suspendidos"); while ( alumne.Count > 0 ) //Saber el numero de elementos de la cola. { if ( alumno.nota < 5 ) { nombre1 = alumne.Dequeue(); //Sacar de la cola elementos. Console.Write(nombre1); nota1 = alumne.Dequeue(); Console.Write(nota1); Console.WriteLine(); } } Console.ReadKey(); } }
Y ahora para sacar los valores, y printar los suspendidos intento hacerlo asi, pero me da error. Me hago un lio al convertir el tipo dato a string o int :S
9
« en: Martes 8 de Diciembre de 2009, 16:14 »
/* Escriu un programa que demani nom d'alumnes i nota obtinguda en un examen fins entrar una linea buida. Finalment mostra els alumnes suspesos i el aprovats en llistes separades , amb la seva nota, pero mantenint en cada llista l'ordre d'introducció. */ using System; using System.Collections.Generic; using System.IO; public class Dato { public string nombre; public int nota; } public class Colas { static void Main() { Queue <Dato > alumne = new Queue <Dato >(); Dato alumno = new alumno (); string nombre1; int nota1; Console.WriteLine("Introdueix el nom de l'alumne:"); nombre1=Console.ReadLine(); nombre.alumne.Enqueue(nombre1); Console.WriteLine("Introdueix la nota de l'alumne:"); nota1=Console.ReadLine(); nota1=Convert.ToInt32(nota1); alumno.nota=nota1; // alumne.nota.Enqueue(alumno.nota); while ( alumno.nombre == null ) { //alumne=Console.ReadLine(); } Console.ReadKey(); } }
Tengo un lio con las colas, como puedo hacer para meter el nombre y la nota del alumno q es de tipo dato, dentro de la cola?
10
« en: Domingo 1 de Noviembre de 2009, 21:07 »
// Programa que lee un fichero de texto y llena una lista con las palabras que contiene sin repetirlas. Despues mostraslas por pantalla. using System; using System.IO; public class Ejercicio { public static void Main() { StreamReader sr = new StreamReader ("J:\ASI2\EDD\palabras.txt"); // declaracion de la variable sr de lectura char[] delimiterChars = { ' ', ',', '.', ':', 't' }; string linia = sr.ReadLine(); while ( linia != null ) // lee la linia { string[] words = linia.Split(delimiterChars); Console.WriteLine("{0} words in text:", words.Length); Array.Sort(words); //foreach (string s in words) for( int i=0;i<=words.Length;i++) { Console.WriteLine(words[i]); if ( words[i] != words[i+1]){ i++; } Console.ReadKey(); } linia = sr.ReadLine(); } sr.Close(); Console.ReadKey(); } }
Como puedo hacer para que no se me cierre el programa, al final de leer las palabras,pero es q ahora tengo q estar dandole al enter con cada palabra. Y otra cosa, si pongo las palabras una detras de la otra va bien, pero a la q las pongo en varias linias ya solo me lee la primera :S
11
« en: Sábado 24 de Octubre de 2009, 21:47 »
Pues era esa tonteria que liao dos veces. Gracias ^^
12
« en: Sábado 24 de Octubre de 2009, 14:28 »
No creo, pq la carpeta es una copia de otra y no se esta utilizando. Porcierto soy de barcelona, vamos catalan xDDD
13
« en: Viernes 23 de Octubre de 2009, 21:43 »
//EJERCICIO : Buscar los ficheros HTML y eliminar las lineas que contengan la cadena <codigo del virus> using System; using System.IO; class Programa { static void ListadoDirectorio (string dire) { string[] dirs = Directory.GetDirectories(dire); //devuelve una array de string con los subdirectorios que hay dentro. foreach ( string d in dirs ) //coje los caracteres de la array dirs { Console.WriteLine(d); ListadoDirectorio(d); } string[] fils = Directory.GetFiles(dire); foreach (string f in fils) { Console.WriteLine(f,"*.html"); Limpia(f); } } static void Limpia(string f) { //Aqui comprobamos si el fichero contiene el codigo del virus y lo eliminamos StreamReader sr = new StreamReader (f ); // declaracion de la variable sr de lectura StreamWriter sw = new StreamWriter ("temp.html"); //declaracion de la variable sw de escritura string linia = sr.ReadLine(); while ( linia != null ) // lee la linia { linia = sr.ReadLine(); if ( linia != "<codigo del virus>" ) { sw.WriteLine(linia); //Console.WriteLine(error1); } else { //Console.WriteLine("error2"); Console.WriteLine("El fitxer {0} te un virus.",f); } linia = sr.ReadLine(); } sw.Close(); sr.Close(); File.Delete(f); File.Move("temp.html",f); //origen,destino } static void Main() { try { string dir = "c:\tools"; ListadoDirectorio(dir); } catch ( Exception e ) { Console.WriteLine(e.ToString()); } Console.ReadKey(); } }
Pq cuando intenta entrar en el archivo me mide acceso denegado ?
14
« en: Domingo 18 de Octubre de 2009, 18:09 »
no entiendo eso del while read -1 2 i;
Yo ahora habia quitado el while read y lo habia puesto directo algo asi:
cat poema2 | tr "e" "a">poema3 cat poema2 | tr "i" "e">poema3 cat poema2 | tr "o" "u">poema3 cat poema2 | tr "u" "o">poema3 cat poema2 | tr "a" "u">poema3
Pero veo q solo hace el ultimo cat :S
15
« en: Domingo 18 de Octubre de 2009, 14:18 »
Como puedo leer de un fichero de texto caracter por caracter ? Estoy haciendo un script en bash que necesito que lea los caracteres de un fichero y me cambie una vocales por otra. Yo lo que utilizo es:
while read linea do caracter=${linea:0:1} # luego aqui dentro hago un case para q dependiendo de q letra lea la cambie por una o otra. done Pero asi solo me lee un caracter de una linea, las lineas no son del mismo tamaño ni tienen los mismo campos :S
16
« en: Martes 26 de Mayo de 2009, 23:46 »
void elimina_soci(Tclient client[],int *numclient,FILE *a){ int num,i=0,trobat=0; char res; FILE *b; a=fopen("socis.txt","r"); b=fopen("socis2.txt","w"); printf("Introdueix el numero de soci que vols eliminarn"); scanf("%d", &num); while ((i<*numclient) && (trobat==0)){ if (num==client[i].numsoci){ printf("Usuari Trobat.n"); trobat=1; } else{ fprintf(b,"%d %s %s %s %c %dn",client[i].numsoci,client[i].dni,client[i].nom,client[i].cognom,client[i].cat,client[i].preu); i++; } } if (trobat==0) printf("El numero d'usuari no es validn"); else{ do{ printf("Estas segur que vols eliminar aquest alumne[S/N]: n"); fflush(stdin); scanf("%c",&res); }while ((res!='S') && (res!='s') && (res!='N') && (res!='n')); } if ((res=='S') || (res=='s')){ *numclient=*numclient-1; while (i<*numclient){ fprintf(b,"%d %s %s %s %c %dn",client[i+1].numsoci,client[i+1].dni,client[i+1].nom,client[i+1].cognom,client[i+1].cat,client[i+1].preu); i++; } } fclose(a); fclose(b); remove("socis.txt"); rename("socis2.txt","socis.txt"); }
Tengo esta funcion pero no se pq el remove y el rename no me funcionan, si no q me crea dos archivos y no me borra el otro ni cambia el nombre :S
17
« en: Domingo 17 de Mayo de 2009, 18:32 »
he copiado un ejemplo de los q hay en esa pagina y me dice: syntax error before "namespace"
#include<stdio.h> #include <iostream> #include <fstream> using namespace std;
eso pq es ? aparte de me dice: fstream: No such file or directory. iostream: No such file or directory.
Porcierto utilico el Dev-c++
18
« en: Domingo 17 de Mayo de 2009, 15:44 »
#include<stdio.h> int main(){ FILE *a,*b,*c; char cadena1[100],cadena2[100]; char carac1,carac2; a=fopen("ordenat1.txt","r"); b=fopen("ordenat2.txt","r"); c=fopen("conjunt.txt","w"); while (fgets(cadena1,100,a) && fgets(cadena2,100,b)){ if (strcmp(cadena1,cadena2)<0){ fputs(cadena1,c); printf("%s",cadena1); } if (strcmp(cadena1,cadena2)>0){ fputs(cadena2,c); printf("%s",cadena2); } } fclose(a); fclose(b); fclose(c); getchar(); getchar(); }
Este programa tiene q leer de dos ficheros de texto unas palabras(una palabra por linea) y copiarlas a otro en orden alfabetico. Pero no se como puedo hacer para q me vuelva a leer la palabra anterior, si no la a copiado en el fichero? Pq ahora me copia una de las dos palabras de uno de los ficheros y me pasa a leer la siguiente.No se si me explico :S
19
« en: Jueves 23 de Abril de 2009, 22:03 »
#include<stdio.h> #include<string.h> typedef struct { char nommes[10]; int numdia; }Tvector; typedef struct { int dia; int mes; }Tfecha; Tfecha novaData(); void calcula(Tfecha data1,Tfecha data2,Tvector elements[]); int main(){ Tvector elements[12]={ {"Gener",31}, {"Febrer",28}, {"Marc",31}, {"Abril",30}, {"Maig",31}, {"Juny",30}, {"Juliol",31}, {"Agost",31}, {"Septembre",30}, {"Octubre",31}, {"Novembre",30}, {"Desembre",31} }; Tfecha data1,data2; printf("Dades de la data actual[Mateix Any]:n"); data1=novaData(); printf("Dades de la data posterior[Mateix Any]:n"); data2=novaData(); calcula(data1,data2,elements); getchar(); getchar(); } Tfecha novaData(){ Tfecha data; printf("Introdueix el dia:n"); scanf("%d",&data.dia); printf("Introdueix el mes en numero:n"); scanf("%d",&data.mes); return data; } void calcula(Tfecha data1,Tfecha data2,Tvector elements[]){ int cont=0,cont1=0,conttotal=0; char mes[10]; if (data1.mes<data2.mes){ do{ cont1=cont1+elements[data1.mes-1].numdia; mes[]=elements[data1.mes-1].nommes+1; }while(mes[]==data2.mes); } else if(data1.mes>data2.mes) printf("Error: La data segona te que se posterior a la primera.n"); else{ if (data1.dia==data2.dia) printf("Les dues dates son igualesn"); else cont } conttotal=cont1+cont; printf("Estem a %d de %s,fins al %d de %s falten %d diesn",data1.dia,elements[data1.mes-1].nommes,data2.dia,elements[data2.mes-1].nommes,conttotal); }
Alguien me puede ayudar acabar esto de calcula, es q no se como hacerlo para q me sume los dias :S
20
« en: Jueves 9 de Abril de 2009, 16:08 »
#include<stdio.h> #include<stdlib.h> #include<time.h> #define LONGITUD 50 #define TEMPS 60 #define TOP 5 char *paraules[]={"llibre","mantega","carrer","pernil","pilota"}; char top_noms[TOP][LONGITUD]; int top_punts[TOP]; int main() { int i,n,num; int encerts; char resposta[LONGITUD]; time_t t; srand(time(NULL)); for(i=0;i<TOP;i++) top_punts[i]=-1; n=sizeof(paraules)/sizeof(char*); do { printf("nnEntra les paraules que van sortintn"); t=time(NULL); while(difftime(time(NULL),t)<TEMPS) { num=rand()%num; puts(paraules[num]); gets(resposta); if(strcmp(resposta,paraules[num])==0) { if(difftime(time(NULL),t)<TEMPS) { encerts++; puts("OKn"); } else puts("Fora de Tempsn"); } else puts("Errorn"); } printf("Continuar(si/no)?n"); gets(resposta); }while(strcmp(resposta,"si")==0); getchar(); getchar(); }
Alguien sabe pq al ejecutarlo se me cierra. Este codigo no lo e hecho yo, sino que lo colgado la profe y nosotros tenemos q añadirle dos funciones: una crea el ranking, la otra lo printa.-
21
« en: Miércoles 8 de Abril de 2009, 19:18 »
#include <stdio.h> #include <string.h> void ordenar(int n,char *cad[50]); void printa (int n,char *cad[50]); int main() { int n=0; char taula[50][30]; char *cad[50]; puts("Introdueix cadenas(. para terminar):n"); do { printf("Cadena %d: ", n+1); gets(taula[n]); fflush(stdin); }while((0!=strcmp(taula[n++],".")) || (n>50)); n--; //elimino la ultima cadena taula[50][30]=*cad[50]; ordenar(n,cad); printa(n,cad); getchar(); getchar(); } void ordenar(int n,char *cad[50]) { char temp[30],i,elem; for(elem=0; elem<n-1; elem++){ for(i=elem+1; i<n; i++){ if(strcmp(cad[elem], cad[i])>0) { *temp=*cad[elem]; *cad[elem]=*cad[i]; *cad[i]=*temp; } } } } void printa (int n,char *cad[50]) { int i; printf("nLes cadenes ordenades alfabeticament son:n"); for(i=0; i<n; i++){ printf("nCadena %d: %s", i+1, cad[i]); } }
Las cabeceras estan bien ? pq cuando introduzco las palabras y pongo el . se me cierra :S el strcpy se puede utilizar asi aunk sean punteros ? cuando hace el cambio se tendria q hacer asi o con el strcpy ?
22
« en: Miércoles 8 de Abril de 2009, 18:32 »
#include <stdio.h> #include <string.h> void ordenar(int n,char cad[50][30]); void printa (int n,char cad[50][30]); int main() { int n=0; char cad[50][30]; puts("Introdueix cadenas(. para terminar):n"); do { printf("Cadena %d: ", n+1); gets(cad[n]); fflush(stdin); }while((0!=strcmp(cad[n++],".")) || (n>50)); n--; //elimino la ultima cadena ordenar(n,cad); printa(n,cad); getchar(); getchar(); } void ordenar(int n,char cad[50][30]) { char *temp[30],i,elem; for(elem=0; elem<n-1; elem++){ for(i=elem+1; i<n; i++){ if(strcmp(cad[elem],cad[i])>0) { *temp=*cad[elem]; *cad[elem]=*cad[i]; *cad[i]=*temp; } } } } void printa (int n,char cad[50][30]) { int i; printf("nLes cadenes ordenades alfabeticament son:n"); for(i=0; i<n; i++){ printf("nCadena %d: %s", i+1, cad[i]); } }
Pq me intercambio la primera letra de las palabras y no la palabra entera ?
23
« en: Lunes 6 de Abril de 2009, 19:28 »
Porfin lo acabe, muchas gracias
24
« en: Lunes 6 de Abril de 2009, 18:48 »
#include<stdio.h> #include<time.h> #define FILES 7 #define COLUMNES 5 int menu(); void mostrarhorari(int horari[FILES][COLUMNES],char dies[6][20]); void dieshorescredit(int horari[FILES][COLUMNES]); void totalhores(int horari[FILES][COLUMNES]); void inicialitza_matriu(int horari[FILES][COLUMNES]); void printa_dia(int); void printa_hora(int); int main() { char horari[FILES][COLUMNES]; char dies[6][20]={"Hores ", "Dilluns ", "Dimarts ", "Dimecre ", "Dijous ", "Divendres n"}; int fin,opcio; inicialitza_matriu(horari); do { opcio=menu(); fin=0; switch(opcio) { case 1: mostrarhorari(horari,dies); break; case 2: dieshorescredit(horari); break; case 3: totalhores(horari); break; case 4: fin=1; default: printf("Opcio Incorrecte n"); } if(fin==0) { printf("nn"); getchar(); getchar(); } }while(fin==0); } int menu() { int op; printf("Programa per a la creacio de un horari n"); printf("1) Mostrar Horarin"); printf("2) Dies i Hores d'un determinat creditn"); printf("3) Hores setmanals d'un determinat creditn"); printf("4) Sortir n"); do { printf("Escull una opción: "); scanf("%d", &op); if ((op != 1) && (op !=2) && (op != 3) && (op != 4)) { printf("Opcio incorrecte n"); } }while (op < 1 || op > 4); return op; } void mostrarhorari(int horari[FILES][COLUMNES],char dies[6][20]) { int i,j,h; for(h=0;h<=6;h++){ printf("%s",dies[h]); } for(i=0;i<FILES;i++) { printf("%d:00",15+i); for(j=0;j<COLUMNES;j++) { printf(" %s ",horari[i][j]); h++; } printf("n"); } } void dieshorescredit(int horari[FILES][COLUMNES]) { int i,j; char credit[10]; printf("nnDies i hores que s'imparteix un credit n"); do { printf("nnEscull el credit (Introdueix la primera lletra en mayuscula): n"); printf("-Matesn-Cataln-Socian-Fisicn-Casten"); fflush(stdin); scanf("%s", &credit); printf("%s",credit); if((credit!='Mates') || (credit!='Catal') || (credit!='Socia') || (credit!='Fisic') || (credit!='Caste')) printf("Error no has escollit una opcio correcte.n RECORDA: La primera lletra te que se mayuscula.n"); }while((credit!='Mates') || (credit!='Catal') || (credit!='Socia') || (credit!='Fisic') || (credit!='Caste')); for(i=0;i<FILES;i++) { for(j=0;j<COLUMNES;j++) { if (credit==horari[i][j]) { printa_dia(j); printa_hora(i); } } } } void totalhores(int horari[FILES][COLUMNES]) { int i,j,hora1=0,hora2=0,hora3=0,hora4=0,hora5=0; printf("nnSuma d'hores setmanals de cada credit: nn"); for(i=0;i<FILES;i++) { for(j=0;j<COLUMNES;j++) { if (horari[i][j]=='Mates') hora1=hora1+1; if (horari[i][j]== 'Catal') hora2=hora2+1; if (horari[i][j]=='Socia') hora3=hora3+1; if (horari[i][j]=='Fisic') hora4=hora4+1; if (horari[i][j]== 'Caste') hora5=hora5+1; } } printf("El numero de hores setmanals de Matematiques es: %d horesn",hora1); printf("El numero de hores setmanals de Catala es: %d horesn",hora2); printf("El numero de hores setmanals de Socials es: %d horesn",hora3); printf("El numero de hores setmanals de Fisica es: %d horesn",hora4); printf("El numero de hores setmanals de Castella es: %d horesn",hora5); } void inicialitza_matriu(int horari[FILES][COLUMNES]) { int i,j; srand(time(NULL)); for(i=0;i<FILES;i++) { for(j=0;j<COLUMNES;j++) { horari[i][j]=rand()%5+1; switch(horari[i][j]) { case 1: horari[i][j]=("Mates");; break; case 2: horari[i][j]=("Catal"); break; case 3: horari[i][j]=("Socia"); break; case 4: horari[i][j]=("Fisic"); break; case 5: horari[i][j]=("Caste"); break; } } } } void printa_dia(int dia) { switch(dia) { case 0: printf("Dilluns "); break; case 1: printf("Dimarts "); break; case 2: printf("Dimecres "); break; case 3: printf("Dijous "); break; case 4: printf("Divendres "); break; } } void printa_hora(int hora) { switch(hora) { case 0: printf("15:00n"); break; case 1: printf("16:00n"); break; case 2: printf("17:00n"); break; case 3: printf("18:00n"); break; case 4: printf("19:00n"); break; case 5: printf("20:00n"); break; case 6: printf("21:00n"); break; } }
El if((credit!='Mates') || (credit!='Catal') || (credit!='Socia') || (credit!='Fisic') || (credit!='Caste')) printf("Error no has escollit una opcio correcte.n RECORDA: La primera lletra te que se mayuscula.n"); esta bien escrito, quiero decir va con comilla simple o como pq es q lo e probado con dos tb, y siempre me entra aqui, y veo que le bien la array. Y luego en los ifs de totalhores,tp me entra en ningun caso :s, lo iba hacer con switch pero segun e leido no se puede utilizar cadena de caracteres en el switch :S
25
« en: Lunes 30 de Marzo de 2009, 08:20 »
ya, quiero que indice tenga el valor de i.
|
|
|