Accueil > > > VIRTOPROFESSOR: MRCARDO, UN APPRENTISSAGE RAPIDE DE VOS LEÇONS :D (QUESTIONS, REPONSES)
VIRTOPROFESSOR: MRCARDO, UN APPRENTISSAGE RAPIDE DE VOS LEÇONS :D (QUESTIONS, REPONSES)
Information sur la source
Description
Yo! Voila je prépare un projet qui se nomme VirtoProfessor qui est composé de plusieurs virtuals professeurs avec des roles précis et ici je met à votre disposition, le professeur MrCardo qui vous interroge sur ce que vous voulez (Question->Reponse). MrCardo est loin d'etre terminer mais je vous donne le code source pour me donner votre avis. Comment ça marche ? C'est trés simple! Vous créer un fichier texte de n'importe qu'elle extension, cela n'a pas d'importance, ensuite dans ce fichier vous placez vos questions et reponses de cette façon: Test.txt : Combient font 2*2+1+1 ? 6 Combient font 2*5 ? 10 Ensuite vous glissez ce fichier sur MrCardo.exe et vous parametrez le test. Ciao!
Source
- #include <vector>
- #include <string.h>
- #include <time.h>
- #include <cstdio>
- #include <cstdlib>
-
- using namespace std;
-
- unsigned int aleatoire(const unsigned int min, const unsigned int max) // Fonction qui retourn un nombre entre min et max (min et max inclus)
- {
- return (unsigned int)(min+((float) rand()/RAND_MAX*(max - min + 1)));
- }
-
- bool strcompare(const char *str1, const char *str2, bool casse=false) // Fonction qui compare 2 chaines de caracteres avec ou sans casse
- {
- unsigned int max=strlen(str1);
- if(max!=strlen(str2))
- {
- return false;
- }
- for(unsigned int i=0; i<max; i++)
- {
- if((!casse && tolower(str1[i])!=tolower(str2[i])) || (casse && str1[i]!=str2[i]))
- return false;
- }
- return true;
- }
-
- int main(int nb_args, char** argv)
- {
- srand(time(NULL));
-
- if( nb_args<2 ) // Si aucun fichier n'est passer aux parametres de l'exe, on quitte
- {
- fprintf(stderr,"\n\n # Aucun fichier ! Au revoir !\n\n");
- fflush(stdin);
- getchar();
- return EXIT_FAILURE;
- }
- for (unsigned int i_file=1; true; i_file++)
- {
- FILE* file_datas = fopen(argv[i_file],"rb");
- if ( file_datas == NULL ) // Si le fichier n'existe pas ou protegé contre la lecture
- {
- fprintf(stderr,"\n\n # Le fichier n%u (%s) est introuvable ! ",i_file,argv[i_file]);
- if ((nb_args-i_file)==1) // On abondonne le fichier et on passe au suivant s'il existe
- {
- break;
- }
- fprintf(stdout,"\n\n # Passage au fichier n%u\n\n",i_file+1);
- continue;
- }
- vector<vector<char> > questions, reponses; // vector pour les questions, et un autre pour les reponses
- vector<bool> aff_rep, aff_ques; // Variables pour sauvegarder l'index des questions et reponses et eviter les repetitions s'il est desactivé
- vector<char> line; // Variable pour stocker la ligne du fichier
- bool syntaxe_correct = true; // La variable d'etat du fichier
- int params[7] = {0}; // Le tableau de parametres du test
- system("CLS"); // Vidage de stdout
- fprintf(stdout,"\n\n # Poser les questions au hasard (1=Oui,0=Non) ? ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[0]); // Recuperation du 1er parametre
- system("CLS"); // Vidage de stdout
- if(params[0]) // Si l'hasard est activer on demande s'il faut activation l'"AntiRepeat"
- {
- fprintf(stdout,"\n\n # Activer l'option Anti-Repeat (1=Oui,0=Non) ? ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[1]); // Recuperation du 2eme parametre
- }
- system("CLS"); // Vidage du stdout
- fprintf(stdout,"\n\n # Poser toutes les questions disponibles (0=Oui,nombre) ? ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[2]); // Recuperation du 3eme parametre
- system("CLS"); // Vidage de stdout
- if(!params[2]) // Si les questions doivent etre posés au complet
- {
- fprintf(stdout,"\n\n # Faire le test en boucle (1=Oui,0=Non) ? ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[3]); // Recuperation du 4eme parametre
- }
- system("CLS"); // Vidage de stdout
- fprintf(stdout,"\n\n # Respecter la cAsSE (1=Oui,0=Non) ? ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[6]); // Recuperation du 7eme parametre
- system("CLS"); // Vidage de stdout
- fprintf(stdout,"\n\n # Choisissez une option:\n 1-Poser logiquement les questions\n 2-Inverser\n%s = ",(params[0])?" 3-Les deux\n":"\n = ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[4]); // Recuperation du 5eme parametre
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- system("CLS"); // Vidage de stdout
- fprintf(stdout,"\n\n # Afficher les reponses (1=Oui,0=Non) ? ");
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- fscanf(stdin,"%d",¶ms[5]); // Recuperation du 6eme parametre
- fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
- system("CLS"); // Vidage de stdout
- /* Boucle de remplissage */
- for (bool rep=false; !feof(file_datas);) // rep = Variable qui nous permettra de passer des reponses aux questions dans la boucle
- {
- if ( params[1] ) // Si l'AntiRepeat est activer
- {
- aff_rep.push_back(false); // On ajoute un element dans le vector avec comme valeur FALSE (c'est a dire non affiché)
- aff_ques.push_back(false); // Pareil
- }
-
- while(line.push_back(fgetc(file_datas)),true) // Une boucle infini (=Elle ne se termine pas à cause de sa condition mais plutôt à cause de ses instructions)
- {
- if ( line.back()=='\n' || line.back()==EOF ) // Si on arrive au caractere '\n' ou EOF cela veut dire qu'on se trouve NORMALEMENT à la fin de la ligne ou du fichier
- {
- if ( line.back()==EOF && !rep ) // Si le curseur est arrivé à la fin alors que c'est une question la syntaxe du fichier est alors declaré incorrect!
- {
- fprintf(stderr,"Le fichier est incorrect !\n\n");
- syntaxe_correct = false;
- break;
- }
- line[(line.back()=='\n')?line.size()-2:line.size()-1]='\0'; // On affecte la fin de la ligne
- break;// On quitte la ligne pour passer à la suivante
- }
- }
- if ( !syntaxe_correct )
- {
- break;
- }
- ((!rep)?questions:reponses).push_back(line); // On ajoute la ligne aux questions ou reponses selon la var rep
- rep=(rep)?false:true; // Si cette var est true on la passe à false et vice versa
- line.clear(); // On vide le vector pour la ligne suivante
- }
- fclose(file_datas);// On ferme le fichier ouvert
- if ( !syntaxe_correct ) // Si la syntaxe du fichier est incorrect, on passe au fichier suivant s'il existe, sinon on quitte
- {
- if ( (nb_args-i_file)==1 ) // S'il n y a pas de fichiers suivant, on quitte
- {
- break;
- }
- else // Sinon on passe au fichier suivant
- {
- continue;
- }
- }
- for(unsigned int i_show=0; i_show<((params[2]>0)?params[2]:questions.size()) || params[3];) // Boucle de teste
- {
- if(params[3] && (((params[2]>0)?params[2]:questions.size())-i_show)<=0) // Si le test est terminer et que l'utilisateur à choisis le test en boucle alors on prépare le suivant
- {
- fprintf(stdout,"\n >Test terminer!\n");
- i_show=0; // Le curseur de l'avancement est mis à zero
- for(unsigned int i=0;params[1] && i<aff_ques.size();i++) // Reinstialisation des varaible de l'antiRepeat
- {
- aff_ques[i] = false;
- aff_rep[i] = false;
- }
- fflush(stdin);
- getchar();
- system("CLS");
- }
- unsigned int index = i_show; // index, cette variable va contenire le curseur de l'avancement si l'option hasard n'a pas était choisis sinon un nombre au hasard
- bool ques_rep = (params[4]<3)?(params[4]<=1):(aleatoire(0,1)); // variable qui definis qu'elle partie va etre afficher, la question ou la reponse selon ce que l'utilisateur à choisis
- if(params[0]) // Si le hasard est activer...
- {
- if(params[1]) //On verifie si l'antiRepeat est activer
- {
- do{
- index = aleatoire(0,questions.size()-1);
- }while(((ques_rep)?(aff_ques[index]):(aff_rep[index])));
- ((ques_rep)?(aff_ques[index]):(aff_rep[index])) = true;
- }
- }
- // Affichage de la question ou reponse selon le resultat de la var ques_rep
- fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n >%s\n = ",i_show+1,questions.size(),(ques_rep)?(&questions[index][0]):(&reponses[index][0]));
- vector<char> stduser; // Vector pour l'entrée clavier
- fflush(stdin);
- do{
- stduser.push_back(getchar());
- }while(stduser.back()!='\n' && stduser.back()!=EOF);
- stduser.back()='\0';
- system("CLS");
- // On compare la reponse ou la question avec la question ou la reponse (selon ques_rep) avec ou sans casse (selon le choix de l'utilisateur)
- if(strcompare(&stduser[0],(ques_rep)?(&reponses[index][0]):(&questions[index][0]),params[6]))
- {
- fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n MrCardo> Bonne reponse !\n",i_show+1,questions.size());
- }
- else
- {
- // Affichage de la reponse si l'utilisateur la souhaité
- fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n MrCardo> Mauvaise reponse%s%s\n",i_show+1,questions.size(),(params[5])?"!\n La bonne reponse est : ":" ",(params[5])?(ques_rep)?(&reponses[index][0]):(&questions[index][0]):"!");
- }
- fflush(stdin);
- getchar();
- system("CLS");
- i_show++;
- }
- if ( (nb_args-i_file)==1 ) // S'il n y a plus de fichier on quitte
- {
- break;
- }
- }
- getchar();
- return EXIT_SUCCESS;
- }
#include <vector>
#include <string.h>
#include <time.h>
#include <cstdio>
#include <cstdlib>
using namespace std;
unsigned int aleatoire(const unsigned int min, const unsigned int max) // Fonction qui retourn un nombre entre min et max (min et max inclus)
{
return (unsigned int)(min+((float) rand()/RAND_MAX*(max - min + 1)));
}
bool strcompare(const char *str1, const char *str2, bool casse=false) // Fonction qui compare 2 chaines de caracteres avec ou sans casse
{
unsigned int max=strlen(str1);
if(max!=strlen(str2))
{
return false;
}
for(unsigned int i=0; i<max; i++)
{
if((!casse && tolower(str1[i])!=tolower(str2[i])) || (casse && str1[i]!=str2[i]))
return false;
}
return true;
}
int main(int nb_args, char** argv)
{
srand(time(NULL));
if( nb_args<2 ) // Si aucun fichier n'est passer aux parametres de l'exe, on quitte
{
fprintf(stderr,"\n\n # Aucun fichier ! Au revoir !\n\n");
fflush(stdin);
getchar();
return EXIT_FAILURE;
}
for (unsigned int i_file=1; true; i_file++)
{
FILE* file_datas = fopen(argv[i_file],"rb");
if ( file_datas == NULL ) // Si le fichier n'existe pas ou protegé contre la lecture
{
fprintf(stderr,"\n\n # Le fichier n%u (%s) est introuvable ! ",i_file,argv[i_file]);
if ((nb_args-i_file)==1) // On abondonne le fichier et on passe au suivant s'il existe
{
break;
}
fprintf(stdout,"\n\n # Passage au fichier n%u\n\n",i_file+1);
continue;
}
vector<vector<char> > questions, reponses; // vector pour les questions, et un autre pour les reponses
vector<bool> aff_rep, aff_ques; // Variables pour sauvegarder l'index des questions et reponses et eviter les repetitions s'il est desactivé
vector<char> line; // Variable pour stocker la ligne du fichier
bool syntaxe_correct = true; // La variable d'etat du fichier
int params[7] = {0}; // Le tableau de parametres du test
system("CLS"); // Vidage de stdout
fprintf(stdout,"\n\n # Poser les questions au hasard (1=Oui,0=Non) ? ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[0]); // Recuperation du 1er parametre
system("CLS"); // Vidage de stdout
if(params[0]) // Si l'hasard est activer on demande s'il faut activation l'"AntiRepeat"
{
fprintf(stdout,"\n\n # Activer l'option Anti-Repeat (1=Oui,0=Non) ? ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[1]); // Recuperation du 2eme parametre
}
system("CLS"); // Vidage du stdout
fprintf(stdout,"\n\n # Poser toutes les questions disponibles (0=Oui,nombre) ? ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[2]); // Recuperation du 3eme parametre
system("CLS"); // Vidage de stdout
if(!params[2]) // Si les questions doivent etre posés au complet
{
fprintf(stdout,"\n\n # Faire le test en boucle (1=Oui,0=Non) ? ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[3]); // Recuperation du 4eme parametre
}
system("CLS"); // Vidage de stdout
fprintf(stdout,"\n\n # Respecter la cAsSE (1=Oui,0=Non) ? ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[6]); // Recuperation du 7eme parametre
system("CLS"); // Vidage de stdout
fprintf(stdout,"\n\n # Choisissez une option:\n 1-Poser logiquement les questions\n 2-Inverser\n%s = ",(params[0])?" 3-Les deux\n":"\n = ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[4]); // Recuperation du 5eme parametre
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
system("CLS"); // Vidage de stdout
fprintf(stdout,"\n\n # Afficher les reponses (1=Oui,0=Non) ? ");
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
fscanf(stdin,"%d",¶ms[5]); // Recuperation du 6eme parametre
fflush(stdin); // Vidage du stdin pour pas reprendre les caracteres qui dépassé avant
system("CLS"); // Vidage de stdout
/* Boucle de remplissage */
for (bool rep=false; !feof(file_datas);) // rep = Variable qui nous permettra de passer des reponses aux questions dans la boucle
{
if ( params[1] ) // Si l'AntiRepeat est activer
{
aff_rep.push_back(false); // On ajoute un element dans le vector avec comme valeur FALSE (c'est a dire non affiché)
aff_ques.push_back(false); // Pareil
}
while(line.push_back(fgetc(file_datas)),true) // Une boucle infini (=Elle ne se termine pas à cause de sa condition mais plutôt à cause de ses instructions)
{
if ( line.back()=='\n' || line.back()==EOF ) // Si on arrive au caractere '\n' ou EOF cela veut dire qu'on se trouve NORMALEMENT à la fin de la ligne ou du fichier
{
if ( line.back()==EOF && !rep ) // Si le curseur est arrivé à la fin alors que c'est une question la syntaxe du fichier est alors declaré incorrect!
{
fprintf(stderr,"Le fichier est incorrect !\n\n");
syntaxe_correct = false;
break;
}
line[(line.back()=='\n')?line.size()-2:line.size()-1]='\0'; // On affecte la fin de la ligne
break;// On quitte la ligne pour passer à la suivante
}
}
if ( !syntaxe_correct )
{
break;
}
((!rep)?questions:reponses).push_back(line); // On ajoute la ligne aux questions ou reponses selon la var rep
rep=(rep)?false:true; // Si cette var est true on la passe à false et vice versa
line.clear(); // On vide le vector pour la ligne suivante
}
fclose(file_datas);// On ferme le fichier ouvert
if ( !syntaxe_correct ) // Si la syntaxe du fichier est incorrect, on passe au fichier suivant s'il existe, sinon on quitte
{
if ( (nb_args-i_file)==1 ) // S'il n y a pas de fichiers suivant, on quitte
{
break;
}
else // Sinon on passe au fichier suivant
{
continue;
}
}
for(unsigned int i_show=0; i_show<((params[2]>0)?params[2]:questions.size()) || params[3];) // Boucle de teste
{
if(params[3] && (((params[2]>0)?params[2]:questions.size())-i_show)<=0) // Si le test est terminer et que l'utilisateur à choisis le test en boucle alors on prépare le suivant
{
fprintf(stdout,"\n >Test terminer!\n");
i_show=0; // Le curseur de l'avancement est mis à zero
for(unsigned int i=0;params[1] && i<aff_ques.size();i++) // Reinstialisation des varaible de l'antiRepeat
{
aff_ques[i] = false;
aff_rep[i] = false;
}
fflush(stdin);
getchar();
system("CLS");
}
unsigned int index = i_show; // index, cette variable va contenire le curseur de l'avancement si l'option hasard n'a pas était choisis sinon un nombre au hasard
bool ques_rep = (params[4]<3)?(params[4]<=1):(aleatoire(0,1)); // variable qui definis qu'elle partie va etre afficher, la question ou la reponse selon ce que l'utilisateur à choisis
if(params[0]) // Si le hasard est activer...
{
if(params[1]) //On verifie si l'antiRepeat est activer
{
do{
index = aleatoire(0,questions.size()-1);
}while(((ques_rep)?(aff_ques[index]):(aff_rep[index])));
((ques_rep)?(aff_ques[index]):(aff_rep[index])) = true;
}
}
// Affichage de la question ou reponse selon le resultat de la var ques_rep
fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n >%s\n = ",i_show+1,questions.size(),(ques_rep)?(&questions[index][0]):(&reponses[index][0]));
vector<char> stduser; // Vector pour l'entrée clavier
fflush(stdin);
do{
stduser.push_back(getchar());
}while(stduser.back()!='\n' && stduser.back()!=EOF);
stduser.back()='\0';
system("CLS");
// On compare la reponse ou la question avec la question ou la reponse (selon ques_rep) avec ou sans casse (selon le choix de l'utilisateur)
if(strcompare(&stduser[0],(ques_rep)?(&reponses[index][0]):(&questions[index][0]),params[6]))
{
fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n MrCardo> Bonne reponse !\n",i_show+1,questions.size());
}
else
{
// Affichage de la reponse si l'utilisateur la souhaité
fprintf(stdout,"\n\n ---TEST %d/%d---\n\n\n MrCardo> Mauvaise reponse%s%s\n",i_show+1,questions.size(),(params[5])?"!\n La bonne reponse est : ":" ",(params[5])?(ques_rep)?(&reponses[index][0]):(&questions[index][0]):"!");
}
fflush(stdin);
getchar();
system("CLS");
i_show++;
}
if ( (nb_args-i_file)==1 ) // S'il n y a plus de fichier on quitte
{
break;
}
}
getchar();
return EXIT_SUCCESS;
}
Conclusion
Voila, voila! Vous avez tous et j'attend vos commentaires...
Historique
- 18 avril 2009 06:19:32 :
- J'ai corriger quelques erreurs dans les commentaires ^^
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Virtual, Volatile etc... J'y comprends rien ! [ par dominiquox ]
.NET s'enervant [ par DarK ]
J'en ai marre que Mico$oft nous fé passer a des technologie tel que le .NET ... Je trouve sa équerrant que micro$oft veut imposer sa technologie sur t
aidez moi par ou commencer mon apprentissage du cpp et de directX ? [ par ksir ]
je souhaite reliser un jeu en 3d pour cela je pense devoir utliser le c++ et directX seulement je 'y connait rien .par ou commencer mon apprentissage
aidez moi !par ou commencer mon apprentissage du cpp et de directX ? [ par ksir ]
je souhaite reliser un jeu en 3d pour cela je pense devoir utliser le c++ et directX seulement je 'y connait rien .par ou commencer mon apprentissage
virtual key des touches de ponctuation [ par juliol ]
bonjour, petite questionj'aimerais savoir si il existe des virtual keys(du genre VK_ ou quelque chose comme ca) pour les touches de ponctuation pour u
thread et mfc!!!!!! [ par dambeaufort ]
bonjour a tous, j'aimerais developper une apllication mfc avec plusieur thread. Ace stade je n'ai creer qu'un thread mais il bugue a l'execution (pas
COM, DLL, ActiveX...autres ??? [ par yapud ]
Bonjour, Je dois actuellement développer (dans le cadre d'un stage et en C++) un composant FTP fournissant ses services à d'autres programmes. En cher
Apprentissage et reconnaissance de la parole en C++ [ par webmaster_aprepa ]
Voici un site que j?ai créé sur un logiciel d?APprentissage et de REconnaissance de parole, il s?appelle APREPA. le site d'APREPA J?attend
C++ Classe virtuelle et héritage [ par freepouy18 ]
Bonjour, Voila, j'ai un souci avec l'utilisation de méthodes virtuelles pures lors de leurs redéfinition dans une sous-cla
destructeurs et virtual [ par magic_Nono ]
Bj, Un des principes de la POO est de toujour faire précéder le destructeur du mot clef virtual afin qu'il soit appeler meme si il y a h
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : WIN APIRE : WIN API par racpp
Cliquez pour lire la suite par racpp WIN APIWIN API par omarino_007
Cliquez pour lire la suite par omarino_007
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|