Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1905 connectés 

  FORUM HardWare.fr
  Programmation
  C

  vérifierr stppp uune boucle d'étoile croissante

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Page Précédente
Auteur Sujet :

vérifierr stppp uune boucle d'étoile croissante

n°2053015
hajaritta
Posté le 30-01-2011 à 16:51:37  profilanswer
 

j'ai le faiiiit en croissante et pour décroissate j'ai trouve un problemees
#include <stdio.h>
  main()
   {
         int i=1,j,nb;
 
   printf("triangle\nnombre de ligne : " );
   scanf("%d",&nb);
   printf("\n" );  
   for(i=1;i<=nb;i++)  
       {
          for(j=1;j<=i;j++)  
          {
              printf("*" );            
                         }
              printf("\n" );    
            }
     
   
  system("PAUSE" );  
 }

mood
Publicité
Posté le 30-01-2011 à 16:51:37  profilanswer
 

n°2053035
esox_ch
Posté le 30-01-2011 à 18:47:34  profilanswer
 

T'arrives à t'exprimer en français stp? Parce que là ton tire veut rien dire et ton post non plus  


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053048
Profil sup​primé
Posté le 30-01-2011 à 19:19:58  answer
 

Salut, moi ça m'a amusé de le faire.
 

Code :
  1. #include <stdio.h>
  2.  main()
  3.   {
  4.         int i=1,j,nb;
  5.  
  6.   printf("triangle\nnombre de ligne : " );
  7.   scanf("%d",&nb);
  8.   printf("\n" );  
  9.   for(i=nb;i>=1;i--)  
  10.       {
  11.          for(j=i;j>=1;j--)  
  12.          {
  13.              printf("*" );            
  14.                         }
  15.              printf("\n" );    
  16.            }
  17.    
  18.  
  19.  system("PAUSE" );  
  20. }

n°2053061
esox_ch
Posté le 30-01-2011 à 19:50:35  profilanswer
 

T'aurais pu corriger le i=1 qui sert à rien :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053066
Profil sup​primé
Posté le 30-01-2011 à 20:09:21  answer
 

esox_ch a écrit :

T'aurais pu corriger le i=1 qui sert à rien :o


 
Oui, c'est que gcc ne m'a rien signalé d'anormal.  [:cupra]

n°2053068
esox_ch
Posté le 30-01-2011 à 20:14:43  profilanswer
 

Au fait le system("PAUSE" ) c'est portable :??: Je l'ai jamais utilisé sous Linux par contre je le vois toujours dans des trucs Windows


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053070
Profil sup​primé
Posté le 30-01-2011 à 20:20:01  answer
 

esox_ch a écrit :

Au fait le system("PAUSE" ) c'est portable :??: Je l'ai jamais utilisé sous Linux par contre je le vois toujours dans des trucs Windows


 
Ah ben non, sh dit  sh: PAUSE: command not found.

n°2053071
ptitchep
Posté le 30-01-2011 à 20:21:36  profilanswer
 

esox_ch a écrit :

Au fait le system("PAUSE" ) c'est portable :??: Je l'ai jamais utilisé sous Linux par contre je le vois toujours dans des trucs Windows


Non, vu que la commande PAUSE n'existe pas (ou faut la faire).
 [:benou_grilled]


Message édité par ptitchep le 30-01-2011 à 20:22:28

---------------
deluser --remove-home ptitchep
n°2053072
ptitchep
Posté le 30-01-2011 à 20:25:09  profilanswer
 

hajaritta a écrit :

j'ai le faiiiit en croissante et pour décroissate j'ai trouve un problemees
#include <stdio.h>
  main()
   {
         int i=1,j,nb;
 
   printf("triangle\nnombre de ligne : " );
   scanf("%d",&nb);
   printf("\n" );  
   for(i=1;i<=nb;i++)  
       {
          for(j=1;j<=i;j++)  
          {
              printf("*" );            
                         }
              printf("\n" );    
            }
     
   
  system("PAUSE" );  
 }


 
Comment on peut poster un truc écrit dans je ne sais quelle langue, sans bonjour ni merde deux fois de suite et penser que des gens vont répondre?????


---------------
deluser --remove-home ptitchep
n°2053079
hajaritta
Posté le 30-01-2011 à 21:02:57  profilanswer
 

hajaritta a écrit :

j'ai le faiiiit en croissante et pour décroissate j'ai trouve un problemees
#include <stdio.h>
  main()
   {
         int i=1,j,nb;
 
   printf("triangle\nnombre de ligne : " );
   scanf("%d",&nb);
   printf("\n" );  
   for(i=1;i<=nb;i++)  
       {
          for(j=1;j<=i;j++)  
          {
              printf("*" );            
                         }
              printf("\n" );    
            }
     
   
  system("PAUSE" );  
 }


 
 
 
je veux la boucle en décroissante comme ça:
 **********  
   *********
     ********
       *******
         ******
           *****
             ****
               ***
                 **
                  *

mood
Publicité
Posté le 30-01-2011 à 21:02:57  profilanswer
 

n°2053083
ptitchep
Posté le 30-01-2011 à 21:12:52  profilanswer
 

hajaritta a écrit :


je veux la boucle en décroissante comme ça


Je veux 10 millions de dollars comme ça:
 [:atom1ck]


---------------
deluser --remove-home ptitchep
n°2053085
gilou
Modérateur
Modzilla
Posté le 30-01-2011 à 21:15:22  profilanswer
 

Moi ça m'a amusé de la faire en C++
Une des solutions possibles (on peut aussi utiliser iomanip et jouer sur le fill character et la width de cout par exemple)

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5.   int largeur, largeur_max = 10;
  6.   // sens décroissant
  7.   largeur = largeur_max;
  8.   do { cout << string(largeur, '*') << endl ; } while (--largeur);
  9.   //saut d'une ligne pour séparer les deux
  10.   cout << endl;
  11.   // sens croissant
  12.   largeur = largeur_max;
  13.   do { cout << string(largeur_max+1-largeur, '*') << endl; } while (--largeur);
  14.   // pause avant de finir
  15.   char c = cin.get();
  16.   return 0;
  17. }


hajaritta a écrit :

je veux la boucle en décroissante comme ça:
 **********
   *********
     ********
       *******
         ******
           *****
             ****
               ***
                 **
                  *

C'est une simple modification de la précédente:

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5.   int largeur, largeur_max = 10;
  6.   // sens décroissant version "je veux la boucle en décroissante comme ça"
  7.   largeur = largeur_max;
  8.   do { cout << string(largeur_max - largeur, ' ') << string(largeur, '*') << endl ; } while (--largeur);
  9.   //saut d'une ligne pour séparer les deux
  10.   cout << endl;
  11.   // sens croissant
  12.   largeur = largeur_max;
  13.   do { cout << string(largeur_max+1-largeur, '*') << endl; } while (--largeur);
  14.   // pause avant de finir
  15.   char c = cin.get();
  16.   return 0;
  17. }

Bon, j'aurais pu le faire en C, mais c'est pas dans l'esprit du forum de donner des solutions toutes faites prêtes à l'emploi.
A+,

Message cité 2 fois
Message édité par gilou le 30-01-2011 à 21:23:16

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053090
ptitchep
Posté le 30-01-2011 à 21:24:36  profilanswer
 

gilou a écrit :

Moi ça m'a amusé de la faire en C++
Une des solutions possibles (on peut aussi utiliser iomanip et jouer sur le fill character et la width de cout par exemple)

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5.   int largeur, largeur_max = 10;
  6.   // sens décroissant
  7.   largeur = largeur_max;
  8.   do { cout << string(largeur, '*') << endl ; } while (--largeur);
  9.   //saut d'une ligne pour séparer les deux
  10.   cout << endl;
  11.   // sens croissant
  12.   largeur = largeur_max;
  13.   do { cout << string(largeur_max+1-largeur, '*') << endl; } while (--largeur);
  14.   // pause avant de finir
  15.   char c = cin.get();
  16.   return 0;
  17. }




 

gilou a écrit :

C'est une simple modification de la précédente:

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main () {
  5.   int largeur, largeur_max = 10;
  6.   // sens décroissant
  7.   largeur = largeur_max;
  8.   do { cout << string(largeur_max - largeur, ' ') << string(largeur, '*') << endl ; } while (--largeur);
  9.   //saut d'une ligne pour séparer les deux
  10.   cout << endl;
  11.   // sens croissant
  12.   largeur = largeur_max;
  13.   do { cout << string(largeur_max+1-largeur, '*') << endl; } while (--largeur);
  14.   // pause avant de finir
  15.   char c = cin.get();
  16.   return 0;
  17. }


A+,


C'est joli j'aime bien :)
Mais le triangle n'est pas dans le bon sens, il faut mettre n espaces et largeur - n * (ou un truc du genre). ;)
Marrant, fin de l'édit pile entre le moment ou je clique sur répondre et l'affichage de ma page du coup j'ai la nouvelle quote et ça m'a tout cassé  :lol:


