Matrice_somme

Résolu/Fermé
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 - 24 janv. 2008 à 19:26
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 - 26 janv. 2008 à 22:53
Bonjour,
j'ai un problemes tres tres tres difficile,
et je ne trouve pas la solution,
SVP aidez moi...
et voici mon probleme:
on veut ecrire un algorithme qui permet de déterminer et d'afficher la somme des elements de chaque
ligne d'une matrice d'entiers M comportant n lignes et m colonnes.

exemple:
soit la matrice suivant:
1 2 3 4
5 6 7 8
9 10 11 12

la somme de la primiere ligne est 10
la somme de la 2eme ligne est 26
la somme de la 3eme ligne est 42


merci d'avance....

14 réponses

mamiemando Messages postés 33393 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 803
24 janv. 2008 à 20:56
Vu que tu n'as pas précisé le langage, en pseudo code :
M = matrice(nb_ligne,nb_colonne)
Pour i = 1 à nb_ligne
  Ecrire "Somme de la ligne " i " = "
  s = 0
  Pour j = 1 à nb_colonne
    s = s + M(i,j)
  FinPour
  Ecrire s
Fin pour

Bonne chance
1
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 8
24 janv. 2008 à 22:32
En lengage Pascal
Et merci
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
24 janv. 2008 à 22:39
Bonjour,

Sans présumer du langage on peut imaginer une séquence comme celle-ci :


DEBUT-ROUTINE

initialisation de ind-lignes = 0 (ou à = 1 suivant le langage ==> 1er élément adressable par 0 ou 1)
Faire TRAIT-LIGNES n-lignes fois (jusqu'à la dernière ligne voir**)

FIN-ROUTINE


TRAIT-LIGNES
initialisation de tot-ligne = 0
initialisation de ind-colonnes = 0 (ou = à 1 suivant le langage ==> 1er élément adressable par 0 ou 1)

Faire SOMME-ELEMTS-LIGNE m-colonnes fois (jusqu'au dernier élélment de la ligne voir** )

Affichage du total : tot-ligne de la ind-lignes eme ligne.
ind-lignes = ind-lignes + 1
FIN-TRAIT-LIGNES

SOMME-ELEMTS-LIGNE
tot-ligne = tot-ligne + elemt [ind-lignes] [ind-colonnes]
ind-colonnes = ind-colonnes + 1
FIN-SOMME-ELEMTS-LIGNE

** 1) Au chargement de la matrice il sera vraisemblablement nécessaire de "borner" chaque ligne avec une valeur particulière (valeur négative peut-être si on est certain que toutes les valeurs présentes dans la matrice sont toujours positives). De même la fin de la matrice sera "bornée" avec une valeur paticulière également par exemple - 32768).

