Kommunauty
Connexion
Inscription

Fonction sommeTableau (langage C)


Faandemanga Messages : 35

Bonjour,

Je cherche à créer une fonction sommeTableau,

qui permet de calculer la somme des valeurs contenues dans un tableau.

Le problème c'est que m'on programme plante, il m'affiche 4200724 au lieu de 10.

Voici m'on code:

#include <stdio.h>
#include <stdlib.h>


int sommeTableau(int tableau [],int tailleTableau);



int main(int argc , char *argv [])
{
int tableau[4]={0,2,4,4};

printf("La somme des valeurs du tableau font %d\n",sommeTableau(tableau,4));

return 0;

}

int sommeTableau(int tableau [],int tailleTableau)
{
int i;
static int sommeValeursTableau;

for(i=0; i<tailleTableau; i++)
{
sommeValeursTableau = tableau[i] + tableau[i+1];

}

return sommeValeursTableau;

}

Si quelqu'un peut me venir en aide ce serait gentil.

jeudi 29 aout 2013

Vanyali Messages : 1298

hum, oui, le problème c'est limite s'il saute pas aux yeux, revérifie la formule, tu verra il y a un truc pas normal. je te laisse chercher un peu quand même c'est mieux si tu trouve par toi même.

jeudi 29 aout 2013

Faandemanga Messages : 35

Mise à part la solution manuelle, je vois pas comment faire.

#include <stdio.h>
#include <stdlib.h>


int sommeTableau(int tableau []);



int main(int argc , char *argv [])
{
int tableau[4]={0,2,4,4};

printf("La somme des valeurs du tableau font %d\n.",sommeTableau(tableau));

return 0;

}

int sommeTableau(int tableau [])
{
int sommeTableau1;
int sommeTableau2;


int sommeValeursTableau;

sommeTableau1 = tableau[0] + tableau[1];
sommeTableau2 = tableau [2] + tableau [3];
sommeValeursTableau = sommeTableau1 + sommeTableau2;

return sommeValeursTableau;

}
jeudi 29 aout 2013

Mizur Messages : 6616

WHUUUUT ?! C'est quoi cette fonction ?! Alors attends, il y a plein de choses qui vont pas.

Le C

Le C c'est de la merde (c'est mon avis)

Les pointeurs

Est ce que tu sais ce qu'est un pointeur en C ? On ne manipule pas les tableaux en C comme on peut le faire en Java ou en python. C'est dans les premiers chapitres de tous les cours de C que tu peux trouver

La logique

Non, sérieusement :

sommeValeursTableau = tableau[i] + tableau[i+1];

C'est quoi cette façon te sommer les valeurs d'un tableau ? T'es en train de dire, pour toutes les valeurs de ta boucle :

SommeDuTableau = Valeur d'une case X par exemple + Valeur de la case X+1 ...

La pratique

Pratique un peu plus de bases, déjà apprends tout ce que j'ai dit plus haut. Parce qu'il y a beaucoup de petits trucs relou là, pas GRAVES, mais relou :

int tableau[4]={0,2,4,4};

Pas besoin de dire qu'il fait 4 de long si tu lui dis qu'il a 4 éléments dedans juste après le =

int sommeTableau(int tableau [],int tailleTableau)

Pas besoin de faire passer la taille du tableau en paramètre.

Dans n'importe quel autre langage cool, c'est totalement inutile et un truc genre tableau.size() te donne tout. En C, il va falloir un truc plus chiant, genre sizeof (tableau) / sizeof (tableau[0]);, mais ça t'évite d'avoir à te balader avec un tailleTableau partout.

int i;
[...]
for(i=0; i<tailleTableau; i++)

Autant faire directement :

for(int i=0; i<tailleTableau; i++)

tu gagnes des déclarations.

Corrigé

Ca c'est pas trop mal :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int sommeTableau(int tableau[], int tailTableau);
 
int main()
{
int S=0;
int tableau[4] = {1,3,2,6};
S=sommeTableau(tableau,4);
 
printf("la somme des elements du tableau est :%d\n\n",S);
getch();
return 0;
 
}
int sommeTableau(int tableau[], int tailTableau)
 
{
int i=0 , somme=0;
 
for (i=0 ; i<tailTableau ; i++)
 
{
somme=somme+tableau[i];
 
}
return somme;
}

http://www.siteduzero.com/forum/sujet/la-somme-des-elements-d-un-tableau-20900

LE C BORDEL

C'est VRAIMENT A CHIER.

dimanche 1 septembre 2013 (Dernière édition dimanche 1 septembre 2013)

Faandemanga Messages : 35

Non je suis justement en train de les étudier. D'après ce que j'ai compris c'est une variable qui contient l'adresse d'une autre variable ,ce qui permet de travailler directement avec les bonnes valeurs et régler un problème de perte d'information.

Hier j'ai réessayé de refaire la fonction:

#include <stdio.h>
#include <stdlib.h>


int sommeTableau(int tableau [],int tailleTableau);



int main(int argc , char *argv [])
{
int tableau[4]={0,2,4,4};

printf("La somme des valeurs du tableau font %d.\n",sommeTableau(&tableau,4));

return 0;

}

int sommeTableau(int tableau [],int tailleTableau)
{
int i;
int somme;

for(i=0; i<tailleTableau; i++)
{
somme = somme + tableau[i];

}

return somme;

}

Mais le problème, c'est que ca donne toujours un résultat incohérent (4200698).

Si le C c'est pas un bon langage, qu'est ce qu'il faudrait étudier?

En faite je voudrais créer un jeu vidéo 3D.

dimanche 1 septembre 2013

Mizur Messages : 6616

Les erreurs de tableaux en C se jouent toujours à des & ou * près, ce genre de truc...

D'après ce que j'ai compris c'est une variable qui contient l'adresse d'une autre variable ,ce qui permet de travailler directement avec les bonnes valeurs et régler un problème de perte d'information.

C'est à peu près ça. Mais rien à voir avec la perte d'information : ça permet juste de passer à une logique genre :

variableA = 20
variableB = variableA
variableB = 150
donc variableA a pour valeur 150 aussi

Alors que pour beaucoup d'autres langages on a :

variableA = 20
variableB = variableA
variableB = 150
donc variableA a pour valeur 20 et variableB a pour valeur 150

En javascript tu as aussi la différence entre == et ===

Si le C c'est pas un bon langage, qu'est ce qu'il faudrait étudier?

Techniquement, le C c'est ancestral, autant passer direct au C++ ou le C sharp, mais qui ne fonctionnent pas du tout de la même façon. Les puristes rageraient de lire ça, mais je suis désolé, je ne m'extasie pas devant 5h passées sur l'écran pour réaliser un Snake dégueulasse bicolore avec des vieux carrés. Le C est mort, vive le C.

En faite je voudrais créer un jeu vidéo 3D.

Houlala... J'ai pas envie d'être le pessimiste de service mais je pense que tu devrais laisser tomber...

  • Ce genre de truc ne se fait pas seul
  • Ce genre de truc requiert un énorme niveau en programmation et plusieurs langages
  • Plus personne ne code ses jeux 3D à la main comme ça
dimanche 1 septembre 2013 (Dernière édition dimanche 1 septembre 2013)

Lucas Messages : 830

Hiihi, tu m'avais manqué mon petit mizmiz

Mizur :

Houlala... J'ai pas envie d'être le pessimiste de service mais je pense que tu devrais laisser tomber...

Ce genre de truc ne se fait pas seul

Ce genre de truc requiert un énorme niveau en programmation et plusieurs langages

Plus personne ne code ses jeux 3D à la main comme ça

