[C++] Besoin d'une petite astuce en C++
Résolu/Fermé
paupiette
Messages postés
43
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
24 janvier 2008
-
30 août 2005 à 12:53
amel - 16 juil. 2007 à 12:03
amel - 16 juil. 2007 à 12:03
A voir également:
- [C++] Besoin d'une petite astuce en C++
- Petite amie virtuelle en français - Accueil - Intelligence artificielle
- Astuce whatsapp écriture - Accueil - Messagerie instantanée
- Écrire en gras, en italique ou en barré sur WhatsApp - Guide
- Firefox s'ouvre en petite fenetre ✓ - Forum Mozilla Firefox
- Classez ces fichiers de la plus petite taille (1) à la plus grande (4). - Forum Bases de données
5 réponses
salut, utilise les vector (#include<vector>, en utilisant using std::vector), ensuite tu pourras les trier par ordre croissant.
Si v est ton vector alorr si v(i+1) != v(i)+1 cela veut dire qu'il manque des nombres
j'espère que cela t'aidera.
Pom
Si v est ton vector alorr si v(i+1) != v(i)+1 cela veut dire qu'il manque des nombres
j'espère que cela t'aidera.
Pom
paupiette
Messages postés
43
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
24 janvier 2008
10
30 août 2005 à 16:27
30 août 2005 à 16:27
Salut,
Merci de ta réponse!
Je ne sais pas ce que sont les vector, désolé... Puis-je appliquer ce "statut" a ma variable représentant le résultat de mon opération?
Je comprend bien comment marche ta commande mais
Peut-on savoir quelle est la valeur manquante? (combien vaut "i" si j'ai bien compris)
D'autre part, quelle est la commande pour trier mes valeurs?
Et enfin, une question bete: J'ai un grand nombre de valeurs et lorsque je lance mon programme, les premières disparaissent au fur et a mesure pour laisser leur place aux nouveaux résultats du calcul! Peut-on empécher ça?
En tout cas, encore merci de m'avoir répondu!
^^
Paupiette
Merci de ta réponse!
Je ne sais pas ce que sont les vector, désolé... Puis-je appliquer ce "statut" a ma variable représentant le résultat de mon opération?
Je comprend bien comment marche ta commande mais
Peut-on savoir quelle est la valeur manquante? (combien vaut "i" si j'ai bien compris)
D'autre part, quelle est la commande pour trier mes valeurs?
Et enfin, une question bete: J'ai un grand nombre de valeurs et lorsque je lance mon programme, les premières disparaissent au fur et a mesure pour laisser leur place aux nouveaux résultats du calcul! Peut-on empécher ça?
En tout cas, encore merci de m'avoir répondu!
^^
Paupiette
Re salut,
ton prgm doit donner qqch comme ca :
#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<int> v; // creaction d'un vector
for(int a= blablabla)
for(int b= blablabla)
for(int c= blablabla)
v.push_back(36*a+57*b+486*c);
std::sort(v.begin(), v.end()); // on trie par ordre croissant le vector v
// maintenant on va déterminer les nombres entiers qui manquent
int p=v[0]; // 1e element de v
int q=v[1]; // 2e element de v
int i=3; // compteur
while( (q-p==1) & (i<v.size) )
{
p=q;
q=v[i];
i++;
}
if(i==v.size())
cout<<"aucun element manquant\n";
else
cout<<"il manque les elements\n";
for(int j=p+1;j<q;j++) cout<<j<<" "<<endl;
cout<<"\n";
return 0;
}
pom
ton prgm doit donner qqch comme ca :
#include<iostream>
#include<vector>
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<int> v; // creaction d'un vector
for(int a= blablabla)
for(int b= blablabla)
for(int c= blablabla)
v.push_back(36*a+57*b+486*c);
std::sort(v.begin(), v.end()); // on trie par ordre croissant le vector v
// maintenant on va déterminer les nombres entiers qui manquent
int p=v[0]; // 1e element de v
int q=v[1]; // 2e element de v
int i=3; // compteur
while( (q-p==1) & (i<v.size) )
{
p=q;
q=v[i];
i++;
}
if(i==v.size())
cout<<"aucun element manquant\n";
else
cout<<"il manque les elements\n";
for(int j=p+1;j<q;j++) cout<<j<<" "<<endl;
cout<<"\n";
return 0;
}
pom
paupiette
Messages postés
43
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
24 janvier 2008
10
30 août 2005 à 18:48
30 août 2005 à 18:48
Merci beaucoup pour ta longue réponse!
Pfffiou! J'ai un peu de mal à tout comprendre!
Déjà, en copiant mot à mot ton prog, la compilation bloque au "while", je ne sais pas pourquoi...
Ensuite, j'aurais (encore) quelques questions:
Que signifient les commandes du type "using std::cout;", quelle est la différence avec une librairie?
Quelle est la différence entre un vector et un tableau?
Est il possible d'afficher le vector, je n'ai pas réussi...
Ta syntaxe:
for(int a= blablabla)
for(int b= blablabla)
for(int c= blablabla)
est elle identique a celle-ci (boucles imbriquées):
for(int a= blablabla)
{
for(int b= blablabla)
{
for(int c= blablabla)
...
La fonction v.push_back(zaza) affecte-elle bien la valeur zaza à la suite dans v, elle rajoute un élément?
peut-on affecter autre chose que des nombres dans un vector?
Voilà, j'ai compris tout le reste!! :-)
Paupiette
Pfffiou! J'ai un peu de mal à tout comprendre!
Déjà, en copiant mot à mot ton prog, la compilation bloque au "while", je ne sais pas pourquoi...
Ensuite, j'aurais (encore) quelques questions:
Que signifient les commandes du type "using std::cout;", quelle est la différence avec une librairie?
Quelle est la différence entre un vector et un tableau?
Est il possible d'afficher le vector, je n'ai pas réussi...
Ta syntaxe:
for(int a= blablabla)
for(int b= blablabla)
for(int c= blablabla)
est elle identique a celle-ci (boucles imbriquées):
for(int a= blablabla)
{
for(int b= blablabla)
{
for(int c= blablabla)
...
La fonction v.push_back(zaza) affecte-elle bien la valeur zaza à la suite dans v, elle rajoute un élément?
peut-on affecter autre chose que des nombres dans un vector?
Voilà, j'ai compris tout le reste!! :-)
Paupiette
Salut,
Déjà, en copiant mot à mot ton prog, la compilation bloque au "while", je ne sais pas pourquoi...
-> quel est le message d'erreur ?
Que signifient les commandes du type "using std::cout;", quelle est la différence avec une librairie?
-> std::cout : tu utilises le cout de l'espace de nom standard. Tu peux aussi mettre using namespace std. En marquant using std::cout, tu n'utilises que le cout de std. Ca peut éviter les conflits.
http://c.developpez.com/faq/cpp/?page=console#SL_using_namespace
Quelle est la différence entre un vector et un tableau?
-> le temps d'accès à un élément d'un tableau est plus court que le temps d'accès à un vector (ce n'est pas un vecteur mais un vector d'ailleurs) : mais la différence est en nanoseconde.
Ensuite, avec un tableau, tu dois définir la taille de ce dernier AVANT de l'utiliser (exemple int tab[5]) alors qu'avec un vector tu peux lui définir une taille et faire ensuite ce que tu veux. Sur les vectors, tu peux faire plein d'instructions (tri, troncature etc...) Bref, les vectors sont bien plus faciles à utiliser qu'un tableau
Est il possible d'afficher le vector, je n'ai pas réussi...
-> oui :
for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
tu ne peux pas faire directement cout<<v<<endl; à moins que tu surchage le cout
Ta syntaxe:
for(int a= blablabla)
for(int b= blablabla)
for(int c= blablabla)
est elle identique a celle-ci (boucles imbriquées):
for(int a= blablabla)
{
for(int b= blablabla)
{
for(int c= blablabla)
...
-> oui, si tu ne mets pas d'accolades cela veut dire que tu ne fera qu'une seule instruction.
exemple
for(int i=0;i<5;i++)
cout<<"toto";
cout<<"tata";
tu afficheras 5 fois toto et une fois tata
for(int i=0;i<5;i++)
{
cout<<"toto";
cout<<"tata";
}
tu afficheras 5 fois toto et tata
La fonction v.push_back(zaza) affecte-elle bien la valeur zaza à la suite dans v, elle rajoute un élément?
-> la fonction pusb_back(zaza) insère à la fin de ton vector l'élément zaza
peut-on affecter autre chose que des nombres dans un vector?
-> bien sûr (et heureusement). Un vector est un conteneur donc il contient ce que tu veux :
vector<int> v contient des entiers
vector<string> v contient des string
vecot<vector< double> > v v est un vector de vector de double
Voilà, j'ai compris tout le reste!! :-)
-> très bien.
un super cours de C++ :
http://c.developpez.com/faq/cpp/
(paragraphe 10 pour les namespaces)
Pour les vectors, tu trouveras une partie de ton bonheur ici :
http://c.developpez.com/faq/cpp/?page=STL#STL_vector
bonne continuation
Pom
Déjà, en copiant mot à mot ton prog, la compilation bloque au "while", je ne sais pas pourquoi...
-> quel est le message d'erreur ?
Que signifient les commandes du type "using std::cout;", quelle est la différence avec une librairie?
-> std::cout : tu utilises le cout de l'espace de nom standard. Tu peux aussi mettre using namespace std. En marquant using std::cout, tu n'utilises que le cout de std. Ca peut éviter les conflits.
http://c.developpez.com/faq/cpp/?page=console#SL_using_namespace
Quelle est la différence entre un vector et un tableau?
-> le temps d'accès à un élément d'un tableau est plus court que le temps d'accès à un vector (ce n'est pas un vecteur mais un vector d'ailleurs) : mais la différence est en nanoseconde.
Ensuite, avec un tableau, tu dois définir la taille de ce dernier AVANT de l'utiliser (exemple int tab[5]) alors qu'avec un vector tu peux lui définir une taille et faire ensuite ce que tu veux. Sur les vectors, tu peux faire plein d'instructions (tri, troncature etc...) Bref, les vectors sont bien plus faciles à utiliser qu'un tableau
Est il possible d'afficher le vector, je n'ai pas réussi...
-> oui :
for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
tu ne peux pas faire directement cout<<v<<endl; à moins que tu surchage le cout
Ta syntaxe:
for(int a= blablabla)
for(int b= blablabla)
for(int c= blablabla)
est elle identique a celle-ci (boucles imbriquées):
for(int a= blablabla)
{
for(int b= blablabla)
{
for(int c= blablabla)
...
-> oui, si tu ne mets pas d'accolades cela veut dire que tu ne fera qu'une seule instruction.
exemple
for(int i=0;i<5;i++)
cout<<"toto";
cout<<"tata";
tu afficheras 5 fois toto et une fois tata
for(int i=0;i<5;i++)
{
cout<<"toto";
cout<<"tata";
}
tu afficheras 5 fois toto et tata
La fonction v.push_back(zaza) affecte-elle bien la valeur zaza à la suite dans v, elle rajoute un élément?
-> la fonction pusb_back(zaza) insère à la fin de ton vector l'élément zaza
peut-on affecter autre chose que des nombres dans un vector?
-> bien sûr (et heureusement). Un vector est un conteneur donc il contient ce que tu veux :
vector<int> v contient des entiers
vector<string> v contient des string
vecot<vector< double> > v v est un vector de vector de double
Voilà, j'ai compris tout le reste!! :-)
-> très bien.
un super cours de C++ :
http://c.developpez.com/faq/cpp/
(paragraphe 10 pour les namespaces)
Pour les vectors, tu trouveras une partie de ton bonheur ici :
http://c.developpez.com/faq/cpp/?page=STL#STL_vector
bonne continuation
Pom
paupiette
Messages postés
43
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
24 janvier 2008
10
31 août 2005 à 13:38
31 août 2005 à 13:38
Encore merci pour cette réponse!
le message d'erreur lors de la compilation au moment du while est:
"invalid une of member (did you forget the '&'?)"
Après avoir regardé le cours que tu m'as conseillé j'ai remplacé v.size par v.size() et ca marche très bien!
Je commence a comprendre, il ne me reste plus qu'a bricoler pour insérer cela dans mon programme mais le gros du travail est fait.
Il me reste toujours le petit problème de l'affichage pendant l'execution, comme j'ai trop de valeurs, les premières disparaîssent... Mais c'est pas trop grave, c'est plus par curiosité.
En tout cas un grand merci, je vais me mettre sur mon programme, et je te tiens au courant de l'avancée
A bientot
Paupiette
le message d'erreur lors de la compilation au moment du while est:
"invalid une of member (did you forget the '&'?)"
Après avoir regardé le cours que tu m'as conseillé j'ai remplacé v.size par v.size() et ca marche très bien!
Je commence a comprendre, il ne me reste plus qu'a bricoler pour insérer cela dans mon programme mais le gros du travail est fait.
Il me reste toujours le petit problème de l'affichage pendant l'execution, comme j'ai trop de valeurs, les premières disparaîssent... Mais c'est pas trop grave, c'est plus par curiosité.
En tout cas un grand merci, je vais me mettre sur mon programme, et je te tiens au courant de l'avancée
A bientot
Paupiette
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
paupiette
Messages postés
43
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
24 janvier 2008
10
1 sept. 2005 à 17:22
1 sept. 2005 à 17:22
Ca y est!
Mon programme est terminé, tout fonctionne!
Merci beaucoup Pom pour ces conseils!
A bientot
Paupiette
Mon programme est terminé, tout fonctionne!
Merci beaucoup Pom pour ces conseils!
A bientot
Paupiette