Programme impossible ?

Programme impossible ? - C++ - Programmation

Marsh Posté le 03-01-2008 à 18:18:12    

Voila notre prof de langage C nous a donné un sujet de prog dont il nous a dit que personne dans la classe y arrivera.  Je sais pas pourquoi il me parâit facil mais je n'y arrive pas donc si des personnes pourrait m'aider cela sera vraiment trés gentil.
 
6/ C’est l’espace... ☼☼☼☼☼☼☼
Ecrire le programme permettant de saisir une chaîne de caractère au clavier, d’afficher le
nombre de mots qu’elle contient ainsi que les initiales de ces mots.
On rappelle que deux mots sont séparés par un caractère ²espace²( ‘ ‘ ). On admettra que la
chaîne ne peut commencer ni finir par un caractère ²espace² et que l’on ne peut trouver
plusieurs caractères ²espace² consécutifs.
Exemple:
Si la chaîne de caractère entrée est: la vie est un long fleuve tranquille
Le programme affichera:
la vie est un long fleuve tranquille
Le nombre de mots est: 7
La chaîne contenant les initiales est: lveulft
 
 
merci

Reply

Marsh Posté le 03-01-2008 à 18:18:12   

Reply

Marsh Posté le 03-01-2008 à 18:36:38    

c'est du c++ (utilisation de printf, tableau, chaine de caractère,boucle for) et pour toi c'est sur que cela doit etre facile mais pour nous :(

Message cité 1 fois
Message édité par vyse75 le 03-01-2008 à 18:38:14
Reply

Marsh Posté le 03-01-2008 à 18:38:32    

Yep, salut, je ne suis qu'un amateur, et de plus je ne connais rien au C++.
Cependant, tu peux prendre le premier caratère comme une initiale, après tu prend la première lettre suivant un espace et tu compte de nombre d'initiale, non ?
 
Ou est le problème ? Qu'as- tu fait ?
 

Reply

Marsh Posté le 03-01-2008 à 18:43:36    

ben en fait je sais pas comment mettre en langage C ce que tu viens te dire
 
'sp'=0;
 
for (i=0;T[i]!=0;i++)
 
if(T[i]='sp')?
??????
 
 
 
voila aprés c'est le blanc

Reply

Marsh Posté le 03-01-2008 à 18:48:25    

vyse75 a écrit :

ben en fait je sais pas comment mettre en langage C ce que tu viens te dire
 
'sp'=0;
 
for (i=0;T[i]!=0;i++)
 
if(T[i]='sp')?
??????
 
 
 
voila aprés c'est le blanc


 
si T est la chaîne saisie, ta boucle ne doit s'arrête qu'à la fin du tableau T. Déjà
 
Donc ?

Reply

Marsh Posté le 03-01-2008 à 18:53:40    

En espérant ne pas dire de bêtise, si non, je vais me faire crier  :whistle:  
 
Si non, t'es en quelle classe ?
 
Et puis, il y à une section aide au devoir, le topic est mal placé  :ange:

Reply

Marsh Posté le 03-01-2008 à 19:05:48    

vyse75, vas lire la doc de la fonction strtok, c'est un strtok(ta chaine, " " ) qui devrait fortement servir pour resoudre ton pb...
A+,


Message édité par gilou le 03-01-2008 à 19:06:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-01-2008 à 19:32:01    

Code :
  1. /* Programme impossible */
  2.  
  3. #include <stdio.h>
  4.  
  5. #include <stdlib.h>
  6.  
  7. void main (void)
  8. {
  9.  int Index;
  10.  char T[256];
  11.  int Nombre_de_mots = 1;
  12.  printf("Entrez une chaine : \n" );
  13.  fgets(T, sizeof T, stdin);
  14.  printf("%c", T[0]);
  15.  for (Index=1; T[Index] != '\n'; Index++)
  16.    if (T[Index] == ' ')
  17.      {
  18.        printf("%c", T[Index+1]);
  19.        ++Nombre_de_mots;
  20.      }
  21.  printf("%d \n", Nombre_de_mots);
  22.  exit(0);
  23. }

Reply

Marsh Posté le 03-01-2008 à 20:07:31    


 
Super. Et si j'entre une chaine vide?

Reply

Marsh Posté le 03-01-2008 à 20:08:16    

Ace17 a écrit :


 
Super. Et si j'entre une chaine vide?


 
C'est pas spécifié  :whistle:

Reply

Marsh Posté le 03-01-2008 à 20:08:16   

Reply

Marsh Posté le 03-01-2008 à 22:12:22    

jovalise t'avais le droit de t'abstenir :o

 

et strtok c'est pas pr les chiens


Message édité par Joel F le 03-01-2008 à 22:12:50
Reply

Marsh Posté le 03-01-2008 à 23:18:52    


 
Si c'est pour nous pondre des infâmités pareilles, tu avais le droit de t'abstenir. [:prozac]

Reply

Marsh Posté le 03-01-2008 à 23:24:08    

Si vous aviez  donné la soluce, le prof aurait détecté le ponpage et ça aurait valu un zéro.
Là ça passe pour de la débrouille au pire  :sol:

Reply

Marsh Posté le 03-01-2008 à 23:26:21    


J'ai comme un doute.  [:robert de niro]

Reply

Marsh Posté le 04-01-2008 à 13:54:13    

Elmoricq a écrit :


 
Si c'est pour nous pondre des infâmités pareilles, tu avais le droit de t'abstenir. [:prozac]


 
c'est clair. Un type normal aurait ecrit "veuillez saisir une phrase" et non "Entrez une chaine"

Reply

Marsh Posté le 04-01-2008 à 21:41:49    

thx tout le monde j'y suis arrivai lol :) suffisait de réflechir :honte:  
 


#include <stdio.h>
#include <stdlib.h>
 
 int main (void)
 {
 int i;
 char T[51];
 int N=1;
 
printf("Entrez une chaine : " );
 
fgets(T, 51, stdin);
 
printf("%c", T[0]);
 
for (i=0; T[i]!=0; i++)
 {
 if (T[i]==' ')
 {  N=N+1;
    printf("%c", T[i+1]);
             }
}
 
printf("\nnombre de mots %d : ", N);
 
system("pause" );
return 0;
      }


Reply

Marsh Posté le 05-01-2008 à 09:50:23    

vyse75 a écrit :

thx tout le monde j'y suis arrivai lol :) suffisait de réflechir :honte:  
 


#include <stdio.h>
#include <stdlib.h>
 
 int main (void)
 {
 int i;
 char T[51];
 int N=1;
 
printf("Entrez une chaine : " );
 
fgets(T, 51, stdin);
 
printf("%c", T[0]);
 
for (i=0; T[i]!=0; i++)
 {
 if (T[i]==' ')
 {  N=N+1;
    printf("%c", T[i+1]);
             }
}
 
printf("\nnombre de mots %d : ", N);
 
system("pause" );
return 0;
      }




 
Super. Et si j'entre une chaine vide?

Reply

Marsh Posté le 05-01-2008 à 10:05:41    

Ace17 a écrit :


 
Super. Et si j'entre une chaine vide?


 
Le but c'est d'induire en erreur les petits cons qui recopient du code sans comprendre et parle ensuite de leur pretendue reflexion, pas de faire un truc qui marche...


---------------
When it comes to business/legal topics, just assume almost everyone commenting has no idea what they’re taking about and have no background in these subjects because that’s how it really is. Harkonnen 8-> Elmoricq 8====>
Reply

Marsh Posté le 05-01-2008 à 12:28:50    

capitaineigloo a écrit :


 
c'est clair. Un type normal aurait ecrit "veuillez saisir une phrase" et non "Entrez une chaine"


 
 [:icez]  
 

vyse75 a écrit :

thx tout le monde j'y suis arrivai lol :) suffisait de réflechir :honte:  


 
Ce que tu as manifestement oublié de faire, en repompant le code de jovalise.  
Le pire c'est que je ne suis pas persuadé que tes profs se rendront compte de sa mauvaise qualité  [:mareek]


Message édité par bapho13 le 05-01-2008 à 12:29:08
Reply

Marsh Posté le 05-01-2008 à 14:17:22    

y s'en branle l'important c d'avoir le diplome

Reply

Marsh Posté le 05-01-2008 à 14:50:37    

weblook$$ a écrit :

y s'en branle l'important c d'avoir le diplome


 
Bravo champion !  [:hahaguy]

Reply

Marsh Posté le 05-01-2008 à 14:55:08    

;)

Reply

Marsh Posté le 15-01-2008 à 19:36:22    

Salut, j'ai trouver une solution a ton probleme. c'est en c++ mais c'est facile a traduire :-°
[cpp]
#include <conio.h>
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main(int argc, char *argv[])
{
 int a=0,i=1,mot=1,intermed=0;
 int lol;
 char buffer;
 bool espace=true;
 char tableau[10000];
 char coucou[5000];
 
    while (lol != 46)
    {
    buffer=getch();
   
       if(  buffer==8 && i>1 && tableau[i-2]==' ')
       {
       mot--;
       espace=true;
       a--;
       coucou[a]=' ';
       i--;
       }  
       else if ( buffer==8 && i>1)
       {i--;
       tableau[i]=' ';
       }    
       else if (  buffer==32 && i !=1 && !espace)
       {
       tableau[i]=buffer;
       mot++;
       espace=true;
       i++;
       
       }
       else if (espace)
       {
       espace =false;
       tableau[i]=buffer;
       coucou[a]=buffer;
       i++;
       a++;
       }
       else if (buffer !=' ')
       { tableau[i]=buffer;i++;}
       
    system("cls" );
     
    while ( intermed !=i+1)
    {cout <<tableau[intermed];
    intermed++;
    }  
 intermed=0;    
 lol=buffer;    
}
 cout <<endl;
cout <<mot<<" mots"<<endl;
cout <<"initiales des mots : ";
intermed=0;
 
while (intermed!=a)
{ cout <<coucou[intermed]<<" ";
intermed++;
}
 
 
   
   
   
     
   
   
    cout<<endl;
    system("PAUSE" );
    return EXIT_SUCCESS;
}
[cpp/]

