Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme losange en *

Sujet résolu
10 octobre 2016 à 22:56:45

Bonsoir

C'est un peu compliqué avec les 5 variables int numLigne, nbEtoile,nbBlanc,ligneMax,i,j;

On peut le faire plus simplement avec 3 variables.

  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2016 à 23:01:13

J'ai réussi à faire marcher mais alors pour optimiser je vois pas trop comment faire.
  • Partager sur Facebook
  • Partager sur Twitter
10 octobre 2016 à 23:27:05

salut,

pour optimiser tu peux enlever la déclaration des variables des boucles (i, j et numligne) et les déclarer juste dans les boucles (for(int i .....)),

autre chose, dans la deuxième étape tu as inversé la boucle (for (i= numLigne jusqu'à lignMax)), ça n'a aucun sens, tu peux la garder comme la première étape (mais n'oublie pas de ne pas doubler la ligne pivot)

-
Edité par manoranx 10 octobre 2016 à 23:30:16

  • Partager sur Facebook
  • Partager sur Twitter
11 octobre 2016 à 1:08:19

autre chose, dans la deuxième étape tu as inversé la boucle (for (i= numLigne jusqu'à lignMax)), ça n'a aucun sens, tu peux la garder comme la première étape (mais n'oublie pas de ne pas doubler la ligne pivot)

Pas d'accord. Qu'il boucle de 1 à N ou de N à 1, c'est pareil. Même, je trouve assez logique de procéder comme il a fait puisque la deuxième boucle consiste à dérouler la première à l'envers.

  • Partager sur Facebook
  • Partager sur Twitter
11 octobre 2016 à 2:03:30

mais la variable de boucle ici est juste utilisée pour passer les étapes (elle n'est pas utilisée dans le traitement), en tout cas c'est un bon code, il lui reste que l'optimisation et l'organisataion du code

-
Edité par manoranx 11 octobre 2016 à 2:04:29

  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2018 à 22:02:30

une autre solution :

#include<stdio.h>
main()
{
    int n,i,j,e;
    printf("Veuillez entrer le nombre de lignes\n");
    scanf("%d",&n);
    for(i=0;i<n;i++){
             for(e=n-i;e>0;e--) printf(" ");
        for(j=0;j<2*i+1;j++)
        {
            printf("*");
        }
        printf("\n");
    }
    for(i=n;i>=0;i--)
    {
                 for(e=(n-i)+1;e>1;e--) printf(" ");
                for(j=(2*i)+1;j>0;j--)
        {
            printf("*");
        }
        printf("\n");
    }
}

  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2018 à 13:17:06

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. Me contacter par MP si besoin.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL