Aide programmation tableau
cchristian Messages postés 928 Statut Membre -
Je dois faire un exercice mais je bloque.
Pourriez-vous m'aider svp ?
L'exercice dit:
Soit A, un tableau contenant n entiers non triés. Ecrire une procédure qui permet d'écalter A en deux tableaux, T1 et T2 triés et contenant respectivement les éléments impairs et pairs de A.
Merci!
David
Configuration: Windows XP Firefox 3.0.3
17 réponses
Le sujet porte sur la transformation d'un tableau A d'entiers non triés en deux tableaux T1 et T2 triés, où T1 contient les éléments impairs et T2 les éléments pairs. Des réponses évoquent plusieurs langages comme C++, PHP ou Python, et proposent des approches consistant à trier A puis répartir les valeurs selon leur parité via modulo 2. Concrètement, on peut soit trier puis séparer en utilisant une condition A[i] % 2, soit d'abord construire les T1 et T2 en s'appuyant sur la parité et ensuite trier les deux ensembles. En pratique, certains exemples montrent T1 en impairs, T2 en pairs après tri ascendant, et d'autres soulignent l'importance de l'allocation mémoire et de la gestion des langues utilisées.
-
T'as pas crée un bout de script ... ? Un début quoi ?
-
Bonsoir,
NON , les gars, faut se bouger un peu, faites au moins un début d'embryon de commencement de quelque chose. Que l'on ait pas l'impression d'être pris pour des bourricots. -
J'ai bien essayé de faire mais je n'y arrive pas du tout...je débute dans la programmation c'est ma première année, c'est pour ça que je demande un peu d'aide...
Merci
David -
bouge toi avec modulo 2
(X%2)==0 ===>X est pair
sinon =======>X est impair -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ben ouais mais ils filent pas d'exercices sans que t'ai quelques connaissances en général ... :O
-
-
tu dois remplire les deux tableaux puis les trier
il te faut deux fonctions parametrées -
<?php
// Tableau A
$a = array('12','51','3','18','66','21');
?>
A toi de faire un peu le reste. -
-
Bonsoir,
A tout hasard en C(++) :void raz_Tn (int (*T1), int (*T2), int (*T3), int nb_elemts_T) { int i = 0 ; for ( i = 0; i < nb_elemts_T; i++) { T1 [i] = 0 ; T2 [i] = 0 ; T3 [i] = 0 ; } } void tri_T1 (int (*T1), int nb_elemts_T) { int i = 0 ; int j = 1 ; int int_T1 = 0 ; for ( i = 0; i < nb_elemts_T; i++) { for ( j = i + 1; j < nb_elemts_T; j++) { if ( T1 [i] > T1 [j] ) { int_T1 = T1 [j] ; T1 [j] = T1 [i] ; T1 [i] = int_T1 ; } } } } void parit_Tn (int (*T1), int (*T2), int (*T3), int nb_elemts_T) { int i = 0 ; int j = 0 ; int k = 0 ; int reste = 0 ; for ( i = 0; i < nb_elemts_T; i++) { reste = T1 [i] % 2 ; if ( reste > 0 ) { T2 [j] = T1 [i] ; j++ ; } else { T3 [k] = T1 [i] ; k++ ; } } } int main () { int I = 0 ; int N = 0 ; int nb_elemts_T = 10 ; //Affectation des ressources mémoire au tableau. int * T1 = NULL ; T1 = (int*) malloc (nb_elemts_T * sizeof (int*)) ; int * T2 = NULL ; T2 = (int*) malloc (nb_elemts_T * sizeof (int*)) ; int * T3 = NULL ; T3 = (int*) malloc (nb_elemts_T * sizeof (int*)) ; //Spécifique C++ (à tout hasard) remplacé ici par malloc // int * T1 = NULL ; // T1 = new int [nb_elemts_T] ; // int * T2 = NULL ; // T2 = new int [nb_elemts_T] ; // int * T3 = NULL ; // T3 = new int [nb_elemts_T] ; //Fin spécifique C++ IF (T1 == NULL) {printf ("nom_pgm: Probleme a la creation du tableau T1") ; return (1) ;} IF (T2 == NULL) {printf ("nom_pgm: Probleme a la creation du tableau T2") ; return (2) ;} IF (T3 == NULL) {printf ("nom_pgm: Probleme a la creation du tableau T3") ; return (3) ;} raz_Tn (T1, T2, T3, nb_elemts_T) ; for ( I = 0; I < nb_elemts_T; I++) { T1 [I] = rand (); } tri_T1 (T1, nb_elemts_T) ; // Pour Contrôles visuels : printf ("\n\n\nTABLEAU T1 DES %i VALEURS ALEATOIRES :", nb_elemts_T); for ( I = 0; I < nb_elemts_T; I++) { printf ("\nT1 : %i", T1 [I]); } // fin Pour Contrôles visuels : parit_Tn (T1, T2, T3, nb_elemts_T) ; // Pour Contrôles visuels : printf ("\n\n\nTABLEAU T2 DES VALEURS IMPAIRES :"); for ( I = 0; I < nb_elemts_T; I++) { printf ("\n%T2 : %i", T2 [I]); } printf ("\n\n\nTABLEAU T3 DES VALEURS PAIRES :"); for ( I = 0; I < nb_elemts_T; I++) { printf ("\nT3 : %i", T3 [I]); } // fin Pour Contrôles visuels : //Libération des ressources mémoire affectées au tableau. //Spécifique C++ (à tout hasard remplacé ici par free) // delete [] T1 ; //Fin spécifique C++ free (T1) ; IF (T1 == NULL) {printf("\nom_pgm: Probleme a la destruction du tableau T1"); return (4) ;} //Spécifique C++ (à tout hasard remplacé ici par free) // delete [] T2 ; //Fin spécifique C++ free (T2) ; IF (T2 == NULL) {printf("\nom_pgm: Probleme a la destruction du tableau T2"); return (5) ;} //Spécifique C++ (à tout hasard remplacé ici par free) // delete [] T3 ; //Fin spécifique C++ free (T3) ; IF (T3 == NULL) {printf("\nom_pgm: Probleme a la destruction du tableau T3"); return (4) ;} printf ("\n Fin du traitement \n\n" ) ; _getch () ; return (0) ; }-
Sans blague, faut tout ca en C++ pour faire ce simple exercice ??!!
Après c'est vrai que dans son post, c'est pas précisé en quel language il veut faire ca :)- Bah j'ai vu grand, je renseigne le tableau avec des nombres aléatoires, j'édite systématiquement
les résultats (printf) pour contrôles visuels, je donne lorsque c'est utile, les 2 versions
C et C++ (malloc, free),....
Faut bien aider, je me suis fait engueuler (par MP) par un membre qui n'a pas aimé ma
première remarque (voir plus haut) !
-
Version simplifiée :
void tri_T1 (int (*T1), int nb_elemts_T) {int i = 0, j = 1, int_T1 = 0; for ( i = 0; i < nb_elemts_T; i++) { for ( j = i + 1; j < nb_elemts_T; j++) { if ( T1 [i] > T1 [j] ) { int_T1 = T1 [j] ; T1 [j] = T1 [i] ; T1 [i] = int_T1 ;} } } } void parit_Tn (int (*T1), int (*T2), int (*T3), int nb_elemts_T) {int i = 0, j = 0, k = 0; for ( i = 0; i < nb_elemts_T; i++) { if ( (T1 [i] % 2) > 0 ) { T2 [j++] = T1 [i] ; } else { T3 [k++] = T1 [i] ; } } } int main () { int I = 0, nb_elemts_T = 10 ; int * T1 = NULL ; T1 = (int*) malloc (nb_elemts_T * sizeof (int*)) ; int * T2 = NULL ; T2 = (int*) malloc (nb_elemts_T * sizeof (int*)) ; int * T3 = NULL ; T3 = (int*) malloc (nb_elemts_T * sizeof (int*)) ; for ( I = 0; I < nb_elemts_T; I++) { T1 [I] = rand (); } tri_T1 (T1, nb_elemts_T) ; printf ("\n\n\nTABLEAU T1 DES %i VALEURS ALEATOIRES :", nb_elemts_T); for ( I = 0; I < nb_elemts_T; I++) { printf ("\nT1 : %i", T1 [I]); } parit_Tn (T1, T2, T3, nb_elemts_T) ; printf ("\n\n\nTABLEAU T2 DES VALEURS IMPAIRES :"); for ( I = 0; I < nb_elemts_T; I++) { printf ("\n%T2 : %i", T2 [I]);} printf ("\n\n\nTABLEAU T3 DES VALEURS PAIRES :"); for ( I = 0; I < nb_elemts_T; I++) { printf ("\nT3 : %i", T3 [I]); } free (T1), (T2), (T3) ; _getch () ; return (0) ; }
-
-
Salut,
Allez, il y a du C++, du PHP. Je propose ma version python ^^.import random liste=[random.randint(1,15) for i in range(10)] b=sorted([j for j in liste if j%2==0]) c=sorted([j for j in liste if j%2]) print liste print b print c
-
Version php complète :
<?php
$a = $t1 = $t2 = array();
for ($i=0;$i<=50;$i++)
array_push($a,rand(0,200));
print_r($a);
echo '<br />';
natsort($a);
foreach($a as $tri=>$valeur) {
if ( $valeur%2 != 0 )
array_push($t1,$valeur);
else
array_push($t2,$valeur);
}
print_r($t1);
echo '<br />';
print_r($t2);
?> -
Salut,
En fait, on fait ça en Français, un peu comme du C mais en Français.
Merci à tous
David-
Bonjour,
Si C en français, C sous forme algorithmique alors ?
Algorithme :
Ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur. © Larousse 2004
-
-
Salut,
Voici ce que j'ai fais:
procedure blabla
{tabinit=tableau d'entier
tabimp= pareil
tabpr=pareil
nbpr=entier
nbimp=pareil
t=entier}
{t est la taille du tableau}={nbpr: les nombres pair
nbimp: les nombres impair}
var i entier
nbpr<---tabpr[0]
nbimp<---tabimp[0]
pour i de 0 à t-1
Si tab init[i]=0
alors tabpr[i]<---nbpr
sinon
tabimp[i]<---nbimp
fin si
fin pour
fin procédure
Voilà voilà...si vous pouvez me la corriger ça serait sympa. -
Bonsoir,
Il faut que tu commentes ton algo car en ce qui me concerne je ne comprends pas très bien. -
J'ai essayé de faire quelque chose, je vous ai dis, je débute en algorithimique...
En tous cas, l'excercice dit:
Soit A, un tableau contenant n entiers non triés. Ecrire une procédure qui permet d'écalter A en deux tableaux, T1 et T2 triés et contenant respectivement les éléments impairs et pairs de A.
J'ai remplacé quelques appellations, mais à la fin c'est pareil.
Si vous pouvez me le corriger, ça serait super cool, en plus c'est pour demain après-midi...
Merci
David -
Bonsoir,
Voici une base de travail, de réflexion,
DEBUT PGM ---Définition et Initialisation des variables élémentaires nb_elemts_T=n, I = 1, J = 1, K = 1......... ---Définition et allocation mémoires de 3 tableaux numériques de tailles identiques T1, T2, T3. --- FAIRE pour tout les nb-elemts_T de T2 et T3: --- Initialisation à la valeurs zéro des nb-elemts_T des 2 tableaux T2 et T3. --- FIN FAIRE --- FAIRE pour tout les nb-elemts_T de T3 : --- Chargement des nb_elemts_T du tableau T1 avec des valeurs numériques (nombres aléatoires ?) --- FIN FAIRE Trier en valeurs ascendantes les éléments du tableau T1 (sous programme ou utilitaire de tri) --- FAIRE pour chaque element (e[I]) de T1, progression de 1 à chaque itération jusqu'à e[nb_elemts_T - 1]: --- FAIRE une comparison avec les éléments suivants du tableau ( e[I+1], e[I+2], ...e[nb_elemts_T] ) : --- Si element (e[I]) de T1 > element (e[I+n]) de T1 --- Permuter les valeurs de : element (e[I]) de T1 avec element (e[I+n]) de T1 --- FI SI --- FIN FAIRE --- FIN FAIRE Recherche parité ou non parité (sous programme I = 1, J = 1, K = 1) : --- FAIRE pour chaque element (e[I]) de T1, progression de 1 à chaque itération jusqu'à e[nb_elemts_T]: --- Si element (e[I]) de T1 % 2 > 0 (nombre impair dans T2) --- valeur contenu dans element (e[I]) de T1 dans élément (e[J++] de T2 --- SINON (nombre pair dans T3) --- valeur contenu dans element (e[I]) de T1 dans élement (e[K++] de T3 --- FI SI --- FIN FAIRE --- FAIRE pour chaque element de T1, T2 et T3,progression de 1 à chaque itération jusqu'à nb_elemts_T : ---- Affichage à la console (ou impression papier) par tableau des valeurs qu'ils contiennent.. --- FIN FAIRE --- Libération des ressources mémoires (le cas échéant suivant le langage) ............................. (suite événtuelle du programme) .............................. FIN PGM
NB. Les élément des tableaux sont référencés de 1 à n. Variable++ signifie progression de 1
du contenu de la variable aprés son utilisation dans l'instruction qui la contient.