Reply

Marsh Posté le 15-01-2008 à 21:28:00    

ca va alller les codes nuls et moches là hein :o

Reply

Marsh Posté le 16-01-2008 à 13:30:23    

il est peut etre nul et moche mais il marche...

Reply

Marsh Posté le 16-01-2008 à 13:50:11    

juloss4 a écrit :

il est peut etre nul et moche mais il marche...


 
Belle philosophie ...  :sleep:

Reply

Marsh Posté le 16-01-2008 à 18:17:12    

juloss4 a écrit :

il est peut etre nul et moche mais il marche...


 
Non, un code "qui marche", ça ne suffit pas. Tu apprendras quand tu seras grand qu'un code maintenable, et donc lisible et bien écrit, est tout aussi important que la fonction que le code remplit.

Reply

Marsh Posté le 16-01-2008 à 19:11:20    

juloss4 a écrit :

il est peut etre nul et moche mais il marche...

Les gens qui utilisent cet argument meritent la pelle a clous  :fou:  

Reply

Marsh Posté le 17-01-2008 à 12:07:02    

Code :
  1. #include <iostream>
  2. #include <vector>
  3. #include "stdio.h"
  4. int main()
  5. {
  6.         std::vector<char> chaine;
  7.         chaine.push_back('c');chaine.push_back('o');chaine.push_back('d');
  8.         chaine.push_back('e');chaine.push_back(' ');
  9.         chaine.push_back('p');chaine.push_back('o');chaine.push_back('u');
  10.         chaine.push_back('r');chaine.push_back('r');
  11.         chaine.push_back('i');chaine.push_back(' ');
  12.         chaine.push_back('m');chaine.push_back('a');chaine.push_back('i');
  13.         chaine.push_back('s');chaine.push_back(' ');
  14.         chaine.push_back('q');chaine.push_back('u');chaine.push_back('i');
  15.         chaine.push_back(' ');
  16.         chaine.push_back('m');chaine.push_back('a');chaine.push_back('r');
  17.         chaine.push_back('c');chaine.push_back('h');
  18.         chaine.push_back('e');
  19.         for(int i=0;i<chaine.size();i++)
  20.                 printf("%c",chaine[i]);
  21.         std::cout<<std::endl;
  22.         return 0;
  23. }


 
