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 !

Sujet : Somme d'entiers [ Archives / Au secours ] (PiraTmaT)

mardi 31 décembre 2002 à 10:09:26 | Somme d'entiers

PiraTmaT

Bonjour,
Je dispose d'une suite d'un certain nombre d'entiers aléatoires inférieurs ou égaux à 100.
Je dois déterminer s'il est possible de regrouper un certain nombre de .. nombres parmi ceux de la liste dont la somme serait égale à la demi-somme de tous les éléments de la liste ... Quelqu'un as-t-il une autre idée que d'essayer tous les cas ? J'ai déja trouvé quelques cas particuliers pour faciliter les recherches, mais rien de bien efficace ... Merci d'avance

mardi 31 décembre 2002 à 10:36:36 | Re : Somme d'entiers

Funcky

Le plus grand avec le plus petit, puis le plus grand avec le deuxième, avec le troisième .. jusqu'a ce que ca depasse la moitié, ensuite tu prend l'avant dernier et tu recommence et ainsi de suite jusk'a ce ke le plus grand nombre restant soit plus petit que le quart de la liste.

C'est un peu plus rapide que de tous les tester mais il y a surment moyende faire mieux ...

===============================

Funcky

===============================

On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?



-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
> Je dispose d'une suite d'un certain nombre d'entiers aléatoires inférieurs ou égaux à 100.
> Je dois déterminer s'il est possible de regrouper un certain nombre de .. nombres parmi ceux de la liste dont la somme serait égale à la demi-somme de tous les éléments de la liste ... Quelqu'un as-t-il une autre idée que d'essayer tous les cas ? J'ai déja trouvé quelques cas particuliers pour faciliter les recherches, mais rien de bien efficace ... Merci d'avance

mardi 31 décembre 2002 à 11:07:24 | Re : Somme d'entiers

PiraTmaT

Je peux déja vous donner les quelques conditions que j'ai trouvé ... ça peut aider ...

Si le nombre d'entiers est impair, alors c'est impossible.
Si il y a un nombre impair d'entiers pairs, alors c'est impossible.
Si le plus grand entier de la liste est plus grand que la demi-somme totale, alors c'est impossible.
Si la somme de deux entiers est plus grande que la demi-somme totale, alors un seul de ces entiers est dans le groupe.

Bon voila, rien de révolutionnaire, mais encore fallait-il le dire ..

mardi 31 décembre 2002 à 11:16:22 | Re : Somme d'entiers

Funcky

Bein alor, t'as qua appliker ces conditions à ce ke j'ai mis, la ca devrait etre tout bon non ???

===============================

Funcky

===============================

On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?



-------------------------------
Réponse au message :
-------------------------------

> Je peux déja vous donner les quelques conditions que j'ai trouvé ... ça peut aider ...
>
> Si le nombre d'entiers est impair, alors c'est impossible.
> Si il y a un nombre impair d'entiers pairs, alors c'est impossible.
> Si le plus grand entier de la liste est plus grand que la demi-somme totale, alors c'est impossible.
> Si la somme de deux entiers est plus grande que la demi-somme totale, alors un seul de ces entiers est dans le groupe.
>
> Bon voila, rien de révolutionnaire, mais encore fallait-il le dire ..

mardi 31 décembre 2002 à 11:21:09 | Re : Somme d'entiers

PiraTmaT


J'avoue ne pas avoir suivis ton raisonnement à propos du dernier quart ?

mardi 31 décembre 2002 à 12:29:56 | Re : Somme d'entiers

Funcky

donk, si tu par du plus grad et ke tu aditionne chaque fois un plus petit, ca ne sert à rien de tester ceux qui valent moi ke le quart de la somme totale, puiske on n'arrivera jamais à la moitié ....

Je te conseille d'attribuer à chake nombre un flag qui vo 1 au debut, et chake fois ke tu es sur k'il ne sert à rien, tu le met à 0 (avec les conditions que tu as données par exemple) et tu ne teste que ceux qui on un flag de 1 par exmple avec la methode ke j'ai donnée

ma methode :

ex : 1 2 3 5 7 8 (peits nombres pour plus de facilité ...)
somme 26
moitié 13

8 + 1 = 9
8 + 2 = 10
8 + 3 = 11
8 + 5 = 13 flag 0 sur 5 et 8, tu sai kil vont à deux fo plu le tester et ca sert à rien de tester 8 + des valeurs au dessus de 5, vu ke t deja au dessus de la moitié

PS : tu t'arrete quand la somme est plus grande ou egale à la moitié, et tu me un flag 0 sur le nombre)

7 + 1 = 8
7 + 2 = 9
7 + 3 = 10

3 fo plus tester ni en dessous, paske de toute facon, tu as deja essayé tout les nombres au dessus, donk il n'y aura que des nombres inferieurs ou égaux à 3, et leur somme ne vaudrat jamais la moitié (c ca ke je voulai dire par le quart)

