Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DE LA DURÉE D'UN TÉLÉCHARGEMENT SELON LE TYPE DE CONNEXION


Information sur la source

Catégorie :Application Niveau : Débutant Date de création : 07/07/2004 Date de mise à jour : 07/07/2004 13:37:45 Vu / téléchargé: 6 027 / 158

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
J'ai developpé un petit programme C++ en mode console (DOS) qui permet de connaitre la durée d'un téléchargement.
 

Source

  • #include <iostream> // pour cout, cin, ...
  • #include <stdlib.h> // pour la fonction system()
  • #include <conio.c> // Pour changer la couleur du texte
  • // Déclaration des fonctions.
  • int calculpds( int poidsmo );
  • int calcultps(int poidsko, int tempssc, int debit );
  • using namespace std;
  • int main()
  • {
  • // déclaration des variables utilisées dans le programme
  • int connexion;
  • int indic;
  • int debit;
  • int poidsmo;
  • int poidsko;
  • int tempssc;
  • int tempshr;
  • int tempsrest;
  • int test_conex;
  • textcolor (12); //chagement de la couleur du texte
  • cout << "Duree - telechargement\n\nCe programme va vous permettre de connaitre le temps"
  • << " que mettra votre connexion Internet pour t\202l\202charger un fichier.";
  • textcolor (3);
  • cout <<"\n\n********************************************************************************\n
  • ********************************************************************************";
  • indic = 0; //la variable indic prend la valeur 0
  • while(indic == 0) // Tant que indic vaut 0, on continue d'executer ce qu'il y a en dessous
  • {
  • textcolor (14); //couleur du texte
  • cout << "\nQuel est votre type de connexion ? (56, 128, 512 ou 1024)\n";
  • textcolor (95);
  • cin >> connexion; // Demande du type de connexion dans la variable connexion
  • textcolor (2);
  • switch( connexion ) //utilisation de switch pour ranger les différents types de connexions
  • {
  • case 56 : system("cls"); cout << "\nVous disposez d'une connexion 56k.\n\n"; // on affiche le type de connexion choisi
  • cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n"; // on demande si c'est le bon type de connexion
  • textcolor (95);
  • cin >> test_conex; // variable pour demander si c'est le bon type de connexion
  • if( test_conex == 1){ //si c'est le bon type de connexion, on sort de la boucle parce que indic vaut autre chose que 0.
  • indic = 1;
  • }
  • else
  • {
  • indic = 0; // si c'est la mauvais type de connexion, on reste dans la boucle parce que indic vaut toujours 0 (on aurait pu ne pas mettre indic = 0; puisqu'il vaut déjà 0. Ceci permet de rester sur la boucle si l'utilisateur tape autre chose que 1.
  • }
  • debit = 4; // Dans la case 56k, on dit que le débit est égal à 4 (4ko/sec)
  • break;
  • case 128 : system("cls"); cout << "\nVous disposez d'une connection 128k.\n\n";
  • cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n";
  • textcolor (95);
  • cin >> test_conex;
  • if( test_conex == 1){
  • indic = 1;
  • }
  • else
  • {
  • indic = 0;
  • }
  • debit = 10;// Dans la case 128k, on dit que le débit est égal à 10 (10ko/sec)
  • break;
  • case 512 : system("cls"); cout << "\nVous disposez d'une connection 512k.\n\n";
  • cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n";
  • textcolor (95);
  • cin >> test_conex;
  • if( test_conex == 1){
  • indic = 1;
  • }
  • else
  • {
  • indic = 0;
  • }
  • debit = 37; break;
  • case 1024: system("cls"); cout << "\nVous disposez d'une connexion 1024k.\n\n";
  • cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n";
  • textcolor (95);
  • cin >> test_conex;
  • if( test_conex == 1){
  • indic = 1;
  • }
  • else
  • {
  • indic = 0;
  • }
  • debit = 73; break;
  • default : system("cls"); cout << "\nentr\202e erron\202e...\n"; // En cas d'erreur de la saisie de connexion, on affiche ceci. Si on donne à la variable connexion autre chose que le nom d'une des cases possible.
  • }
  • }
  • system("cls"); // on vide l'écran avec la commande DOS cls
  • textcolor (2); //change la couleur du texte
  • /* On va dans la condition ci-dessous, afficher le type de connexion choisi (voir ci-dessus)
  • Selon la valeur que la variable debit a pris, on affiche un certain texte.*/
  • if(debit == 4){
  • cout << "Type de connexion: 56k.\n";
  • }
  • else if(debit == 10){
  • cout << "Type de connexion: 128k.\n";
  • }
  • else if(debit = 37){
  • cout << "Type de connexion: 512k.\n";
  • }
  • else if(debit = 73){
  • cout << "Type de connexion: 1024.\n";
  • }
  • else{
  • cout << "Erreur lors de l'execution du programme.\n";
  • system("exit");
  • }
  • textcolor (14); // change la couleur du texte
  • cout <<"Donnez le poids total des donn\202es que vous voullez t\202l\202charger en Megaoctets.\n";
  • textcolor (95); // change la couleur du texte
  • cin >> poidsmo; // on demande le poids des données à télécharger (en Mo)
  • system("cls"); // on vide l'écran avec la commande DOS cls
  • textcolor (2); //change la couleur du texte
  • cout <<"\nVous disposez d'une connexion "<< connexion <<"k et les donn\202es que vous d\202sirez t\202l\202charger pesent "<< poidsmo <<" Mo.\n\n\n";
  • /*debut du pourcentage (le pourcentage est là pour faire plus joli mais il est tout à fait dispensable.
  • Le code n'est pas de moi. Je l'ai trouvé dans une source sur cppfrance.com */
  • int pcent;
  • pcent = 0;
  • re:
  • cout<<" "<<pcent<<"% ... calcul ...";
  • pcent++;
  • Sleep(100);
  • if(pcent==101)
  • {
  • cout<<"\n\n";
  • goto fin;
  • }
  • if(pcent<10)
  • cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
  • else
  • if(pcent>9)
  • cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
  • goto re;
  • fin: //fin du pourcentage
  • poidsko = calculpds( poidsmo ); // on utilise la fonction qui calcule le poids en ko gràce au poids en Mo
  • tempshr = calcultps(poidsko, tempssc, debit ); // on calcule le temps de téléchargement en heure
  • //Ci dessous, on va afficher le temps de téléchargement de différentes manière selon
  • //le temps lui-même! Explication: si le temps est de moins de 1 heure, on va préfèrer afficher le temps en minutes!
  • // et ci le temps est suppérieur à 24 heures, on va afficher le temps en jour et le reste en heure!
  • if(tempshr <= 24 && tempshr >= 2){
  • cout << "\nVotre t\202l\202chargement durera donc " << tempshr << " heures.\n\n";
  • }
  • else if(tempshr < 2 && tempshr > 1){
  • tempsrest = tempshr * 60;
  • cout << "\nVotre t\202l\202chargement durera donc " << tempsrest << " minutes.\n\n";
  • }
  • else if(tempshr > 24 && tempshr < 48){
  • tempsrest = tempshr - 24;
  • cout << "\nVotre t\202l\202chargement durera donc 1 jour et " << tempsrest << " heures.\n\n";
  • }
  • else if(tempshr > 48 && tempshr < 72){
  • tempsrest = tempshr - 48;
  • cout << "\nVotre t\202l\202chargement durera donc 2 jour et " << tempsrest << " heures.\n\n";
  • }
  • else if(tempshr > 72){
  • tempsrest = tempshr - 72;
  • cout << "\nVotre t\202l\202chargement durera donc 3 jour et " << tempsrest << " heures.\n\n";
  • }
  • system("pause");
  • return 0;
  • }
  • int calculpds( int poidsmo ) //fonction de calcul du poids
  • {
  • return ( poidsmo * 1000 );
  • }
  • int calcultps(int poidsko, int tempssc, int debit ) //fonction de calcul du temps
  • {
  • tempssc = poidsko / debit;
  • return ( tempssc / 3600 );
  • }
  • /* Merci à Bart pour m'avoir codé les fonctions et les cases.
  • Au départ, je n'avais pas du tout compris ce que c'était! Et
  • merci à tous ceux que je vais oublier et que je n'ai pas cité
  • mais qui m'ont aidé à apprendre à programmer.
  • Programme créé par Mingain@aol.com le 7/07/04*/
#include <iostream> // pour cout, cin, ...
#include <stdlib.h> // pour la fonction system()
#include <conio.c> // Pour changer la couleur du texte

// Déclaration des fonctions.
int calculpds( int poidsmo );
int calcultps(int poidsko, int tempssc, int debit );

using namespace std;

int main()
{
    // déclaration des variables utilisées dans le programme
    int connexion;
    int indic;
    int debit;
    int poidsmo;
    int poidsko;
    int tempssc;
    int tempshr;
    int tempsrest;
    int test_conex;

    textcolor (12); //chagement de la couleur du texte
    cout << "Duree - telechargement\n\nCe programme va vous permettre de connaitre le temps"
         << " que mettra votre connexion Internet pour t\202l\202charger un fichier.";
    textcolor (3);
    cout <<"\n\n********************************************************************************\n
********************************************************************************";
    
    indic = 0; //la variable indic prend la valeur 0
    
  while(indic == 0) // Tant que indic vaut 0, on continue d'executer ce qu'il y a en dessous
  {

    textcolor (14); //couleur du texte
    cout << "\nQuel est votre type de connexion ? (56, 128, 512 ou 1024)\n";

    textcolor (95);
    cin >> connexion; // Demande du type de connexion dans la variable connexion
    
    textcolor (2);

	switch( connexion ) //utilisation de switch pour ranger les différents types de connexions
	{
		case 56  : system("cls"); cout << "\nVous disposez d'une connexion 56k.\n\n"; // on affiche le type de connexion choisi
        cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n"; // on demande si c'est le bon type de connexion
        textcolor (95);
        cin >> test_conex; // variable pour demander si c'est le bon type de connexion
        if( test_conex == 1){ //si c'est le bon type de connexion, on sort de la boucle parce que indic vaut autre chose que 0.
        indic = 1;
        }
        else
        {
        indic = 0; // si c'est la mauvais type de connexion, on reste dans la boucle parce que indic vaut toujours 0 (on aurait pu ne pas mettre indic = 0; puisqu'il vaut déjà 0. Ceci permet de rester sur la boucle si l'utilisateur tape autre chose que 1.
        }
        debit = 4; // Dans la case 56k, on dit que le débit est égal à 4 (4ko/sec)
        break;
		case 128 : system("cls"); cout << "\nVous disposez d'une connection 128k.\n\n";
        cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n";
        textcolor (95);
        cin >> test_conex;
        if( test_conex == 1){
        indic = 1;
        }
        else
        {
        indic = 0;
        }
        debit = 10;// Dans la case 128k, on dit que le débit est égal à 10 (10ko/sec)
        break;
		case 512 : system("cls"); cout << "\nVous disposez d'une connection 512k.\n\n";
        cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n";
        textcolor (95);
        cin >> test_conex;
        if( test_conex == 1){
        indic = 1;
        }
        else
        {
        indic = 0;
        }
        debit = 37; break;
		case 1024: system("cls"); cout << "\nVous disposez d'une connexion 1024k.\n\n";
        cout <<"Continuer (taper 1) ou redonner votre type de connexion (taper 2)?\n";
        textcolor (95);
        cin >> test_conex;
        if( test_conex == 1){
        indic = 1;
        }
        else
        {
        indic = 0;
        }
        debit = 73; break;
		default : system("cls"); cout << "\nentr\202e erron\202e...\n"; // En cas d'erreur de la saisie de connexion, on affiche ceci. Si on donne à la variable connexion autre chose que le nom d'une des cases possible.
	}
  }


  system("cls"); // on vide l'écran avec la commande DOS cls
  textcolor (2); //change la couleur du texte


 /* On va dans la condition ci-dessous, afficher le type de connexion choisi (voir ci-dessus)
 Selon la valeur que la variable debit a pris, on affiche un certain texte.*/

  if(debit == 4){
  cout << "Type de connexion: 56k.\n";
  }
  else if(debit == 10){
  cout << "Type de connexion: 128k.\n";
  }
  else if(debit = 37){
  cout << "Type de connexion: 512k.\n";
  }
  else if(debit = 73){
  cout << "Type de connexion: 1024.\n";
  }
  else{
  cout << "Erreur lors de l'execution du programme.\n";
  system("exit");
  }
  textcolor (14); // change la couleur du texte
  cout <<"Donnez le poids total des donn\202es que vous voullez t\202l\202charger en Megaoctets.\n";

  textcolor (95); // change la couleur du texte
  cin >> poidsmo; // on demande le poids des données à télécharger (en Mo)

  system("cls"); // on vide l'écran avec la commande DOS cls
  textcolor (2);  //change la couleur du texte
  cout <<"\nVous disposez d'une connexion "<< connexion <<"k et les donn\202es que vous d\202sirez t\202l\202charger pesent "<< poidsmo <<" Mo.\n\n\n";

/*debut du pourcentage (le pourcentage est là pour faire plus joli mais il est tout à fait dispensable.
Le code n'est pas de moi. Je l'ai trouvé dans une source sur cppfrance.com */
int pcent;
pcent = 0;   
re:                                 
cout<<" "<<pcent<<"% ... calcul ...";
pcent++;
Sleep(100);                  
if(pcent==101)                  
{
cout<<"\n\n";
goto fin;                       
}
if(pcent<10)
cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
else
if(pcent>9)
cout<<"\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
goto re;                                
fin: //fin du pourcentage

 
  poidsko = calculpds( poidsmo ); // on utilise la fonction qui calcule le poids en ko gràce au poids en Mo

  tempshr = calcultps(poidsko, tempssc, debit ); // on calcule le temps de téléchargement en heure


  //Ci dessous, on va afficher le temps de téléchargement de différentes manière selon
  //le temps lui-même! Explication: si le temps est de moins de 1 heure, on va préfèrer afficher le temps en minutes!
  // et ci le temps est suppérieur à 24 heures, on va afficher le temps en jour et le reste en heure!
  if(tempshr <= 24 && tempshr >= 2){
  cout << "\nVotre t\202l\202chargement durera donc " << tempshr << " heures.\n\n";
  }
  else if(tempshr < 2 && tempshr > 1){
  tempsrest = tempshr * 60;
  cout << "\nVotre t\202l\202chargement durera donc " << tempsrest << " minutes.\n\n";
  }
  else if(tempshr > 24 && tempshr < 48){
  tempsrest = tempshr - 24;
  cout << "\nVotre t\202l\202chargement durera donc 1 jour et " << tempsrest << " heures.\n\n";
  }
  else if(tempshr > 48 && tempshr < 72){
   tempsrest = tempshr - 48;
   cout << "\nVotre t\202l\202chargement durera donc 2 jour et " << tempsrest << " heures.\n\n";
  }
  else if(tempshr > 72){
   tempsrest = tempshr - 72;
   cout << "\nVotre t\202l\202chargement durera donc 3 jour et " << tempsrest << " heures.\n\n";
  }
  system("pause");
  return 0;
}

int calculpds( int poidsmo ) //fonction de calcul du poids
{
    return ( poidsmo * 1000 );
}

int calcultps(int poidsko, int tempssc, int debit )  //fonction de calcul du temps
{
    
    tempssc = poidsko / debit;
    
    return ( tempssc / 3600 );
}


/* Merci à Bart pour m'avoir codé les fonctions et les cases.
Au départ, je n'avais pas du tout compris ce que c'était! Et
merci à tous ceux que je vais oublier et que je n'ai pas cité
mais qui m'ont aidé à apprendre à programmer.

Programme créé par Mingain@aol.com le 7/07/04*/

Conclusion

Le programme demande le type de connexion, la taille des données à télécharger et calcule le temps de téléchargement
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   exe
    • Duree - telechargement.exeTélécharger ce fichier [Réservé aux membres club]81 408 octets
  • Duree - telechargement.devTélécharger ce fichier [Réservé aux membres club]365 octets
  • fichier1.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier7 593 octets

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de LordBob le 07/07/2004 18:32:05

bon j'ai regardé ta source que tres rapidement et j'ai constaté une erreur qui m'a frappé:
return ( poidsmo * 1000 );

je crois que la tu fais une convertion de megaoctet en kilooctet... sauf que contrairement a ce que bon nombre de personne pense 1 Mo n'est pas égal a 1 000Ko, mais à 1 024 Ko...
1 Ko = 1 024 octet
1 Mo = 1 024 Ko
1 Go = 1 024 Mo