moi j'aime la pelle a clous [:adrien monk]


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 17-01-2008 à 12:33:48    

J'ai envie de me faire taper mais de toute façon y'a pire dans ce topic alors :o
 
Au moins je crois qu'il prends en compte tous les cas possibles, et ne fait pas de tests supperflus :sol:
 
Ouais, Joel, je sais, strtok c'est plus mieux mais j'ai pas envie c'est trop facile :o

Code :
  1. // Gruik.cpp : Defines the entry point for the console application.
  2.  
  3. #include "stdafx.h"
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6.  
  7. int _tmain(int argc, _TCHAR* argv[])
  8. {
  9.     // Variable declarations
  10.     char str[80];
  11.     int nbWords = 0;
  12.     int cursor = 0;
  13.     bool displayChar = true;
  14.  
  15.     printf("Gruik ?\n" );
  16.     fgets(str, sizeof str, stdin);
  17.  
  18.     printf("Grmpf : %s\n", str);
  19.  
  20.     while(str[cursor] != '\n')
  21.     {
  22.         if (displayChar && str[cursor] != ' ')
  23.         {
  24.             printf("%c", str[cursor]);
  25.             ++nbWords;
  26.         }
  27.         displayChar = (str[cursor++] == ' ');
  28.     }
  29.     printf("\nGrunt %d\n", nbWords);
  30.  
  31.     //fgets(str, sizeof str, stdin);
  32. }


Message édité par MagicBuzz le 17-01-2008 à 12:41:38
Reply

Marsh Posté le 17-01-2008 à 13:25:36    

ptitchep > 1e degré == [:florentg]. 2e degré == [:rofl]
 
MagicBuzz > j'vais t'aider : on est dans la cat' C++, pas dans la cat' C [:el g]


Message édité par Elmoricq le 17-01-2008 à 13:26:28
Reply

Marsh Posté le 17-01-2008 à 13:55:34    

M'en fout, le gars parle d'un prof de C :o
 
Et NazzTazz a déduit de l'explication de l'auteur qu'il demandait effectivement un prog en C (non mais :o)
 
PS : Et je me souviens plus... Y'a un type "bool" en C ? Je croyais que non :??:


Message édité par MagicBuzz le 17-01-2008 à 13:58:04
Reply

Marsh Posté le 17-01-2008 à 14:42:16    

en C99 oui :o

Reply

Marsh Posté le 17-01-2008 à 18:43:57    


 
Oui j'ai eu du mal à le trouver  ;) c'est plus dur qu'on croit de faire un code sur-pourri.


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 17-01-2008 à 19:11:59    

ptitchep a écrit :


 
Oui j'ai eu du mal à le trouver  ;) c'est plus dur qu'on croit de faire un code sur-pourri.


C'est ca, faites un concours tant que vous y etes!  :D

Reply

Marsh Posté le 17-01-2008 à 19:20:11    


 
Vu dans du code de prod  :sol:


---------------
When it comes to business/legal topics, just assume almost everyone commenting has no idea what they’re taking about and have no background in these subjects because that’s how it really is. Harkonnen 8-> Elmoricq 8====>
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed