-2
votes

Multiplier la chaîne

Je veux faire une ligne d'étoiles, chaque ligne contenant plus que le précédent. Le point de mon problème est que je ne savais pas comment multiplier les chaînes dans C.

#include<stdio.h>
#include<conio.h>
main()
{    
     int max = 10
     for (int i = 1; i <= max; ++i){
         printf("*"*(2 * i - 1);
     }

}


2 commentaires

Vous pouvez utiliser deux boucles imbriquées. La boucle extérieure pour chaque ligne, la boucle interne pour les étoiles sur chaque ligne.


D'accord, essayons donc une autre approche. Quelle langue savez-vous que fait supporte des chaînes de multiplication? Qu'est-ce que cela signifie même pour multiplier une chaîne?


3 Réponses :


2
votes

Vous pouvez simplement répéter l'impression du nombre de chaînes souhaité. XXX

Je respecte le code d'origine, de sorte que certains points qui ne sont pas bons (sans signification incluant non standard conio. H et non standard de Main () (au lieu de int Main (VOID) )) reste.


0 commentaires

2
votes

La sémantique du langage ne supporte pas ce que vous essayez de faire. En C une chaîne n'est pas un type de première classe dans tout cas - il s'agit simplement d'une matrice de char code>, de sorte que toutes les manipulations de chaîne sont effectuées via des fonctions; Vous ne pouvez pas effectuer des opérations directes sur eux; Et même si vous pouviez, je le doute Multiplier em> serait l'un d'entre eux - il dispose d'un cas d'utilisation très limité facilement implémenté à l'aide d'opérations plus simples.

Dans ce cas, vous n'avez pas en fait besoin de réplication de chaîne répétée (ou de multiplier comme vous le faites référence) car vous émettez directement la chaîne directement, vous n'avez pas besoin de stocker la chaîne et les problèmes d'allocation de mémoire associés impliquant. Plutôt, vous avez simplement besoin de sortie de chaîne répétée. P>

#include <stdio.h> 

void printRepeatString( const char* str, int n )
{
    for( int i = 0; i < n; n++ )
    {
        printf( "%s", str ) ;
    }
}

int main( void )
{    
     const int max = 10
     for (int i = 1; i <= max; i++ )
     {
         printRepeatString( "*", (2 * i) - 1 ) ;
         putchar( '\n' ) ;
     }

    return 0 ;
}


0 commentaires

0
votes

Une alternative à "multiplier" une chaîne de '*' code> est de créer le plus long, puis d'imprimer une partie tronquée de celle-ci.

Utilisez "%. * S" , n, s code> pour imprimer un tableau de caractères s code> jusqu'à n code> caractères. p>

*
***
*****
*******
*********
***********
*************
***************
*****************
*******************


0 commentaires