**2) Où bien il faut, lors du chargement dre la matrice, conserver le nombre d'éléments de chaque ligne qui sera par convention le 1er de chacune des lignes. Ce 1er élément devra par conséquent être ignoré lors du calcul de la somme. Le nombre de lignes pourra être une variable numérique indépendante ou pourquoi pas être la valeur du 1er élément de la 1ère ligne de la matrice. Ligne qu'il faudra également ignorer.
La seconde solution semble préférable.
NB. les solutions (1 ou 2) ne sont pas détaillées dans le code précédent.
0
en fait l'algorithme donné par mamiemando te dit tout ce qu'il faut faire tout en sachant qu'une matrice est un tableau à deux entrées dont il te suffit de le definir en fixant le nombre de lignes et le nombre de colonnes, puis crées 2 procedures dont la premiere te permettra d'entrer si nécéssaires les valeurs de ton tableau une seconde qui te permettra d'afficher.Pour cela une bonne maitrise de la boucle for te suffit.je suis desolé je ne peux pas te l'écrire ca fait un bout moment que je n'ai pas du pascal.
bon courage te bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
/**************************************************
**finalement j'ai décidé d'écrire le code en pascal j'espere que j'ai la bonne memoire et que j'ai pas fait qu'écrire des bétises.
voila bon courage bonne chance.s'il y a des erreurs j'espere aussi que tu peux les corriger.

program matrice(input,output);
var m,n:integer;
var matrix:array[1..m,1..n]of integer;
i,j,som,k,l:integer;
begin
write('nb lignes de la matrice ?');
readln(m);
write('nb colonnes de la matrice ?');
readln(l);
(* entrée des éléments de la matrice *)
for i:=1 to m do
for j:=1 to n do
begin
writeln('row',i,', column',j,'?');
readln(matrix[i,j])
end;
end;
(* calcul du produit *)
for k:=1 to m do
begin
som:=0;
for l:=1 to n do
som:=som + matrix[k,l];
end;
write(som);
end;
writeln();
end.
0
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 8
25 janv. 2008 à 09:28
je dit la somme de chaque ligne dans matrice et n'a de tout le matrice.
0
PeJo Messages postés 1374 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 17 juin 2008 176
25 janv. 2008 à 09:36
Bonjour,

C'est pas bien, il t'aide donc tu dois être un peu gentil (surtout qui te pond le code).
C'est marrant, mais dans mes souvenirs (très frais encore), je ne me souviens pas qu'un tableau à deux entrée s'appellait une matrice.
De même, l'addition se faisait entre deux matrices.
Toi tu veux juste faire des additions à la suite!!

Alors soit un peu gentil, ton problème n'est grave ni compliqué!!
0
mamiemando Messages postés 33393 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 803
25 janv. 2008 à 09:54
Sans vouloir être méchante avec le pseudo code que je t'ai donné, il te reste juste à faire une traduction directe. Autant dire que c'est pas super dur. Le but à mon avis c'est quand même que tu apprennes un peu à faire du pascal par toi même et pour ça, il n'y a pas de secret, il faut mettre les mains dedans. Accessoirement CCM n'a pas pour vocation de faire les exercices des étudiants, mais les débloquer oui.

A mon humble avis tu as tout ce qu'il te faut :
- le pseudo code dans <2> pour construire ton programme
- des exemples écrits (en pascal je suppose ?) pour voir les instructions utiles

Bref, à toi de jouer maintenant, et bon courage pour ton exercice ;-)
0
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 8
25 janv. 2008 à 16:39
merci ....
allez les autres j'attand votre reponse.. et des autres methodes.
0
mamiemando Messages postés 33393 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 803
25 janv. 2008 à 19:22
Et plus vite que ça, je dois rendre mon exercice demain et j'ai envie de rien faire ce soir, il y a la star academy à la télé :-)
0
PeJo Messages postés 1374 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 17 juin 2008 176
25 janv. 2008 à 19:28
abir. --> carrefour au rayon cerveau c'est les soldes profites-en!!
0
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 8
25 janv. 2008 à 22:04
allez svp j'ai besoin d'une resolution c'est urgence
merci d'avance
0
PeJo Messages postés 1374 Date d'inscription mardi 14 février 2006 Statut Membre Dernière intervention 17 juin 2008 176
26 janv. 2008 à 22:09
Fallait le demander autrement.
On te donne toutes les billes et toi tu gueulle.
0
abir.1 Messages postés 21 Date d'inscription dimanche 13 janvier 2008 Statut Membre Dernière intervention 9 février 2008 8
26 janv. 2008 à 22:53
merci a tous j'ai deja connu la solution:
program matrice;
uses wincrt;
type
mat=array[1..10,1..10] of integer;
var
i,j,l,c,s:integer;
t:mat;
begin
writeln ('donner l');
readln (l);
writeln ('donner c');
readln (c);
for i:=1 to l do
for j:=1 to c do
begin
write ('t[',i,',',j,']=');
readln (t[i,j]);
end;
for i:=1 to l do
begin
s:=0;
begin
for j:=1 to c do
s:=s+t[i,j];
end;
writeln (s);
end;
end.
0