tableau et la boucle à partir d'une question de débutant!

  • fish
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Mar 29, 2003
  • Messages: 5
  • Status: Offline

Message Mars 29th, 2003, 6:15 am

Salut là-bas,

quelqu'un pourrait m'aider s'il vous plaît, Ive juste regardé avec C et je veux que la fonction accepte jusqu'à 50 caractères, mais quand j'ai fini, puis appuyer sur Retour pour modifier la casse d'entre eux.

Elle continue à accepter les caractères après avoir frappé retour jusqu'à tant que le tableau de 50 est terminé.

Mon prochain problème, c'est qu'il semble faire une boucle à l'extérieur de la boucle et répéter l'opération à partir de la déclaration printf initiale.

toute suggestion serait génial.
Code: [ Select ]
MAX_LINE_LENGTH = 50



int inverseCharacters()
{

    char ch[MAX_LINE_LENGTH];
    int i= 0;

    printf("%s", "\nEnter a line of text combining upper and lower case: \n");
    //scanf("%s", &ch);


    while (i <= MAX_LINE_LENGTH)
    {
        ch[i]= getchar();

        if(islower(ch[i]))
        {
            ch[i] = toupper(ch[i]);
            putchar(ch[i]);

        }
        else
        {
            ch[i] = tolower(ch[i]);
            putchar(ch[i]);
        }
        i++;
    }

    return 0;
}
  1. MAX_LINE_LENGTH = 50
  2. int inverseCharacters()
  3. {
  4.     char ch[MAX_LINE_LENGTH];
  5.     int i= 0;
  6.     printf("%s", "\nEnter a line of text combining upper and lower case: \n");
  7.     //scanf("%s", &ch);
  8.     while (i <= MAX_LINE_LENGTH)
  9.     {
  10.         ch[i]= getchar();
  11.         if(islower(ch[i]))
  12.         {
  13.             ch[i] = toupper(ch[i]);
  14.             putchar(ch[i]);
  15.         }
  16.         else
  17.         {
  18.             ch[i] = tolower(ch[i]);
  19.             putchar(ch[i]);
  20.         }
  21.         i++;
  22.     }
  23.     return 0;
  24. }
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mars 29th, 2003, 6:15 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 29th, 2003, 6:42 am

Eh bien, je l'aborde un peu différemment si l'on voulait permettre à la personne pour saisir des caractères jusqu'à ce qu'ils atteignent entrer. Je ferais quelque chose comme ceci:

Code: [ Select ]
MAX_LINE_LENGTH = 50

int main (int argc, char * argv[])
{
  char ch[MAX_LINE_LENGTH];

  //loop thrugh argv array which holds all characters on line
  for(int i=0; i < argc && i < MAX_LINE_LENGTH; i++) {
   ch[i] = argv[i];

   if(islower(ch[i])) {
     ch[i] = toupper(ch[i]);
     putchar(ch[i]);
   }
   else
   {
     ch[i] = tolower(ch[i]);
     putchar(ch[i]);
   }
  }

  return 0;
}
  1. MAX_LINE_LENGTH = 50
  2. int main (int argc, char * argv[])
  3. {
  4.   char ch[MAX_LINE_LENGTH];
  5.   //loop thrugh argv array which holds all characters on line
  6.   for(int i=0; i < argc && i < MAX_LINE_LENGTH; i++) {
  7.    ch[i] = argv[i];
  8.    if(islower(ch[i])) {
  9.      ch[i] = toupper(ch[i]);
  10.      putchar(ch[i]);
  11.    }
  12.    else
  13.    {
  14.      ch[i] = tolower(ch[i]);
  15.      putchar(ch[i]);
  16.    }
  17.   }
  18.   return 0;
  19. }


Argv détient tous vos personnages de votre ligne et magasins argc le nombre de caractères qui a été inscrit sur la ligne. Si vous avez des questions sur quelque chose n'oubliez pas de demander. J'ai juste genre de pris votre code réorganisé dans celui-ci.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 29th, 2003, 6:44 am

Par ailleurs, la façon dont vous faisiez cela, c'est que vous étiez en boucle par le biais d'une boucle de 50 fois plus que l'appelle

ch [i] = getchar ();

et c'est exactement pourquoi vous avez continuer à frapper jusqu'à ce que le retour de 50 caractères a été saisi.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 29th, 2003, 6:56 am

Aussi je viens de remarquer que vous êtes désireux d'utiliser ce peut-être comme une fonction. Donc, si cela est vrai, alors le code que j'ai écrit pour vous devrait être modifié quelques-unes, et il serait genre de dépendre de la façon dont votre programme fonctionne. Vous pourriez être en mesure de passer simplement la argc et argv de la fonction à partir du bloc principal pour lequel u peut travailler.

Si vous souhaitez utiliser le getchar () énoncé comme vous faisiez, vous auriez besoin de changer la boucle while some. Ce que tu ferais, c'est lui donner l'aspect du caractère de retour et ensuite sauter hors de la boucle une fois qu'il la trouve. Vous pourriez le faire je pense en allant

Code: [ Select ]
while (i <= MAX_LINE_LENGTH && (ch[i]= getchar()) != '') {
....
}
  1. while (i <= MAX_LINE_LENGTH && (ch[i]= getchar()) != '') {
  2. ....
  3. }
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 29th, 2003, 6:59 am

fish a écrit:
Mon autre problème est qu'il semble à l'extérieur de la boucle la boucle et répéter l'ensemble du processus à partir de la première déclaration printf.


En ce qui concerne ce problème, à première vue, je ne vois pas tout ce qui pourrait provoquer cela. Etes-vous sûr que cette boucle infinie ne sont pas causés par l'endroit où vous appelez la fonction? Probablement quelque part dans main ()?
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • ED
  • Student
  • Student
  • No Avatar
  • Inscription: Jan 02, 2003
  • Messages: 66
  • Loc: Halifax
  • Status: Offline

Message Mars 29th, 2003, 10:37 pm

Hey les poissons!
post-vous sur x-nations?
  • fish
  • Newbie
  • Newbie
  • No Avatar
  • Inscription: Mar 29, 2003
  • Messages: 5
  • Status: Offline

Message Mars 31st, 2003, 4:12 am

Je pense que j'ai finalement travaillé, j'ai utilisé fgets () puis un
for (i = 0; i <MAX_LINE, ch [i]! = \ 0; i + +)

elle a cessé d'accepter mon problème de caractères a été conclu après <Return> si les 50 places dans le tableau n'ont pas été pourvus.

merci beaucoup pour votre aide.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8934
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mars 31st, 2003, 4:24 am

Glad you résoudre votre problème.
Ozzu Hosting - Want your website on a fast server like Ozzu?

Afficher de l'information

  • Total des messages de ce sujet: 8 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 153 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC