| Corrigé de la séance d'exercices 8, Programmation I |
| Sciences et Technologies du Vivant, Semestre 1 |
#include <iostream>
#include <string.h>
using namespace std;
void majuscule(char *mot) {
if (mot[0] >= 'A' && mot[0] <= 'Z')
return;
else
mot[0] = mot[0] - 32;
}
char *concatenation(char *mot1, char *mot2) {
int longueur = strlen(mot1) + strlen(mot2) + 2;
char *mot3 = new char[longueur];
strcpy(mot3, mot1);
mot3[strlen(mot1)] = ' ';
strcpy(mot3 + strlen(mot1) + 1, mot2);
return mot3;
}
int main(int argc, char **argv) {
char nom[128];
cout << "Entrez un nom: ";
cin >> nom;
majuscule(nom);
cout << "Nom: " << nom << endl;
char *prenom;
prenom = new char[128];
cout << "Entrez un prenom: ";
cin >> prenom;
majuscule(prenom);
char *nom_complet = concatenation(prenom, nom);
cout << nom_complet << endl;
delete[] prenom;
delete[] nom_complet;
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
if (argc < 3) {
cout << "Le programme a besoin de deux arguments." << endl;
return 0;
}
int a = atoi(argv[1]);
int b = atoi(argv[2]);
cout << a << " + " << b << " = " << a+b << endl;
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
if (argc < 3) {
cout << "Le programme a besoin de deux arguments." << endl;
return 0;
}
int a = atoi(argv[1]);
int b = atoi(argv[2]);
if (b == 0) {
cout << "Erreur: division par 0" << endl;
return 0;
}
cout << a << " / " << b << " = " << float(a)/b << endl;
return 0;
}
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
if (argc < 2) {
cout << "Le programme a besoin d'au moins un argument." << endl;
return 0;
}
int somme = atoi(argv[1]);
cout << argv[1];
for (int i=2; i<argc; i++) {
somme = somme + atoi(argv[i]);
cout << " + " << argv[i];
}
cout << " = " << somme << endl;
return 0;
}
#include <iostream>
using namespace std;
bool adn_valide(char *sequence) {
for (unsigned int i=0; i<strlen(sequence); i++)
if (sequence[i] != 'A' && sequence[i] != 'C' &&
sequence[i] != 'G' && sequence[i] != 'T')
return false;
return true;
}
bool compare(char *seq1, char *seq2) {
if (strlen(seq1) != strlen(seq2))
return false;
for (unsigned int i=0; i<strlen(seq1); i++)
if (seq1[i] != seq2[i])
return false;
return true;
}
void adn_to_arn(char *adn) {
for (unsigned int i=0; i<strlen(adn); i++)
if (adn[i] == 'T')
adn[i] = 'U';
}
char *complementaire(char *seq_originale) {
char *comp = new char[strlen(seq_originale)];
for (unsigned int i=0; i<strlen(seq_originale); i++) {
switch (seq_originale[i]) {
case 'C':
comp[i] = 'G';
break;
case 'G':
comp[i] = 'C';
break;
case 'T':
comp[i] = 'A';
break;
case 'A':
comp[i] = 'T';
break;
}
}
return comp;
}
int main(int argc, char **argv) {
char seq1[512], seq2[512];
do {
cout << "Entrez une sequence ADN: ";
cin >> seq1;
} while (!adn_valide(seq1));
do {
cout << "Entrez une seconde sequence ADN: ";
cin >> seq2;
} while (!adn_valide(seq2));
if (compare(seq1, seq2))
cout << "Les deux sequences sont identiques." << endl;
else
cout << "Les deux sequences sont differentes." << endl;
cout << "'" << seq1 << "' transcrit en ARN vaut '";
adn_to_arn(seq1);
cout << seq1 << "'" << endl;
cout << "Le complementaire de '" << seq2 << "' vaut '" <<
complementaire(seq2) << "'" << endl;
return 0;
}
Pour convertir une chaîne de caractères en entier, il faut tout d'abord vérifier que chaque caractère est bien un nombre.
Ensuite, pour la conversion elle-même, on parcourt la chaîne,
on multiplie chaque chiffre par la puissance de 10 correspondante et
on additionne le tout. Par exemple,
.
int string_to_int(char *chaine) {
int longueur = strlen(chaine);
int resultat = 0;
bool erreur = false;
for (int i=0; i<longueur; i++)
if (chaine[longueur - 1 - i] >= '0' && chaine[longueur - 1 - i] <= '9')
resultat += int(pow(10, i) * (chaine[longueur - 1 - i] - '0'));
else
erreur = true;
if (erreur)
return 0;
else
return resultat;
}
bool palindrome(char *chaine) {
bool result = true;
int longueur = strlen(chaine);
int i = 0;
while (i < longueur / 2 && result) {
if (chaine[i] != chaine[longueur - 1 - i])
result = false;
i++;
}
return result;
}