Comprehension d'un énoncé

Fermé
jeff - 11 nov. 2005 à 11:55
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 11 nov. 2005 à 21:41
Bonjour , quand on vous demander d'écrire un programme qui affiche son entrée à raison d'un mot par ligne , çà veut dire que si je tape :

salut çà va , il va m'afficher :

salut
çà
va

?

autre chose , Ctrl-D çà veut dire quoi dans le shell ou l'exécution d'un programme , c'est la fin de ligne , EOF...? car je suis tjs obligé de taper çà pour afficher un résultat .
Et dernière question :

char c = 'a'; çà veut dire que la variable c est égale à la lettre a , mais si je voulais dire que la variable c = la lettre A majuscule , comment je devrais l'affecter?

merci

10 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 12:05
Salut,
1.
Ctrl + D c'est la fin de la saisie sous Unix.
Sous Windows tu as Ctrl + Z je crois.

Tu n'est pas obligé d'utiliser Ctrl + D si ça te déranges.
Tu peux conditionner la sortie d'un programme par le biais d'une boucle.

Tu saisie jusqu'à quand l'entrée est Fin.
ou
tant que l'entrée est différente de Fin.

2.
c='A'
ou
tu utilises la fonction toupper

Personnellement je trouve Perl plus adapté pour le traitement de texte, qui en fait c'est le gros travail qu'on fait en général.
Je t'ai donné un script pour la version wc que tu as fait en C.
Si tu es obligé de travailler avec C alors fait le, sinon commence un peu avec Perl et tu seras surpris de la façon qu'il voit les choses.
0
salut , oui en fait je suis obligé d'apprendre le C en 1er , mais je me mettrai au Perl plus tard , bien que je ne sache pas à quoi sert le Perl...

sinon , pour la compréhension de mon énoncé , c'était bon?

quand on vous demande d'écrire un programme qui affiche son entrée à raison d'un mot par ligne , çà veut dire que si je tape :

salut çà va , il va m'afficher :

salut
çà
va

?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 12:32
sinon , pour la compréhension de mon énoncé , c'était bon?
Je crois que oui.

J'ai vu ton wc reduit en C.

Je t'ai écrit un script en Perl. tu peux le regarder pour voir à quoi ça sers Perl.

A quoi ça sers un language de programmation?
je ne trouve pas que c'est une bonne question.

Plutôt, c'est le quel le language qui peut resoudre mon problème plus facilement, plus rapidement, ....,? donc selont t'es besoin.

De toute façon l'algorithme tu peux le faire en français. tu n'as qu'à le traduire dans le language que tu préfères.

A+

lami20j
0
hum , çà veut dire que l'algorithme en français serait çà :

tant que getchar prend un caractère en entrée différent de EOF ,

si ce caractère est un espace on passe à la ligne


c'est crédible tu penses mon algorithme là?



parce que contrairement je n'aurais plus besoin de taper sur entrée en ctrl + d pour passer à la ligne .

Le programme pourrait etre aussi :

on affiche la chaine de mots , on tape sur entrée , et les mots s'affichent un à un à la ligne...

alors lequel est le bon...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 14:01
Re,

tu parles au début d'un mot par ligne.

mais getchar() c'est une fonction pour les caractères.
Donc pour une chaine tu dois peut être utiliser gets().

A ne pas confondre 'a' - le caractère avec "a" une chaine qui contient a et \0.

Donc dit exactement ce que tu veux faire puisque je ne vois pas très bien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
l'énoncé de l'exercice c'est :

écrivez un programme qui affiche son entrée à raison d'un mot par ligne .


moi j'ai plusieurs idées :

1.( tant que le caractère en entrée est différent de EOF , on affiche ce caractère)
(si ce caractère est un espace , on passe à la ligne )

littéralement c'est facile à comprendre , et en C çà me donnerait ceci :
while ((c = getchar()) !=EOF)
putchar(c);
if ( c == ' ')
c = '\n';



2. je définis 2 variables , int c, etat . c pour les caractères tapés en entrée qui formeront un mot , et etat la variable qui dira quand le mot se termine , j'aurais donc en C :

int c, etat;
etat = DEHORS;

while ((c = getchar()) !=EOF)
if ( etat == DEHORS )
c = '\n';

putchar(c);
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 15:15
Salut,
littéralement c'est facile à comprendre
Peut être c'est ma mauvais journée, mais je ne comprends pas ce que tu veux.

Tu pourras écrire les entrées ensuite les résultat que tu veux obtenir.

Tu parles de :
écrivez un programme qui affiche son entrée à raison d'un mot par ligne ???
Mais tu parles littéralement que des caractères. En C une chaîne des caractères ("un mot sit tu veux") est un fait un tableau de caractères.

Voilà un exemple.
A la demande je saisie une chaine. Ensuite elle est affichée à l'écran. Si je saisie fin alor je sors de programme.
#include <stdio.h>

main()
{
 char nom[50], tempnom[50];
 int quitter=0;
 while (! quitter)
 {
  printf("Entrez un mot (fin pour terminer) : ");
  scanf("%s",nom);
  quitter=((strcmp(nom,"fin"))==0);

  if (! quitter)
  {
   printf("%s\n",nom);
  }
 }
}


Et voilà le résultat
[lamitest@localhost bin]$ ./entrez_nom
Entrez un mot (fin pour terminer) : mot
mot
Entrez un mot (fin pour terminer) : entrez
entrez
Entrez un mot (fin pour terminer) : test
test
Entrez un mot (fin pour terminer) : fin
[lamitest@localhost bin]$
0
non en fait j'ai pas encore vu les tableaux , je ne dois pas les utiliser , c'est bien pour çà que au début j'avais un exercice avec la variable etat qui définissez un mot comme toute séquence de caractère qui ne contient ni espace... , en fait je pense qu'on me demande un programme qui fait que j'écris sur mon clavier , et que chaque fois que je finis un mot , çà passe à la ligne , donc je souhaitais savoir si mes algos étaient bons...j'ai seulement droit à 3 fonctions ( vu que j'en ai vu que 3 , getchar , putchar , printf ) et je ne dois pas utiliser de tableaux ou autre , j'ai juste vu les variables , les boucles , et les entrées sorties de caractères , en fait mon alog je le trouvais pas trop trop mal , toi tu le trouves nul ? :-(
0
j'ai testé mon 1er algo il marche pas , çà me met bien les caractères en entrée , çà les recopie en sortie , mais quand je tape sur entrée çà me recopie tout en dessous...
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 15:46
Salut,
toi tu le trouves nul ?
Loin de moi de penser. Sauf que pour faire un algorithme c'est bien de savoir ce qu'on veux.

En ce cas écrit ton code pour voir ce que je peux faire.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 15:55
Teste ce code

main()
{
 int c1;
 int vider;
 while (c1 != '0')
 {
  printf("Entrez un caractère : ");
  c1=getchar();
  putchar(c1);
  scanf("%c",&vider); 
  putchar('\n');
 }
}
0
salut , j'ai trouvé l'algo le plus simple qui marche avec mes fonctions autorisées , et çà marche :


int c;
while ( ( c =getchar() ) != EOF )
if ( c == ' ' )
c = '\n';
putchar(c);



merci de ton aide
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 nov. 2005 à 21:41
Félicitations!

N'oublies pas les accolades.
0