---------------
deluser --remove-home ptitchep
n°2053091
gilou
Modérateur
Modzilla
Posté le 30-01-2011 à 21:32:44  profilanswer
 

Ben oui, le temps que je poste, il y avait eu du rajout au topic :)
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053095
ptitchep
Posté le 30-01-2011 à 21:58:06  profilanswer
 

gilou a écrit :

Ben oui, le temps que je poste, il y avait eu du rajout au topic :)
A+,


En tout cas tu as donné la solution, plus qu'à remplacer cout par printf et string (n, '*') par... une boucle? Il existe une fonction dans string.h pour faire ça?


---------------
deluser --remove-home ptitchep
n°2053098
gilou
Modérateur
Modzilla
Posté le 30-01-2011 à 22:23:48  profilanswer
 

Faut passer par un buffer IMHO.
Voici un exemple (volontairement obfuscated afin que ça saute aux yeux d'un prof qui relirait ceci) de solution:
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main()
  5. {
  6.   int largeur, largeur_max = 10;
  7.   char *buffer = calloc(largeur_max+1, 1);
  8.   memset(buffer, '*', largeur_max);
  9.   printf("%s\n", buffer);
  10.   largeur = largeur_max - 1;
  11.   do {
  12.     *(buffer + largeur_max - 1 - largeur--) = ' ';
  13.     printf("%s\n",buffer);
  14.   } while (largeur);
  15.   free(buffer);
  16.   getchar();
  17.   return EXIT_SUCCESS;
  18. }

:whistle:  
A+,


Message édité par gilou le 30-01-2011 à 22:28:09

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053114
ptitchep
Posté le 31-01-2011 à 01:07:04  profilanswer
 

memset...
évidemment... quel boulet...  [:jsuistropcon]  
merci
 
edit: de toute façon tu peux donner la solution à la limite...Il/elle verra bien au partiel ce que ça donne de ne pas chercher par soi même  [:montgomery burns:1]
 
edit2:

Citation :

L’OFPPT, premier opérateur public marocain en formation professionnelle, présente une offre couvrant tout le territoire à travers les principaux secteurs de l’économie nationale.

Ça peut expliquer les fautes mais ça n'empêche pas de dire bonjour, merci et de lire la charte...


Message édité par ptitchep le 31-01-2011 à 01:18:31

---------------
deluser --remove-home ptitchep
n°2053116
gatsu35
Blablaté par Harko
Posté le 31-01-2011 à 01:34:28  profilanswer
 

Hey les gars, ce boulet s'est déjà ramené cet aprem :o
http://forum.hardware.fr/hfr/Progr [...] 2297_1.htm


---------------
Blablaté par Harko
n°2053260
smaragdus
whores, drugs & J.S. Bach
Posté le 31-01-2011 à 16:28:47  profilanswer
 

on peut poster une solution à partir du moment où c'est pas du C ? [:cupra]

n°2053278
gilou
Modérateur
Modzilla
Posté le 31-01-2011 à 17:37:13  profilanswer
 

Du moment que ça lui permet pas directement de faire son exo...
Tiens, je le fais en perl:

Code :
  1. #!/usr/local/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my $largeur_max = 10;
  6. # croissant
  7. map {print ' 'x$_, "\n"}(1..$largeur_max);
  8. # decroissant
  9. map {print ' 'x$_, '*'x($largeur_max - $_), "\n"}(0..$largeur_max-1);

:)
A+,


Message édité par gilou le 01-02-2011 à 14:40:38

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053311
esox_ch
Posté le 31-01-2011 à 22:53:16  profilanswer
 

Code :
  1. #!/bin/ruby
  2. #Croissant
  3. (gets.to_i+1).times {|star| puts "*"*star}
  4.  
  5. #décroissant
  6. gets.to_i.downto(1) {|i| puts "*"*i}


 :o
 
Edit: Si qqn le poste en ASM j'enlève le haut je le poste en Java :bounce:
Re-edit parce que la solution de mr simon ci-dessous m'a rappelé que je pouvais le rendre plus compact
Re-Re edit pour rajouter le triangle dans l'autre sens

Message cité 1 fois
Message édité par esox_ch le 01-02-2011 à 08:06:41

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053313
mr simon
Posté le 31-01-2011 à 23:20:37  profilanswer
 

Code :
  1. #!/usr/bin/python
  2. print "\n".join([('*'*i).rjust(10) for i in xrange(10,0,-1)])

