Impression étoile ('*') diamant en C avec des boucles imbriquées?

Je veux être en mesure d'imprimer un diamant comme cela lorsque l'utilisateur entre 5 pour le diamant. Mais aussi de travail pour toute valeur qui est impair et supérieur à 0.

Impression étoile ('*') diamant en C avec des boucles imbriquées?

J'ai un code qui fonctionne pour faire un diamant pour l'utilisateur d'entrée de 5, mais ne fonctionnera pas pour tout nombre impair entrées..

 half = (size/2)+1;

 for (a=1; a <=  half ; a++) /*top to mid row of diamond*/
   {
     for (b=a; b<half;b++)
       {
     printf(" ");
       }
     for (c= size -2* a; c <=  half; c++)
       {
     printf("*");
       } 
      printf("\n");
   }
 for (a = 1; a < half;a++)
   {
     for (b = a; b>0;b--)
       {
     printf(" ");
       }
     for (c = size-2*a; c >0 ;c--)
       {
     printf("*");
       }
     printf("\n");
   }


  return 0;
}

Toute aide serait grandement appréciée.Merci.

Mike

  • Et votre code jusqu'à présent?
  • Est-ce devoirs?
  • vous n'avez pas besoin de boucles imbriquées, comment environ deux boucles, l'une qui s'incrémente et un qui diminue, essayer et d'en faire rapport avec votre tentative.
  • Google est plein de résultats et des exemples de ce ("C impression de diamant"), ce que vous avez essayé jusqu'à présent?
  • Essayez de demander à l'-vous les questions suivantes: Combien d'espaces et puis astérisques vous avez besoin d'imprimer pour la première ligne? Combien d'espaces et les astérisques aurez-vous besoin de chaque ligne, en comparant avec la ligne précédente? À un certain point, vous aurez besoin d'imprimer plus d'espace et moins d'astérisques: quand?
  • Ré-étiqueté comme devoirs. Ne pas essayer d'être offensive, mais c'est très simple si vous vous asseyez et pensez à ce sujet pendant 5 minutes.
  • c'est plutôt dangereux hypothèse. Je suis sûr que la plupart pathologie infirmières envisager le prélèvement de sang pour être "simple", mais ce n'est pas quelque chose que je voudrais essayer. Les gens d'ici ont des niveaux très différents de compétences dans divers domaines.
  • Il y a une tournure intéressante sur cette question dans un Deitel C++ livre (mais la même chose peut être fait en C). Une fois que vous êtes en mesure d'imprimer de manière arbitraire de la taille des diamants, essayez de faire la même chose, mais avec une seule boucle. Cet exercice m'a fait me sentir vraiment bien une fois que j'ai travaillé sur la façon de le faire et ajusté le tout correctement.
  • à un certain point, cela devient contre-productif. Alors qu'il est souvent intelligent pour être en mesure d'analyser des trucs comme ça (et je dois admettre que j'ai senti qu'avant), c'est une limitation arbitraire qui vous avez peu de chances de rencontrer dans le monde réel. Semblable à la permutation des variables sans une variable temporaire (xor truc), de l'incapacité d'utilisation temporaire est peu probable, comme c'est l'incapacité d'avoir un programme où une seule boucle est autorisé 🙂
  • le livre juste compris que comme un bonus, et mon professeur a fait trop quand nous sommes arrivés au. C'était mon plus bien méritée bonus de marque, je n'ai jamais travaillé pour. Il vous fait vraiment penser à une façon complètement différente, ce qui est probablement le principal point d'elle. J'ai passé combien de temps assis là, sûr à 100% que j'avais besoin de deux boucles, jusqu'à ce que finalement il est venu à moi.
  • J'ai fait cette question, à l'âge de 8 ans à partir d'un Steve Prata livre; C++ Primer et en Plus, si je me souviens bien, et c'était gérable alors. Fourni les boucles et les printf sont couverts dans les 3 premiers chapitres du texte de cette personne (ce qui est le cas dans 90% des "traditionnels" C/C++ livres), cette personne a tout le nécessaire à portée de la main pour résoudre cette question. Je maintiens ma déclaration d'origine et d'avoir re-marqués ce. J'ai posé cette question à 12 ans d'apprentissage de base en programmation Flash, et ils ont compris, en tant que groupe en 10 minutes.

InformationsquelleAutor Michael_19 | 2012-05-04