Question pour un exercice

Résolu/Fermé
Utilisateur anonyme - Modifié par GinoX27 le 10/12/2015 à 11:21
 Utilisateur anonyme - 11 déc. 2015 à 19:29
Bonjour,

J'aurais besoin d'aide pour un exercice.

Je viens a peine d'arriver dans un établissement d'étude en ligne, sauf qu'apparement les profs n'ont pas l'air de répondre aux messages.

Je dois faire un exercice en C++ sous eclipse ou je dois

Initialisé une variable entière qui représentera l'age

donc int age;

Et une autre variable chaine cette fois ci qui représentera un prénom.
N'ayant jamais codé ou peu de fois en C++, je vois que l'annotation syntaxique se met en bleu quand je précise "char". Donc je suppose que ca doit être ça

Mais quand j'essaie de faire par exemple


int age = 16;
char prenom = "Nicolas";

printf(prenom);
getch();
system("cls")
printf(age);
getch();

return 0;


Et donc en faisant ça je me retrouver avec les mêmes erreurs pour les 2 printf

"Initializing argument 1 of 'int printf(const char*, ...)'"
"Invalid conversion from char to const char"
"Invalid conversion from int to const char"

2 réponses

delfre56 Messages postés 340 Date d'inscription mardi 3 juillet 2012 Statut Membre Dernière intervention 23 février 2018 48
10 déc. 2015 à 13:32
Alors déjà non, char c'est un caractère. Toi tu veux une chaîne de caractères, donc c'est string qu'il faut utiliser. Il me semble qu'il faut ajouter un #include <string.h> ou quelque chose comme ça. L'autre solution étant de faire un tableau de caractères.
Bon par contre je ne comprends pas du tout ce que ton programme est censé faire. Si je comprends bien, tu affiches le prénom à l'écran, puis tu entres un caractère, tu effaces tout et tu affiche l'age, c'est bien ça ?
0
Utilisateur anonyme
10 déc. 2015 à 13:38
Oui voilà. j'en suis qu'au début de mes cours donc ils veulent me faire découvrir le c++ dans un premier temps avec des exercices novice. Du coup merci de ta réponse

--
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 10/12/2015 à 15:03
Salut GinoX27,

Ton code ressemble à du C plutôt qu'à du C++.

si c'est vraiment en C++ que tu dois faire son exercice, tu devrais utiliser un objet string et faire
#include <string>
(et non string.h, qui est un entête pour du C) et l'assignation peut effectivement se faire avec l'opérateur =. Vois un exemple là :

http://www.cplusplus.com/reference/string/string/operator=/

de même printf est dans la bibliothèque standard du C, accessible avec
#include <stdio.h>
.

en C++ tu gérerais ta sortie vers l'écran de la console avec cout (accessible par
#include <iostream>
.

Si c'est du C que tu dois faire, tu as juste besoin de faire
#include <stdio.h>
. Ta syntaxe de printf() n'est cependant pas bonne, car il te manque la chaîne de format, et comme indiqué par delfre56, c'est un tableau de char que tu dois déclarer, et non un seul char. Donc, par exemple
char prenom[] = "Nicolas"
puis
printf("%s\n", prenom);
avec le spécificateur de chaîne.

http://www.cplusplus.com/reference/cstdio/printf/

Quant à
getch()
, ce n'est pas une fonction standard du C, ni du C++.

Dal
0
Utilisateur anonyme
10 déc. 2015 à 15:29
Tu es totalement hors sujet :)

--
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228 > Utilisateur anonyme
10 déc. 2015 à 15:53
En quoi est-ce qu'il est hors sujet?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
10 déc. 2015 à 15:55
Je constate que tu utilises www.cplusplus.com, utilise plutôt https://en.cppreference.com/w/ qui non seulement est un wiki donc modifiable au besoin, est plus fourni en exemples, plus à jour sur les standards, et plus fiable de manière générale.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 10/12/2015 à 18:36
@GinoX27:

Tu es totalement hors sujet :)

Oui, bien sûr. Je te souhaite néanmoins bonne chance pour la suite :-)

@gravgun:

Pour le C, le site cplusplus.com est à jour de C11, qui est le dernier standard en vigueur à ce jour pour le C. Je ne pratique pas suffisamment le C++ pour donner une opinion sur ce site comme ressource pour ce langage.

J'utilise aussi cppreference.com. Cependant, au-delà d'un certain degré de détails nécessaire, je lis le standard en ce qui me concerne (et après, je prends 2 aspirines).

Pour donner un lien vers des explications claires à un néophyte, je préfère envoyer : http://www.cplusplus.com/reference/cstdio/printf/ plutôt que https://en.cppreference.com/w/c/io/fprintf qui présente une page avec 11 prototypes mêlant printf, fprintf, sprintf,... mais avec un exemple seulement pour printf

cplusplus.com traite ces fonctions, qui sont différentes, sur des pages différentes, et avec des exemples différents, par exemple fprintf :

http://www.cplusplus.com/reference/cstdio/fprintf/


Dal
0
Utilisateur anonyme
10 déc. 2015 à 18:52
Tu es hors sujet. Je m'explique.

Je suis nouveau dans le C++, j'ai déjà auparavant touché dans mes études au C#, html, php, sql (même si les 3 derniers n'ont aucun rapport avec le C certes).

Mes cours de cette année porte sur le C++, il n'y a donc aucune raison de me faire rentrer dans une logique de programmeur en C, c'était complètement inutile.

Ensuite pour
getch()
il est accessible avec
#include <conio.h>
0