Message cité 1 fois
Message édité par mr simon le 31-01-2011 à 23:23:21
n°2053320
ptitchep
Posté le 01-02-2011 à 01:52:41  profilanswer
 

esox_ch a écrit :

Code :
  1. #!/bin/ruby
  2. (gets.to_i+1).times {|star| puts "*"*star}


 :o
 
Edit: Si qqn le poste en ASM j'enlève le haut je le poste en Java :bounce:
Re-edit parce que la solution de mr simon ci-dessous m'a rappelé que je pouvais le rendre plus compact


Ce n'est sûrement pas la meilleure façon mais vu l'heure je n'ai pas le temps d'apprendre l'assembleur. Et comme j'ai hâte de te voir enlever le haut le poster en Java:

Code :
  1. section .data
  2.  
  3.    chaine: times 10 db 0x2a
  4.    retour_chariot: db 0xa
  5.        
  6. section .text
  7.  
  8.     global _start
  9.  
  10.     _start:
  11.                
  12.        mov rcx,0
  13.  
  14. boucle:
  15.        mov rax, 0
  16. boucle2:
  17.        cmp rax,rcx
  18.        je fin
  19.        mov byte [chaine + rax], 32 ;32=espace
  20.        inc rax
  21.        jmp boucle2
  22.        
  23. fin:
  24.                
  25.        ;sys_write
  26.        push rcx
  27.        mov rax, 4
  28.        mov rbx, 2
  29.        mov rcx, chaine
  30.        mov rdx, 11
  31.        int 80h
  32.        
  33.        pop rcx
  34.        inc rcx
  35.        cmp rcx, 10
  36.        jb boucle
  37.        
  38.  
  39.        ; Exit
  40.        mov rax, 1
  41.        mov rbx, 0
  42.        int 80h


 
Edit: c'est moi ou les balises code ont du mal avec l'assembleur?

Message cité 1 fois
Message édité par gilou le 01-02-2011 à 14:36:27

---------------
deluser --remove-home ptitchep
n°2053323
Profil sup​primé
Posté le 01-02-2011 à 06:07:22  answer
 

Avec Ada.
 

Code :
  1. ----------------------------------------
  2. -- Star déssine un triangle d'étoile à
  3. -- la base en haut.
  4. ----------------------------------------
  5.  
  6. with Ada.Text_Io, Ada.Integer_Text_Io, Ada.Strings.Fixed;
  7. use Ada, Ada.Strings;
  8.  
  9. procedure Star is
  10.  
  11.   buffer : access String;
  12.   -- buffer, alloué une seule fois à la saisie de la dimension.
  13.  
  14.   Dimension : Natural := 0;
  15.   -- Dmention du triangle.
  16.  
  17. begin
  18.  
  19.   -- Saisie de la dimension du triangle.
  20.   loop
  21.      Saisie :
  22.      begin
  23.         Text_Io.Put("Saisissez la dimenssion de 1 à 80 : " );
  24.         Integer_Text_Io.Get(Dimension);
  25.         if Dimension > 0 and Dimension <=80 then
  26.            exit;
  27.         else
  28.            raise Constraint_Error;
  29.         end if;
  30.      exception
  31.         when Constraint_Error =>
  32.            Text_Io.Put_Line("Erreur de saisie." );
  33.      end Saisie;
  34.   end loop;
  35.  
  36.   -- initialisation du buffer.
  37.   Buffer := new String(1..Dimension);
  38.  
  39.   -- Affichage du triangle
  40.   for Columns in reverse 1..Dimension loop
  41.      Fixed.Move(Fixed."*"(Columns, '*'), Buffer.all, Error, Right, space);
  42.      -- On place le nombre d'étoiles voulu dans le buffer justifié à droite.      
  43.  
  44.      Text_Io.Put_Line(Buffer.all);
  45.      -- On affiche la ligne et on saute à la suivante.
  46.   end loop;
  47.   Text_Io.Get_Immediate(Buffer(1));
  48. end star;

n°2053334
esox_ch
Posté le 01-02-2011 à 09:41:56  profilanswer
 

Comme promis (si qqn a plus propre, je suis preneur)

 


