Para efeitos de nota atribuída à resolução de exercícios ao longo do semestre, os exercícios que pode submeter desta aula são os seguintes exercícios, que fazem parte do conjunto de exercícios das últimas duas aulas práticas:
Prazo de submissão: DD de Abril (submeter no Mooshak de Programação Imperativa)
É encorajado que falem com os docentes e outros colegas se tiverem dificuldades. No entanto, qualquer ajuda mais direta que tenham recebido de outros colegas deve ser reconhecida nos comentários do programa que submetem.
Depois do prazo os problemas continuarão disponíveis no Mooshak, mas as submissões não contarão para a sua nota.
Cada aula vale 10% da nota desta componente.
Para um problema contar tem de acertar todos os testes (ou seja, ter accepted). Mesmo que resolva todos os problemas, o máximo numa aula é de 100%.
Para ter 100% bastará sempre resolver os exercícios principais.
p = i;
*p = i;
p = &q;
p = &i;
&i = p;
p = q;
p = *q;
*p = q;
*p = *q;
printf("%d",i);scanf("%d",i);scanf("%d",&i);printf("%d",p);printf("%d",*p);scanf("%d",p);printf("%p",p);printf("%p",i);printf("%p",*p);int a[] = {5, 15, 34, 54, 14, 2, 52, 72};
int *p = &a[1], *q = &a [5] ;
middle = (low + high) / 2;
void storezeros(int a[], int n){
int i ;
for (i = 0; i < n; i++)
a[i] = 0 ;
}
int sumTwoDimensionalArray(const int a[][LEN], int n) {
int i, j, sum = 0;
for (i = 0 ; i < n; i++)
for (j = 0; j < LEN; j++)
sum += a[i][j];
return sum;
}
void decompose(int totalSegs, int *horas, int *mins, int *segs);Dado um valor totalSegs com o total de segundos, a função decompõe este avor em horas, minutos (0-59) e segundos (0-59); os resultados devem ser atribuídos ao conteúdo dos apontadores horas, mins e segs. Pode assumir que o total de segundos é maior que zero.
void twoLargest(int vec[], int size, int *pmax1, int *pmax2);Dado uma sequência de valores inteiros representada pelo array vec[] com tamanho size, a função deve determinar os dois maiores valores da sequência; os resultados devem ser atribuídos às posições apontadas por pmax1 e pmax2. Pode assumir que size é sempre maior que um.
void reverse(char *str);
char *occursAt(char *str, char ch);O resultado deve ser um apontador para a primeira ocorrência do caracter ch (se este ocorrer) ou NULL caso contrário.
char *strcat(char s1[], char s2[]);que concatena a string s2 a s1 e retorna o endereço da primeira string.
char *strcpy (char *dest, char source[]);que copia a string source para a string dest e retorna o valor desta última.
int strcmp(char s1[], char s2[]);que compara (lexicograficamente) duas strings. O resultado da função deverá ser o seguinte:
char *strstr(char s1[], char s2[]);que determina a posição onde a string s2 ocorre na string s1. A função deverá retornar NULL caso s2 não ocorra em s1.
void truncW(char text[], int n);em que a string text é composta por múltiplas palavras (as palavras estão separadas por um ou mais espaços) e um inteiro n, a função trunca todas as palavras de forma a terem no máximo n caracteres.
char text[] = "universidade, faculdade e fraternidade"; truncW(text, 4); // text deverá ser "univ facu e frat"Nota: a palavra "e" tem apenas 1 caracter (1 < 4) e por isso permanece igual (isto é, não é truncada).
int remConsecutives(char s[]);em que dada uma string s, a função remove todos os carateres repetidos, produzind uma substring da string original em que os caracteres são todos diferentes.
int result = remConsecutives("aabcccaac"); // result deverá ser 3, correspondente à substring "abc"
int triSup(int N, float m[N][N]);que verifique se uma dada matriz quadrada é triangular superior, i.e., se todos os elementos abaixo da diagonal são zeros.