Par contre là, c'est faux. Au contraire, il est de plus en plus accessible de faire un jeu en 3d tout seul, ou à équipe réduite (rien qu'à mater les dernières compétitions ludum dare). Mais, et ça on le changera jamais, il faut de l'expérience. Et si tu coinces déjà sur des problèmes comme la somme des valeurs d'un tableau, bon courage. Fixe toi des projets plus simple, découvre des méthodes de développement plus poussées, cherche à trouver par toi-même pourquoi ça coince, teste (au lieu d'immédiatement poster sur un forum), et crois-moi, là tu pourras enfin commencer à faire ce que tu veux en prog.

Pour le C, baah… Mizur a raison, c'est un peu à la ramasse comme langage… Surtout de nos jours, où la POO est de rigueur sur tout projet un minimum sérieux (et je crois que le C connait pas, mébon).

dimanche 1 septembre 2013

Faandemanga Messages : 35

Et parmi tous ces langages:

2000 Joy

2000 D

2000 C#

2000 Lisaac

2000 Ferite

2001 Kylix

2001 Anubis

2003 S2

2003 Nemerle

2003 Factor

2003 Scala

2005 Seed7

2007 Ada 2005

2009 Mytryl

2009 Go

2010 Fancy

2010 Rust

2011 Dart

2011 Kotlin

2011 Ceylon

Lequel penser vous serait le plus adapté pour la création d'un jeu vidéo 3D?

Source:

http://fr.wikipedia.org/wiki/Chronologie_des_langages_de_programmation

dimanche 1 septembre 2013

Faandemanga Messages : 35

Finalement je crois que j'ai me mettre au C# (C sharp).

Et sinon Merci pour votre aide!

dimanche 1 septembre 2013

Mizur Messages : 6616
Lucas :

Au contraire, il est de plus en plus accessible de faire un jeu en 3d tout seul, ou à équipe réduite (rien qu'à mater les dernières compétitions ludum dare).

Ah non mais ok, et tu peux dire que Notch aussi il code tout seul et tout ça tout ça : mais tu fais pas Crysis à la main quoi ! Les Engines, ça sert à ça, à pas tout faire à la main. Finis les jeux codés avec les pieds pour consoles retro...!

Fixe toi des projets plus simple, découvre des méthodes de développement plus poussées, cherche à trouver par toi-même pourquoi ça coince, teste (au lieu d'immédiatement poster sur un forum), et crois-moi, là tu pourras enfin commencer à faire ce que tu veux en prog.

Ouais ! Mais là encore, c'est chaud chaud : et en autodidacte tu n'iras pas bien loin. Non, en fait pour que ça soit plus juste : tout seul tu n'iras pas bien loin. Si tu n'as personne (potes programmeurs, équipe, profs, etc.) pour partager, tu ne découvriras que la partie immergée de l'iceberg, même avec toutes les fonctions en C en tête...!

Surtout de nos jours, où la POO est de rigueur sur tout projet un minimum sérieux (et je crois que le C connait pas, mébon).

Ca dépend pour quoi faire. Pour un jeu, c'est CLAIR qu'il vaut mieux de l'objet, enfin ça sera plus facile et plus évolutif, à mon sens.

Tu vois, quand je vois le JS ou le python, je me dis que l'objet on s'en tape, et que c'est monstrueusement simple. Alors que le C, c'est vraiment de la merde, quelle putain d'idée de mettre des pointeurs. Pourquoi, merde ? Et c'est si restrictif. Le truc te pète dans les mains si t'oublies un prototype ou un point virgule. Le python, qui va tellement plus vite que le C, est tellement plus facile à utiliser...

Faandemanga :

Lequel penser vous serait le plus adapté pour la création d'un jeu vidéo 3D?

Heu, tu crois quand même pas qu'en prenant un langage inventé récemment ça sera mieux ?!

Et je t'ai déjà dit que l'idée du jeu vidéo 3D c'était pas vraiment une bonne idée... Et Lucas aussi.

dimanche 1 septembre 2013

Page suivante »