Exercícios Corrigidos C++
Exercícios Corrigidos C++
Olá mundo!
Aqui está um programa que ilustra o uso do cout!
Solução
#include<iostream>
usando namespace std;
II-B. Exercício 2
Escrever um programa que pede ao usuário para digitar a largura e o comprimento de um campo
e que exibe o perímetro e a área.
Solução
#include<iostream>
usando espaço de nomes std;
int main()
{
double largeur,longueur,surface, perimetre;
1
C++ SMP/SMC/S4
cout << "A superfície vale: " << surface << endl;
cout << "O perímetro é: " << perimetro << endl;
retornar EXIT_SUCCESS;
}
II-C. Exercício 3
Escrever um programa que pede ao usuário para digitar cinco inteiros e que exibe seu
média. O programa deverá usar apenas duas variáveis.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a;double s=0;
s=s/5.0;
cout<<"A média vale : "<<s<<endl;
retornar EXIT_SUCCESS;
}
II-D. Exercício4▲
2
C++ SMP/SMC/S4
Écrire un programme qui demande à l'utilisateur de saisir deux entiers A et B, qui échange le
contenu des variables A et B puis qui affiche A et B.
Solução
#include<iostream>
usando o namespace std;
int main()
{
int a,b,temp;
temp=a;
a=b;
b=temp;
retornar EXIT_SUCCESS;
}
II-E. Exercício5▲
Escrever um programa que peça ao usuário para digitar o preço sem impostos de um quilo de tomates, o
nombre de kilos de tomates achetés, le taux de TVA (Exemple 10 %,20%…). Le programme
afixe então o preço final das mercadorias.
3
C++ SMP/SMC/S4
Solução
#include<iostream>
usando o namespace std;
int main()
{
duplo prixht, peso, iva, total;
total=(1+tva/100)*prixht*poids;
cout << "O preço com impostos é: " << total << endl;
cout << "Pressione uma tecla para continuar …" << endl;
cin.ignore();
cin.get();
retornar EXIT_SUCCESS;;
}
Solução
#include<iostream>
usando namespace std;
int main()
{
int a;
cout<<"Digite um inteiro: ";cin>>a;
4
C++ SMP/SMC/S4
III-B. Exercício2▲
Escrever um programa que exibe todos os inteiros de 8 até 23 (extremos inclusos) usando
um para.
Solução
#include<iostream>
usando o namespace std;
int main()
{
int i;
para(i=8;i<=23;i++)cout<<i<<endl;
retornar 0;
}
III-C. Exercício3▲
Mesmo exercício, mas utilizando um while.
Solução
#include<iostream>
usando namespace std;
int main()
{
5
C++ SMP/SMC/S4
int i=8;
enquanto(i<=23)
{
cout<<i<<endl;
i++;
}
return 0;
}
III-D. Exercício4▲
Écrire un programme qui demande à l'utilisateur de taper 10 entiers et qui affiche leur somme.
utilização de um for;
étude d'un algorithme usuel : calcul d'une somme.
Solução
#include<iostream>
usando namespace std;
int main()
{
int i,s=0,x;
para(i=0;i<10;i++)
{
cout<<"Digite um inteiro: ";cin>>x;
s=s+x;
}
retornar 0;
}
III-E. Exercício5▲
Écrire un programme qui demande à l'utilisateur de taper 10 entiers et qui affiche le plus petit
dos inteiros.
Solução
6
C++ SMP/SMC/S4
#include<iostream>
usando namespace std;
int main()
{
int i,ppt,x;
para(i=0;i<10;i++)
{
cout<<"Digite um inteiro: ";cin>>x;
se(i==0)ppt=x;senão se(x<ppt)ppt=x;
}
retornar 0;
}
III-F. Exercício6▲
Escrever um programa que pede ao usuário para digitar um inteiro N e que calcula a soma
de cubos de 5^3 a N^3.
Solução
#include<iostream.h>
usando namespace std;
int main()
{
int N;
double soma;
Digite um inteiro:
se (N>=5) {
para (int i=5; i<=N; i++) soma += i*i*i;
}
cout << "Soma dos cubos de 5^3 a " << N << "^3 = " << somme << endl;
cin.ignore();
cin.get();
retornar EXIT_SUCCESS;
}
III-G. Exercício7▲
7
C++ SMP/SMC/S4
Escrever um programa que peça ao usuário para digitar um inteiro N e que calcule u(N)
definido por :
u(0)=3 ;
u(n+1)=3.u(n)+4.
Solução
#include<iostream>
usando namespace;
int main()
{
int i,u=3,N;
para(i=0;i<N;i++)
u=u*3+4;
cout<<"u("<<N<<")="<<u<<endl;
retornar 0;
}
III-H. Exercício8▲
Escreva um programa que peça ao usuário para digitar um inteiro N e que calcule u(N)
definido por:
u(0)=1 ;
u(1)=1 ;
u(n+1)=u(n)+u(n-1).
8
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
int i,u=1,v=1,w,N;
w=1;
para(i=2;i<=N;i++)
{
w=u+v;
u=v;
v=w;
}
cout<<"u("<<N<<")="<<w<<endl;
retornar 0;
}
III-I. Exercice 9▲
Escreva um programa que peça ao usuário para digitar um inteiro N entre 0 e 20.
inclui e que exibe N+17. Se digitarmos um valor incorreto, deve-se exibir "erro" e
pedir para inserir o número inteiro novamente.
Solução
#include<iostream>
usando namespace std;
int main()
{
int N;
bool OK;
faça
9
C++ SMP/SMC/S4
{
cout<<"Digite N entre 0 e 20:";cin>>N;
OK= N<=20 && N>=0;
if(!OK)cout<<"ERRORE TENTE NOVAMENTE"<<endl;
}enquanto(!OK);
N=N+17;
cout << "O valor final é : " << N << endl;
retorna 0;
}
Adicionar 1 ;
2. Multiplicar por 2 ;
3. Subtrair 4;
4. Desistir.
O programa solicita então que você digite um inteiro entre 1 e 4. Se o usuário digitar um valor
entre 1 e 3, realizamos a operação, exibimos o novo valor do inteiro e, em seguida, o reexibimos
o menu e assim por diante até digitarmos 4. Quando digitamos 4, o programa termina.
utilização do while;
utilização do switch;
gestão de um programa com a ajuda de um menu;
modelagem de um problema simples na forma informática.
Solução
#include<iostream>
usando namespace std;
int main()
{
int x=0,escolha;
faça
{
cout << "x vale " << x << endl;
cout << "1 : Adicionar 1" << endl;
cout << "2 : Multiplicar por 2" << endl;
10
C++ SMP/SMC/S4
switch(choix)
{
caso 1 : x++;break;
caso 2: x=x*2; quebrar;
caso 3: x=x-4;quebrar;
}
}while(choix!=4);
retornar 0;
}
Solução
#include<iostream>
usando namespace std;
int main()
{
int x, s=0,nb=0;
double média;
faça{
cout<<"Digite um inteiro:";cin>>x;
se(x>0){s=s+x;nb++;}
senão se(x<0)cout<<"ERRORE ";
}enquanto(x!=0);
11
C++ SMP/SMC/S4
retornar 0;
}
u(0)=3 ;
u(1)=2 ;
u(n)=n.u(n-1)+(n+1).u(n-2)+n.
utilização de um for;
estudo de um algoritmo usual: cálculo de uma sequência recorrente bastante difícil;
modelagem de um problema originado da matemática.
Solução
#include<iostream>
int main()
{
int N,u,i=0,v,w;
cout<<"u("<<N<<")="<<w<<endl;
retornar 0;
}
utilização de um for;
12
C++ SMP/SMC/S4
Solução
#include<iostream>
usando o namespace std;
int main()
{
int nb,max,x,i;
para(i=0;i<10;i++)
{
cout<<"Digite um inteiro: ";cin>>x;
se(i==0){max=x;nb=1;}
caso contrário se(x==max)nb++;
senão se (max<x) {max=x; nb=1;}
}
cout << "o número de ocorrências de " << max << " é " << nb << endl;
retornar 0;
}
utilização do for;
estudo de um algoritmo usual: cálculo de um fatorial;
modelagem de um problema proveniente da matemática.
Solução
#include<iostream>
usando namespace std;
int main()
{
int N,i,f=1;
13
C++ SMP/SMC/S4
retornar 0;
}
Solução
#include<iostream>
usando namespace std;
int main()
{
int n;
bool premier=true;
int d=2;
se(n<=1)premier=false;
senão
{
enquanto(premier==verdadeiro && d*d<=n)
se(n%d==0)premier=false; senão d=d+1;
}
se(premier)cout<<n<<" é primo"<<endl;
senão cout<<n<<" não é primo"<<endl;
retornar 0;
}
Solução
#include<iostream>
usando namespace std;
int main()
{
int N,i,nb=0,d;
bool é_primo;
para(i=2;i<=N;i++)
{
/* Escrever um programa que teste se i é primo */
est_premier=true;
d=2;
enquanto(est_premier && d*d<=i)
se(i%d==0)est_premier=false; senão d++;
se(est_premier==verdadeiro)nb++;
}
retornar 0;
}
Solução
#include<iostream>
usando o namespace std;
15
C++ SMP/SMC/S4
int main()
{
int N,i=1,nb=0,d;
bool é_premier;
enquanto(nb<N)
{
i++;
est_premier=true;
d=2;
enquanto(est_premier && d*d<=i)
se(i%d==0)est_premier=falso; senão d++;
se(est_premier==verdadeiro)nb++;
}
cout << "O enésimo número primo é " << i << endl;
retornar 0;
}
Solução
#include <iostream>
16
C++ SMP/SMC/S4
int main()
{
int N=0;
cout<<"Digite um valor para N: ";
cin>>N;
cout<<endl<<endl;
cout << "N= " << n << endl;
for(int i=0;i<N;i++)
{
for(int j=0;j<(N-i);j++)
{
cout<<"*";
}
cout << endl;
}
Aperte uma tecla para continuar ...
cin.ignore();
cin.get();
retornar 0;
}
Solução
#include<iostream>
usando namespace std;
17
C++ SMP/SMC/S4
int main()
{
int i,j,N;
for(i=1;i<=N;i++)
{
for(j=1;j<i;j++)cout<<" ";
for(j=1;j<=N+1-i;j++)cout<<"*";
cout << endl;
}
retornar 0;
}
Para todos os valores de a, existe um inteiro N tal que u(N)=1 (conjetura admitida).
a) Escrever um programa que pede ao usuário para digitar a e que exibe todos os valores
de u(n) de n=1 à n=N.
utilização do enquanto;
ler precisamente uma declaração;
modelagem bastante complexa de um problema proveniente da matemática.
Solução
#include<iostream>
usando o namespace std;
int main()
{
int a,n,u;
cout<<"Digite o valor de a: ";cin>>a;
n=0;
u=a;
enquanto(u!=1)
{
se(u%2==0)u=u/2; senão u=3*u+1;
n++;
cout << "u(" << n << ")=" << u << endl;
}
18
C++ SMP/SMC/S4
retornar 0;
}
b) Escrever um programa que pede ao usuário para digitar um número inteiro M e depois procura a
valor de a compreendido entre 2 e M que maximiza o valor de N. Chamamos A a este valor.
o programa deve exibir o valor A e o valor N correspondente.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a,n,u,M,amax,nmax;
cout << "Digite o valor de M: "; cin >> M;
amax=2;
nmax=2;
para(a=3;a<=M;a++)
{
n=0;
u=a;
enquanto(u!=1)
{
se(u%2==0)u=u/2; senão u=3*u+1;
n++;
}
se(n>nmax){amax=a;nmax=n;}
}
cout << "O valor de A é:" << amax << endl;
cout<<"O valor de N correspondente é :"<<nmax<<endl;
retornar 0;
}
IV.IHM/Os quadrosx▲
IV-A. Exercício1▲
Escreva um programa que peça ao usuário para inserir 10 inteiros armazenados em um array.
O programa deve exibir o número de inteiros maiores ou iguais a 10.
19
C++ SMP/SMC/S4
Solução
#include<iostream>
usando o namespace std;
int main()
{
int t[10], i, nb=0;
for(i=0;i<N;i++){cout<<"Digite um inteiro ";cin>>t[i];}
para(i=0;i<N;i++)se(t[i]>=10)nb++;
cout << "O número de inteiros superiores ou iguais a 10 é: "
<<nb<<endl;
retornar 0;
}
IV-B. Exercício2▲
Écrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau
assim como um inteiro V. O programa deve procurar se V está no array e exibir
« V se encontra na tabela » ou « V não se encontra na tabela ».
Solução
#include<iostream>
usando namespace std;
int main()
{
int t[N],i,V;
bool trouve;
for(i=0;i<N;i++){cout<<"Digite um inteiro ";cin>>t[i];}
20
C++ SMP/SMC/S4
trouve=false;
i=0;
enquanto(!trouve && i<N)
se(t[i]==V)encontrou=true; senão i++;
se(trouve) cout<<"O valor V está no array"<<endl;
senão cout << "O valor V não se encontra no array" << endl;
retornar 0;
}
IV-C. Exercício3▲
Écrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau.
O programa deve então exibir o índice do maior elemento.
Solução
#include<iostream>
usando namespace std;
IV-D. Exercício4▲
Écrire un programme qui demande à l'utilisateur de saisir 10 entiers stockés dans un tableau
assim como um inteiro V. O programa deve procurar se V está no array e deve
remover a primeira ocorrência de V deslocando os elementos uma posição para a esquerda
seguindo e acrescentando um 0 ao final da tabela. O programa deve então exibir a tabela
finalmente.
21
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
int t[N], i, j, V;
bool trouve;
for(i=0;i<N;i++){cout<<"Digite um inteiro ";cin>>t[i];}
cout<<"Digite o valor de V : ";cin>>V;
trouve=false;
i=0;
enquanto(!trouve && i<N)
se(t[i]==V)encontrou=true; senão i++;
se(encontrou)
{
for(j=i;j<N-1;j++)t[j]=t[j+1];
t[N-1]=0;
}
for(i=0;i<N;i++)cout<<t[i]<<endl;
retornar 0;
}
IV-E. Exercice 5▲
Escrever um programa que pede ao usuário para inserir 10 inteiros armazenados em um array
assim como um inteiro V e um inteiro i compreendido entre 0 e 9. O programa deve deslocar uma posição
para a direita todos os elementos a partir do índice i (removendo o último elemento do
tableau) e deve colocar o valor V na tabela no índice i. O programa deve então
mostrar a tabela finalmente.
Solução
22
C++ SMP/SMC/S4
#include<iostream>
usando namespace std;
int main()
{
int t[N],i,indice,V;
for(i=0;i<N;i++)cout<<t[i]<<endl;
retornar 0;
}
IV-F. Exercício6▲
Escrever um programa que peça ao usuário para digitar 10 inteiros que serão armazenados em um
o tableau. O programa deve então exibir seja « o tableau é crescente », seja « o tableau
é decrescente", ou "o quadro é constante", ou "o quadro é qualquer.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[N], i;
bool encontra=false;
bool croissant=true,decroissant=true;
para(i=0;i<N;i++)
23
C++ SMP/SMC/S4
{
cout<<"Por favor, digite o número inteiro "<<i<<" : ";cin>>a[i];
}
for(i=0;i<N-1;i++)
{
se(a[i]>a[i+1])crescente=false;
if(a[i]<a[i+1])decroissant=false;
}
retornar 0;
}
IV-G. Exercice 7▲
Escrever um programa que pede ao usuário para digitar 10 inteiros que serão armazenados em um
tableau. Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.
Algoritmo sugerido :
Solução
#include<iostream>
usando namespace std;
int main()
{
24
C++ SMP/SMC/S4
int a[N],i,j,min,imin,tmp;
for(i=0;i<N;i++)
{
cout<<"Por favor, digite o número inteiro "<<i<<" : ";cin>>a[i];
}
for(i=0;i<N-1;i++)
{
imin=i;min=a[i];
para(j=i+1;j<<N;j++)se(a[j]<min){min=a[j];imin=j;}
tmp=a[imin];a[imin]=a[i];a[i]=tmp;
}
cout<<"AQUI ESTÁ A TABELA ORDENADA :"<<endl;
for(i=0;i<N;i++)cout<<"a["<<i<<"]="<<a[i]<<endl;
retornar 0;
}
IV-H. Exercício8▲
Écrire un programme qui demande à l'utilisateur de taper 10 entiers qui seront stockés dans un
tableau. Le programme doit trier le tableau par ordre croissant et doit afficher le tableau.
Percorremos o array comparando t[0] e t[1] e trocando esses elementos se eles não estiverem
na ordem certa.
Recomeçamos o processo comparando t[1] e t[2]... e assim por diante até t[8] e t[9].
Fazemos quantas iterações forem necessárias até que o número de trocas seja zero: o
o tableau será então classificado.
Solução
#include<iostream>
usando o namespace std;
int main()
25
C++ SMP/SMC/S4
{
int a[N], i, nb, tmp;
para(i=0;i<N;i++)
cout << "Por favor, digite o número inteiro " << i << " : "; cin >> a[i];
fazer
{
nb=0;
for(i=0;i<N-1;i++)
if(a[i]>a[i+1])
{
tmp=a[i];a[i]=a[i+1];a[i+1]=tmp;
nb++;
}
}enquanto(nb!=0);
retornar 0;
}
IV-I. Exercício9▲
Escrever um programa que leia dois arrays de 10 inteiros a e b. c é um array de 20
inteiros. O programa deve colocar em c a fusão dos arrays a e b. Vamos copiar nos 10
primeiras casas de c o quadro a, nas últimas dez o quadro b. O programa exibe
em seguida, a tabela c.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[N],b[N],c[2*N],i;
26
C++ SMP/SMC/S4
for(i=0;i<2*N;i++)if(i<N)c[i]=a[i];else c[i]=b[i-N];
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[N],b[N],c[2*N],i,trie,indicea,indiceb;
trie=true;
i=0;
enquanto(trie && i<N-1)se(a[i]>a[i+1])trie=false; senão i++;
27
C++ SMP/SMC/S4
senão
se(a[indicea]<b[indiceb]){c[i]=a[indicea];indicea++;}
senão {c[i]=b[indiceb];indiceb++;}
}
}
}
retornar 0;
}
Adicionar um inteiro;
5. Desistir.
Haverá no máximo 10 inteiros. Quando se adiciona um inteiro, ele será adicionado ao final da lista.
Solução
#include<iostream>
usando namespace std;
enquanto(fini==falso)
{
cout<<"1. Adicionar um inteiro"<<endl;
28
C++ SMP/SMC/S4
for(i=0;i<nb;i++)cout<<t[i]<<
cout << endl;
}
quebrar;
case 5 : fini=true;
quebrar;
}
}
return 0;
}
1. Adicionar um inteiro;
5. Desistente.
29
C++ SMP/SMC/S4
Haverá no máximo 10 inteiros. A lista deverá estar sempre ordenada: quando adicionamos um
inteiro, ele será inserido no lugar certo na lista para que ela continue ordenada.
Solução
#include<iostream>
usando namespace std;
enquanto(fini==falso)
{
cout<<"1. Ajouter un entier"<<endl;
cout<<"2. Exibir a lista de inteiros"<<endl;
cout << "3. Remover o primeiro inteiro com um valor";
dado
cout<<"4. Remover todos os inteiros com um valor";
dado
cout << "5. Sair" << endl;
cout<<"Seu escolha : ";cin>>escolha;
switch(choix)
{
caso 1: se(nb<N)
{
cout << "Digite um inteiro: "; cin >> e;
i=0;
enquanto(i!=nb && t[i]<e)i++;
for(j=nb;j>i;j--)t[j]=t[j-1];
t[i]=e;
nb++;
}
senão cout<<"IMPOSSÍVEL O TABELA É"
CHEIO
quebrar;
for(i=0;i<nb;i++)cout<<t[i]<<" ";
cout << endl;
}
quebrar;
30
C++ SMP/SMC/S4
caso 5 : fini=true;
quebrar;
}
}
retornar 0;
}
linha 1 : 1 1
linha 2 : 1 2 1
linha 3 : 1 3 3 1
linha 4 : 1 4 6 4 1
Solução
#include<iostream>
31
C++ SMP/SMC/S4
int main()
{
int a[21],i,j,N;
cout<<"Por favor, digite N: ";cin>>N;
for(i=1;i<=N;i++)
{
se(i==1)a[0]=1;
a[i]=1;
for(j=i-1;j>=1;j--)a[j]=a[j]+a[j-1];
}
for(i=0;i<=N;i++)cout<<a[i]<<" ";
cout<<endl;
retornar 0;
}
Solução
#include<iostream>
usando o namespace std;
int main()
{
int a[10],nb[21],i;
para(i=0;i<10;i++)
{
faça {cout << "Por favor, digite o número inteiro " << i << " : "; cin >> a[i];}
enquanto (a[i]>20 || a[i]<0);
}
for(i=0;i<21;i++)nb[i]=0;
para(i=0;i<10;i++)nb[a[i]]++;
32
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
double t[N][M], moyL[N], moyC[M], moy;
int i,j;
para(i=0;i<N;i++)
for(j=0;j<M;j++)
{
Digite o valor da linha
cin>>t[i][j];
}
for(i=0;i<N;i++)moyL[i]=0;
for(j=0;j<M;j++)moyC[j]=0;
moy=0;
for(i=0;i<N;i++)
para(j=0;j<M;j++)
{
moyL[i]=moyL[i]+t[i][j];
moyC[j]=moyC[j]+t[i][j];
moy=moy+t[i][j];
}
for(i=0;i<N;i++)moyL[i]=moyL[i]/N;
for(j=0;j<M;j++)moyC[j]=moyC[j]/M;
moy=moy/(N*M);
para(i=0;i<N;i++)
{
for(j=0;j<M;j++)
cout<<t[i][j]<<" ";
cout<<moyL[i]<<endl;
}
para(j=0;j<M;j++)
cout<<moyC[j]<<" ";
cout<<endl;
retornar 0;
}
33
C++ SMP/SMC/S4
H
h
IacM
d
eV
O
.soq
d
u
rar▲
s/
V-A. Exercício1▲
Escrever uma função que tenha como parâmetros uma cadeia de caracteres (parâmetro de entrada) e um
inteiro e (parâmetro de saída). Esta função retorna um booleano. A função retorna verdadeiro se a
uma cadeia de caracteres é um inteiro escrito na forma de uma sequência de dígitos que não começa
passar por 0, ela retorna falso caso contrário. Se a cadeia estiver correta, a função retorna em e a
valor deste inteiro.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a;
char t[20];
V-B. Exercice 2▲
34
C++ SMP/SMC/S4
Escreva uma função que tenha como parâmetro uma cadeia de caracteres (parâmetro de entrada e em
saída) e que transforma todas as letras minúsculas da string em maiúsculas.
Solução
#include<iostream>
usando namespace std;
int main()
{
char a[50];
cout<<"Digite uma string, por favor:";cin>>a;
minmaj(a);
cout << "A cadeia final é:" << a << endl;
retornar 0;
}
V-C. Exercício3▲
Escrever uma função que tem como parâmetro uma cadeia de caracteres (parâmetro de entrada e de saída)
sortie) et qui supprime toutes les voyelles.
A frase pode conter espaços, mas deve ter menos de 80 caracteres incluindo o ''
- Si une voyelle a un accent, elle sera traitée comme une consonne (tout comme une voyelle
maiúscula).
Solução
35
C++ SMP/SMC/S4
#include <iostream>
usando o namespace std;
#include <conio.h>
//-------------------------------------------------------------------------
-----
int main()
{
int tamanho = 80;
char frase[modelo];
substituirVogal(frase);
cout << "aqui está a frase modificada: " << frase << endl;
cout << "Pressione uma tecla para sair do programa...";
getch();
retornar 0;
}
V-D. Exercício4▲
Escrever uma função que tem como parâmetros duas cadeias de caracteres ch1 e ch2 (parâmetros em
entrada) e retorna um booleano indicando se a string ch2 está contida na string ch1.
36
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
char a[50],b[50];
cout<<"Digite uma sequência, por favor:";
cin>>a;
cout << "Digite uma cadeia, por favor:";
cin >> b;
se(contém(a,b))cout<<"a primeira cadeia contém a segunda"<<endl;
senão cout << "a primeira cadeia não contém a segunda" << endl;
retornar 0;
}
V-E. Exercício5▲
Escrever um programa que peça ao usuário para digitar um verbo do primeiro grupo e que o
conjugue no indicativo presente.
Solução
37
C++ SMP/SMC/S4
#include<iostream>
usando namespace std;
int main()
{
char tt[20];
cout << "Digite um verbo do primeiro grupo: ";
cin>>tt;
int i;
i=strlen(tt);
se(i<=2 || tt[i-1]!='r' || tt[i-2]!='e')
cout<<"o verbo não é do primeiro grupo"<<endl;
senão
{
tt[i-2]='\0';
cout << "je " << tt << "e" << endl;
cout<<"tu "+tt+"es"<<endl;
cout<<"il "+tt+"e"<<endl;
cout << "nós " << tt << "ons" << endl;
cout<<"você "<<tt<<"ez"<<endl;
cout<<"ils "<<tt<<"ent"<<endl;
}
retornar 0;
}
V-F. Exercício6▲
Escrever um programa que recebe uma string que pode conter espaços e que exibe cada
mot da cadeia, o separador sendo o espaço.
O programa exibe:
mot 1 : je ;
mot 2 : pense ;
mot 3 : donc ;
eu
sou.
Solução
38
C++ SMP/SMC/S4
#include<iostream>
usando namespace std;
int main()
{
char t[50];
char mot[50];
int i=0,j=0,state=1,num=0;
enquanto(t[i]!='\0'){
se(estado==1)
{
se(t[i]!=' ')
{
state=2;j=0;mot[0]=t[i];j++;
}
}
caso contrário
{
se(t[i]!=' '){mot[j]=t[i];j++;}
senão
{
state=1;
num++;
mot[j]='\0';
cout << "mot " << num << " : " << mot << endl;
}
}
i++;
}
se(estado==2)
{
num++;
mot[j]='\0';
cout<< "mot " << num << " : " << mot << endl;
}
retornar 0;
}
V-G. Exercício7▲
Escrever um programa que pede ao usuário para digitar uma sequência de caracteres e que
indique se esta cadeia é um palíndromo ou não.
a manipulação de strings;
validação de uma cadeia.
39
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
char t[50];
int i,j;
bool palyn;
palyn=true;
cout << "Digite uma string: "; cin >> t;
i=0;
j=strlen(t)-1;
enquanto(palyn==verdadeiro && i<j)
se(t[i]!=t[j])palyn=false; else {i++;j--;}
V-H. Exercice 8▲
Escrever um programa que pede ao usuário para digitar uma cadeia de caracteres e que
exiba a letra (minúscula ou maiúscula) mais frequente.
Solução
#include<iostream>
usando namespace std;
int main()
{
char ch[50];
int t[52];
int i,max;
char cmax;
para(i=0;i<52;i++)t[i]=0;
40
C++ SMP/SMC/S4
i=0;
enquanto(ch[i]!='\0')
{
se(ch[i]>='A' && ch[i]<='Z')t[ch[i]-'A']++;
senão se(ch[i]>='a' && ch[i]<='z')t[ch[i]-'a'+26]++;
i++;
}
max=t[0];cmax='A';
para(i=1;i<52;i++)
se(max<t[i])
{
max=t[i];if(i<26)cmax=(char)(i+'A');
senão cmax=(char)(i-26+'a');
}
cout << "A letra mais frequente é: " << cmax << endl;
retornar 0;
}
VI. IHM/Estruturas▲
Escrever um programa que permita inserir as informações sobre N alunos sabendo que:
nom : chaine[10],
prenom : chaine[10],
note_ds : réel,
coef_ds : entier,
note_ex : réel,
moyenne : réel ;
média=((nota_ds*coef_ds+nota_ex*coef_ex)/(coef_ds+coef_ex)).
41
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
#include<cmath>
int main()
{
double x1,y1,x2,y2,d;
d=distância(x1,y1,x2,y2);
VII-B. Exercício2▲
Escrever uma função f que tenha como parâmetros um double x e um booleano OK e que retorne
un double par un return. La fonction renvoie par un return la racine carrée de (x-1)*(2-x). La
a função retorna através da variável OK o valor verdadeiro se a função estiver definida
no ponto x, falso senão. Testar esta função.
42
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
#include<cmath>
int main()
{
double x,y;
bool OK;
cout << "Digite x:"; cin >> x;
y=f(x,OK);
se(OK)cout<<"f(x) vale:"<<y<<endl;
senão cout << "x não está correto" << endl;
retornar 0;
}
VII-C. Exercício3▲
Escrever uma função f que tenha como parâmetro um inteiro e que retorne um booleano por um return:
verdadeiro se o inteiro é primo falso caso contrário. Testar esta função.
Solução
#include<iostream>
usando namespace std;
#include<cmath>
bool f(int x)
43
C++ SMP/SMC/S4
{
bool r=true;
int d=2;
enquanto(r && d*d<=x)se(x%d==0)r=false; senão d++;
retornar r;
}
int main()
{
int x;
bool premier;
faça{
cout<<"Digite x:";cin>>x;
}enquanto(x<=0);
premier=f(x);
se(premier)cout<<"x é primo"<<endl;
else cout<<"x não é primo"<<endl;
retornar 0;
}
VII-D. Exercício4▲
Escreva uma função f que tenha como parâmetro um inteiro n e que retorne o enésimo número
premier : esta função usará a função do 3). Testar esta função.
Solução
#include<iostream>
usando namespace std;
bool primeiro(int x)
{
bool r=true;
int d=2;
enquanto(r && d*d<=x)se(x%d==0)r=false; senão d++;
retornar r;
}
int Npremier(int N)
{
int nb=0;
int i=2;
enquanto(nb!=N)
{
se(premier(i))nb++;
i++;
44
C++ SMP/SMC/S4
}
retornar i-1;
}
int main()
{
int N,p;
cout<<"Digite o valor de N : ";cin>>N;
p=Npremier(N);
cout<<"O N-ésimo número primo é: "<<p<<endl;
retornar 0;
}
VII-E. Exercício5▲
Escrever uma função swap com dois inteiros a e b como parâmetros que troque os conteúdos
de a et de b. Tester cette fonction.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a,b;
cout<<"Digite a:";cin>>a;
cout<<"Digite b:";cin>>b;
trocar(a,b);
cout<<"a vale : "<<a<<endl;
cout << "b vale : " << b << endl;
retornar 0;
}
VII-F. Exercício6▲
45
C++ SMP/SMC/S4
Escrever uma função f que tenha como parâmetros um array t de tamanho qualquer e um inteiro n
indicando o tamanho da tabela. f deve retornar por um return um booleano b indicando se existe
um valor entre 0 e 10 nas n primeiras posições do array t. Testar isso
função.
escrita de uma função que tenha como parâmetro um array de tamanho qualquer;
pesquisa de um elemento em um array verificando uma propriedade;
utilização de return.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[10];
sair(a,10);
bool b;
b=f(a,10);
if(b)cout<<"Existe um valor entre 0 e 10"<<endl;
senão cout << "Não existem valores entre 0 e 10" << endl;
retornar 0;
}
VII-G. Exercício7▲
Escrever uma função f que tenha como parâmetros um array t de tamanho qualquer e um inteiro n
indicando o tamanho da tabela. f deve retornar pelo return o número de valores contidos
entre 0 e 10 nas n primeiras posições do array t. Testar esta função.
46
C++ SMP/SMC/S4
escrita de uma função que tem como parâmetro um array de tamanho qualquer;
contar o número de elementos em um array que verificam uma propriedade;
utilização de return.
Solução
#incluir<iostream>
usando namespace std;
int main()
{
int a[10];
sair(a,10);
int x;
x=f(a,10);
cout << "Há " << x << " valor(es) entre 0 e 10" << endl;
retornar 0;
}
VII-H. Exercício8▲
Escrever uma função f que tenha como parâmetros um array t de tamanho qualquer e um inteiro n
indicando o tamanho da matriz. f tem um outro parâmetro v, inteiro passado por referência. f deve
retornar um booleano b indicando se existe um valor entre 1 e 10
nas n primeiras casas da tabela t. Se f retornar verdadeiro, v é igual ao valor da primeira
caso da tabela compreendido entre 0 e 10. Testar esta função.
escrita de uma função que tem como parâmetro um array de tamanho qualquer;
47
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[10];
bool b;
int w;
sair(a,10);
b=f(a,10,w);
se(b)cout << "Existe uma valor entre 0 e 10: " << w << " é o primeiro de ";
ces valeurs.
senão cout << "Não existem valores entre 0 e 10" << endl;
retornar 0;
}
VII-I. Exercício9▲
Escrever uma função f que tenha como parâmetros um array t1 de tamanho qualquer e um inteiro n
indicando o tamanho da tabela, assim como uma tabela t2 do mesmo tamanho que t1. f deve retornar
por um retorno um inteiro nb indicando o número de valores compreendidos entre 0 e 10 no
tabela t1. f deve colocar na tabela t2 os diferentes valores entre 0 e 10 que ele
a encontradas na tabela t1.
escrita de uma função que tem como parâmetro um array de tamanho qualquer;
extração de uma sub-lista de elementos;
48
C++ SMP/SMC/S4
utilização de return.
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[10],b[10];
int nb;
saisir(a,10);
nb=f(a,10,b);
cout << "AQUI ESTÃO OS VALORES ENTRE 0 E 10 : " << endl;
exibir(b, nb);
retornar 0;
}
49
C++ SMP/SMC/S4
Solução
#include<iostream>
usando namespace std;
int main()
{
int a[10];
int w;
sair(a,10);
w=f(a,10);
se(w!=-1)cout<<"Existe uma valor entre 0 e 10. "
o índice da primeira caixa é
senão cout<<"Não existem valores entre 0 e 10"<<endl;
retornar 0;
}
50