Code :
  1. import java.util.Scanner;
  2.  
  3. class Stars {
  4.     public static void main(String args[]){
  5.         int max ;
  6.         Scanner in= new Scanner(System.in);;
  7.         
  8.         System.out.println("Entrer le nombre d'étoiles" );
  9.         max = Integer.parseInt(in.nextLine());
  10.         System.out.println("Descendant (entrer D) ou ascendant (entrer A)?" );
  11.     
  12.         if (in.nextLine().equals("A" )) {
  13.             for (int i=1; i<=max; i++) {
  14.                 printStars(i);
  15.             }    
  16.         }else {
  17.             for (int i=max; i>0; --i) {
  18.                 printStars(i);
  19.             }    
  20.         }
  21.  
  22.         in.close();
  23.     }
  24.     
  25.     private static void printStars(int number){
  26.         for(int j=0; j<number; j++){
  27.             System.out.print("*" );
  28.         }
  29.         System.out.println("" );
  30.     }
  31. }
 

On va transformer ce topic en 99 bottles of beer :lol:


Message édité par esox_ch le 01-02-2011 à 09:47:05

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053402
ptitchep
Posté le 01-02-2011 à 13:21:22  profilanswer
 

Code :
  1. #!/bin/bash
  2. echo longueur?
  3. read longueur
  4. for (( i=0 ; $i<$longueur ; i=$i+1 ))
  5. do
  6.     for (( j=0 ; $j<$longueur ; j=$j+1 ))
  7.     do
  8.         if [ $j -lt $i ]
  9.         then
  10.             echo -n ' '
  11.         else
  12.             echo -n '*'
  13.         fi
  14.     done
  15.     echo
  16. done
 

Il doit y avoir moyen de remplacer la deuxième boucle par un sed mais pour l'instant je me bats avec les expressions régulières :-(


Message édité par ptitchep le 01-02-2011 à 13:47:06

---------------
deluser --remove-home ptitchep
n°2053415
smaragdus
whores, drugs & J.S. Bach
Posté le 01-02-2011 à 14:06:10  profilanswer
 

C'est moi ou personne ne l'a fait avec un décalage de bit ?
(la version ASM était la bonne occaz pour le faire, harko si tu nous lis [:cupra] )
 
La version PHP (en obfuscate :D )

Code :
  1. $largeur = 10;
  2. for($k = (2 << ($largeur-1)) - 1; $k > 0; $k = $k >> 1) echo str_replace('1','*',sprintf("%{$largeur}b\n", $k));


Message édité par smaragdus le 01-02-2011 à 14:09:16
n°2053419
esox_ch
Posté le 01-02-2011 à 14:17:36  profilanswer
 

Mdr le str_replace :lol:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053423
ptitchep
Posté le 01-02-2011 à 14:29:45  profilanswer
 

smaragdus a écrit :

(la version ASM était la bonne occaz pour le faire, harko si tu nous lis [:cupra] )


S'il lisait, il me serait déjà tombé dessus pour la version asm :-s


Message édité par ptitchep le 01-02-2011 à 14:30:09

---------------
deluser --remove-home ptitchep
n°2053426
gilou
Modérateur
Modzilla
Posté le 01-02-2011 à 14:37:08  profilanswer
 

ptitchep a écrit :

Edit: c'est moi ou les balises code ont du mal avec l'assembleur?

il fallait tagger avec code=asm
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053434
ptitchep
Posté le 01-02-2011 à 14:53:22  profilanswer
 

gilou a écrit :

il fallait tagger avec code=asm
A+,


Merci.


---------------
deluser --remove-home ptitchep
n°2053450
SquiZZ
Posté le 01-02-2011 à 15:43:40  profilanswer
 

gilou a écrit :

Moi ça m'a amusé de la faire en C++
Une des solutions possibles (on peut aussi utiliser iomanip et jouer sur le fill character et la width de cout par exemple)


J'ai rajouté un peu de template à ta suggestion   :sol:  

Code :
  1. #include <iostream>
  2. #include <iomanip>
  3. template<int n, int w=n>
  4. struct Star
  5. {
  6.     Star()
  7.     {
  8.         std::cout << std::setfill(' ') << std::setw(w-n) << "" << std::setfill('*') << std::setw(n) << '\n';
  9.         Star<n-1, w> foo;
  10.     }
  11. };
  12. template<int w>
  13. struct Star<0, w>
  14. {
  15.     Star()
  16.     {
  17.     }
  18. };
  19. int main()
  20. {
  21.     Star<10> toto;
  22.     return 0;
  23. }


Message édité par SquiZZ le 01-02-2011 à 15:48:51
n°2053458
gilou
Modérateur
Modzilla
Posté le 01-02-2011 à 16:23:29  profilanswer
 

Excellent! Manque plus qu'un itérateur! ;)
A+,

Message cité 1 fois
Message édité par gilou le 01-02-2011 à 16:23:51

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053468
Un Program​meur
Posté le 01-02-2011 à 17:24:09  profilanswer
 

gilou a écrit :

Excellent! Manque plus qu'un itérateur! ;)
A+,


 
A ton service:
 

Code :
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4. #include <iterator>
  5. struct Etoiles: public std::iterator<std::forward_iterator_tag, std::string>
  6. {
  7.     Etoiles(std::string const& s) : s_(s) {}
  8.     Etoiles& operator++() { s_[s_.find('*')] = ' '; return *this; }
  9.     std::string operator*() const { return s_; }
  10.     friend bool operator!=(Etoiles const& l, Etoiles const& r)
  11.         { return l.s_ != r.s_; }
  12. private:
  13.     std::string s_;
  14. };
  15. int main()
  16. {
  17.     std::copy(Etoiles("**********" ), Etoiles("          " ),
  18.               std::ostream_iterator<std::string>(std::cout, "\n" ));
  19.     return 0;
  20. }


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2053471
SquiZZ
Posté le 01-02-2011 à 17:35:29  profilanswer
 

[:prosterne]

n°2053475
ptitchep
Posté le 01-02-2011 à 17:45:32  profilanswer
 

[:prosterne]


---------------
deluser --remove-home ptitchep
n°2053486
Un Program​meur
Posté le 01-02-2011 à 18:44:34  profilanswer
 

Un peu plus robuste et plus utile.
 

Code :
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <string>
  4. #include <iterator>
  5. struct Mutate: public std::iterator<std::forward_iterator_tag, std::string>
  6. {
  7.     Mutate() : end_(true) {}
  8.     Mutate(std::string const& s,
  9.             std::string const& d) : s_(s), d_(d), end_(false) {
  10.         d_.resize(std::max(s_.size(), d_.size()), ' ');
  11.         s_.resize(std::max(s_.size(), d_.size()), ' ');
  12.     }
  13.     Mutate& operator++() {
  14.         std::pair<std::string::iterator, std::string::iterator>
  15.             i = std::mismatch(s_.begin(), s_.end(), d_.begin());
  16.         *i.first = *i.second;
  17.         return *this;
  18.     }
  19.     std::string operator*() const { return s_; }
  20.     friend bool operator!=(Mutate const& l, Mutate const& r)
  21.     { return !(l.s_ == r.s_
  22.                || (l.end_ && r.s_ == r.d_)
  23.                || (r.end_ && l.s_ == l.d_)); }
  24. private:
  25.     std::string s_;
  26.     std::string d_;
  27.     bool end_;
  28. };
  29. int main()
  30. {
  31.     std::copy(Mutate("", "**********" ), Mutate(),
  32.               std::ostream_iterator<std::string>(std::cout, "\n" ));
  33.     std::copy(Mutate("**********", "" ), Mutate(),
  34.               std::ostream_iterator<std::string>(std::cout, "\n" ));
  35.     return 0;
  36. }


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2053490
gilou
Modérateur
Modzilla
Posté le 01-02-2011 à 19:23:44  profilanswer
 

[:roi]  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2053500
esox_ch
Posté le 01-02-2011 à 20:29:17  profilanswer
 

C'est en regardant des codes comme ça, et en n'y comprenant absolument rien qu'on se rend compte que les cours de progs qu'on a suivi sont vraiment inutiles :lol:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°2053503
Profil sup​primé
Posté le 01-02-2011 à 20:39:41  answer
 


 
 
Je préfaire cent fois mon code  :D  
Je connais pas C++  aussi.
Et justement, mon code est plus lisible.
 
La lisibilité, c'est pas rien pour du code.
La fonctionnalité non plus remarque...


Message édité par Profil supprimé le 01-02-2011 à 20:39:52
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  vérifierr stppp uune boucle d'étoile croissante

 

Sujets relatifs
boucle for pythonProbleme : Tableau perd ses valeurs une fois sortie de la boucle
Besoin d'aide sur une boucle "if else if else"Batch : Compteur dans une boucle for
Scan d'un dossier image, lecture des images une par une en boucleGreasemonkey Boucle executée une seule fois
Quitter prématurément une boucle for-each ?Boucle for
un objet de formulaire en boucle [résolu]Lenteur d'exécution (grande boucle accédant à une dll)
Plus de sujets relatifs à : vérifierr stppp uune boucle d'étoile croissante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR