Calcul de la durée d'un téléchargement selon le type de connexion

Soyez le premier à donner votre avis sur cette source.

Vue 14 654 fois - Téléchargée 336 fois

Description

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

Source / Exemple :


#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

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
37
Date d'inscription
mercredi 29 mai 2002
Statut
Membre
Dernière intervention
11 décembre 2010

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)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
vi vi j'avais bien vu, c'était juste pour dire où c'en est à ce jour, les choses évoluent si vite.
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012

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 :-)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
28
Free à ce jour à Paris: 1.7 Mo/s.
Messages postés
130
Date d'inscription
mercredi 2 janvier 2002
Statut
Membre
Dernière intervention
7 juillet 2012

"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+
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.