certe c'est un detail, mais ca peut avoir de l'importance !!!

signaler à un administrateur
Commentaire de Bartoune74 le 08/07/2004 12:19:26

Héhé ya pas de soucis c'était tout naturelle de t'aider :p

signaler à un administrateur
Commentaire de Tibabou le 21/08/2005 00:35:47

"debit = 10;// Dans la case 128k, on dit que le débit est égal à 10 (10ko/sec)"
"on dit que" ??? 1 octet = 8 bits... donc une connexion 128kbps (kilobits par seconde) correspond à un débit de 128/8 = 16 ko/s.
C'est bien entendu la vitesse max théorique, tu devrais retirer 10% de cette valeur pour être à peu près juste.
Pour info:
56k -> 7 ko/s
128k -> 16 ko/s (ADSL mini)
512k -> 64 ko/s (ADSL de base)
1024k -> 128 ko/s (ADSL courant)
10400k -> 1300 ko/s (ADSL - Free dégroupé en moyenne) :P
a+

signaler à un administrateur
Commentaire de BruNews le 21/08/2005 10:48:21 administrateur CS

Free à ce jour à Paris: 1.7 Mo/s.

signaler à un administrateur
Commentaire de Tibabou le 22/08/2005 14:28:14

J'ai dit "en moyenne" BruNews ;-)
Le temps de calculer combien de minutes va prendre le téléchargement, on a plus vite fait de télécharger direct :-)

signaler à un administrateur
Commentaire de BruNews le 22/08/2005 14:46:30 administrateur CS

vi vi j'avais bien vu, c'était juste pour dire où c'en est à ce jour, les choses évoluent si vite.

signaler à un administrateur
Commentaire de sebman le 27/09/2005 03:51:22

Il serait interessant d'y inclure d'autres débits
2 Mg (256 ko/s) pour mon cas mais
8,15 et 20 (Mèga) sont aussi des débits courants

Je me permet des réserves pour le téléchargement en 56k (Bon Courage)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.