En ayant verifié tes conditions avant, je crois que ca sera la meilleur méthode (a moins qu'il n'y ai une formule mathématique mais ca m'etonnerait ....)


Euhhhh je me comprend, j'espère que tu comprendras aussi ...


===============================

Funcky

===============================

On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?



-------------------------------
Réponse au message :
-------------------------------

>
> J'avoue ne pas avoir suivis ton raisonnement à propos du dernier quart ?

mardi 31 décembre 2002 à 12:40:30 | Re : Somme d'entiers

PiraTmaT

Oki, j'ai compris ta méthode.
Mais je peux avoir jusqu'à 100 entiers.
Autrement dit, au cas où je ne trouverais pas avant un groupe qui fonctionne, je suis obligé de tester des groupes qui vont jusqu'a 50 entiers ... Et chaque fois que fois que nombre d'entier par groupe augmente, le nombre de possibilités augmente ... J'ai pas encore trouvé d'idées pour programmer une méga boucle .. pour l'instant, j'arrive à programmer une fonction de vérification pour un nombre d'entier précis d'entiers dans le groupe. Si quelqu'un pouvait méviter de programmer 50 fois la meme fonction avec une boucle incorporée de plus à chaque fois, vous auiez toute ma gratitude ;-)

mardi 31 décembre 2002 à 13:10:53 | Re : Somme d'entiers

Funcky


tu partirait d'une

struct liste
{
int entier;
int flag = 1;
}

avec un

struct liste tab[100];

et un NMAX, correspndant au nombre d'entiers ...
et moitié corrsepondant a la somme des entiers divisé par deux

int i = NMAX - 1;
int j = 0;
int groupe = 3;
bool continue = true;

while (continue == true)
{
while (tab.entier + tab[j].entier <= moitié)
{
if (tab[j].flag == 1)
{
if (tab[i].entier + tab[j].entier == moitié)
{
tab[i].flag = groupe;
tab[j].flag = groupe;
groupe++;
}
}
j++;
}
tab[i].flag = 0;
i--;
if (tab[i].entier < (moitié / 2))
{
continue = false;
}
}


ca te donnerai un tableau avec tout les nombres dont les flags vallent 1 ou 0 si il ne vont pas avec les autres
un flag > 1 correspondant au N° du groupe.

C'est la seulle solution que je vois ...

PS : je viend de taper ca sans le tester, mais normalement ca devrait être bon ...

===============================

Funcky

===============================

[i]On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?




-------------------------------
Réponse au message :
-------------------------------

> Oki, j'ai compris ta méthode.
> Mais je peux avoir jusqu'à 100 entiers.
> Autrement dit, au cas où je ne trouverais pas avant un groupe qui fonctionne, je suis obligé de tester des groupes qui vont jusqu'a 50 entiers ... Et chaque fois que fois que nombre d'entier par groupe augmente, le nombre de possibilités augmente ... J'ai pas encore trouvé d'idées pour programmer une méga boucle .. pour l'instant, j'arrive à programmer une fonction de vérification pour un nombre d'entier précis d'entiers dans le groupe. Si quelqu'un pouvait méviter de programmer 50 fois la meme fonction avec une boucle incorporée de plus à chaque fois, vous auiez toute ma gratitude ;-)

mardi 31 décembre 2002 à 13:11:53 | Re : Somme d'entiers

Funcky

fait chier !!!! j'avait tout bien mis avec les decalages pour voir plus clair et il me remet tout sur la meme ligne !!!!!
ouiiiiiiiiiiiiiiinnnnnnnnnnnnnnnnnnnn

===============================

Funcky

===============================

On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?



-------------------------------
Réponse au message :
-------------------------------

>
> tu partirait d'une
>
> struct liste
> {
> int entier;
> int flag = 1;
> }
>
> avec un
>
> struct liste tab[100];
>
> et un NMAX, correspndant au nombre d'entiers ...
> et moitié corrsepondant a la somme des entiers divisé par deux
>
> int i = NMAX - 1;
> int j = 0;
> int groupe = 3;
> bool continue = true;
>
> while (continue == true)
> {
> while (tab.entier + tab[j].entier <= moitié)
> {
> if (tab[j].flag == 1)
> {
> if (tab[i].entier + tab[j].entier == moitié)
> {
> tab[i].flag = groupe;
> tab[j].flag = groupe;
> groupe++;
> }
> }
> j++;
> }
> tab[i].flag = 0;
> i--;
> if (tab[i].entier < (moitié / 2))
> {
> continue = false;
> }
> }
>
>
> ca te donnerai un tableau avec tout les nombres dont les flags vallent 1 ou 0 si il ne vont pas avec les autres
> un flag > 1 correspondant au N° du groupe.
>
> C'est la seulle solution que je vois ...
>
> PS : je viend de taper ca sans le tester, mais normalement ca devrait être bon ...
>
> ===============================
>
> Funcky
>
> ===============================
>
> [i]On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?

>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Oki, j'ai compris ta méthode.
> > Mais je peux avoir jusqu'à 100 entiers.
> > Autrement dit, au cas où je ne trouverais pas avant un groupe qui fonctionne, je suis obligé de tester des groupes qui vont jusqu'a 50 entiers ... Et chaque fois que fois que nombre d'entier par groupe augmente, le nombre de possibilités augmente ... J'ai pas encore trouvé d'idées pour programmer une méga boucle .. pour l'instant, j'arrive à programmer une fonction de vérification pour un nombre d'entier précis d'entiers dans le groupe. Si quelqu'un pouvait méviter de programmer 50 fois la meme fonction avec une boucle incorporée de plus à chaque fois, vous auiez toute ma gratitude ;-)
>

mardi 31 décembre 2002 à 13:19:22 | Re : Somme d'entiers

PiraTmaT





-------------------------------
Réponse au message :
-------------------------------

>
> tu partirait d'une
>
> struct liste
> {
> int entier;
> int flag = 1;
> }
>
> avec un
>
> struct liste tab[100];
>
> et un NMAX, correspndant au nombre d'entiers ...
> et moitié corrsepondant a la somme des entiers divisé par deux
>
> int i = NMAX - 1;
> int j = 0;
> int groupe = 3;
> bool continue = true;
>
> while (continue == true)
> {
> while (tab.entier + tab[j].entier <= moitié)
> {
> if (tab[j].flag == 1)
> {
> if (tab[i].entier + tab[j].entier == moitié)
> {
> tab[i].flag = groupe;
> tab[j].flag = groupe;
> groupe++;
> }
> }
> j++;
> }
> tab[i].flag = 0;
> i--;
> if (tab[i].entier < (moitié / 2))
> {
> continue = false;
> }
> }
>
>
> ca te donnerai un tableau avec tout les nombres dont les flags vallent 1 ou 0 si il ne vont pas avec les autres
> un flag > 1 correspondant au N° du groupe.
>
> C'est la seulle solution que je vois ...
>
> PS : je viend de taper ca sans le tester, mais normalement ca devrait être bon ...
>
> ===============================
>
> Funcky
>
> ===============================
>
> [i]On dit que seulement dix personnes au monde comprenaient Einstein. Personne ne me comprend. Suis-je un génie ?

>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Oki, j'ai compris ta méthode.
> > Mais je peux avoir jusqu'à 100 entiers.
> > Autrement dit, au cas où je ne trouverais pas avant un groupe qui fonctionne, je suis obligé de tester des groupes qui vont jusqu'a 50 entiers ... Et chaque fois que fois que nombre d'entier par groupe augmente, le nombre de possibilités augmente ... J'ai pas encore trouvé d'idées pour programmer une méga boucle .. pour l'instant, j'arrive à programmer une fonction de vérification pour un nombre d'entier précis d'entiers dans le groupe. Si quelqu'un pouvait méviter de programmer 50 fois la meme fonction avec une boucle incorporée de plus à chaque fois, vous auiez toute ma gratitude ;-)
>


1 2

Cette discussion est classé dans : entiers, nombre, liste, certain, somme


Répondre à ce message

Sujets en rapport avec ce message

Aruthmétique sur grands entiers ??? [ par Cygnus ] J'ai à effectuer des opérations (+,-,'/,*) sur des grands nombres entiers (positifs et négatifs), tout en utilisant les fonctions membre de la classe recherche [ par dvpm ] je suis débutant et j'essaie de mettre au point un programme qui permet à son utilistareur de rentrer des nombres (des entiers positifs) ua clavier Liste de nombres aléatoires [ par byoushin ] Bonjour,je cherche comment générer une liste de nombre aléatoire.J'ai essayé en initialisant dans main srand(GetTickCount()); ou aussi srand(time(NULL Nombre limite d'enregistrements... [ par Clonk ] Bonjour,dans mon appli, j'ouvre des fichiers que je triate ligne par ligne (j'ai posté à propos de ça plus tot...)par rapport à chaque ligne, je dois Combinaison des entiers [ par ghada ] J'aime bien avoir un algorithme qui permet de générer toutes les combinaisons d'une liste d'entiers c'est à dire 2^n avec n le nombre d'entiers de la calculer la somme des chiffres d'un nombre donné - NTL et nombres ZZ [ par scelw ] Je dois faire un exercice.Sachant que c'est pour travailler avec des très grands nombres (de plusieurs millions de chiffres), il faut utiliser la clas pointeur de classe [ par gbcha ] bonjour,J'ai un problème avec microsoft visual C++. J'avais crée un certain nombre de classe, avec un certain nombre de pointeurs sur ces classes. J'a Lire un certain nombre de bits dans un fichier [ par tekila_bandita ] Bonjour, j'aimerais savoir comment faire pour lire un certain nombre de bits dans un fichier...Donc enfaite, j'ouvre mon fichier en mode binaire à par Nombre d'éléments dans une liste [ par JesusQuintana ] Salut @ tous, Je voudrais réaliser une fonction qui permet de compter le nombre d’éléments dans une liste chaînée en algo. Fonction long (d :l [LangageC]Tri d'une liste chainée d'entiers. [ par sleyze ] Bonsoir, quelqu'un pourrait il me donner une fonction permettant de trier une liste chainée L dans l'ordre croissant en utilisant un tri autre que le


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

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,437 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é.