// ILP-010 (Prof. Dr. Silvio do Lago Pereira) //------------------------------------------------------------ // Exemplo 1 //------------------------------------------------------------ #include int main(void) { int v=5, *p; p = &v; printf("Valor guardado: %P\n",p); printf("Valor apontado: %d\n",*p); return 0; } //------------------------------------------------------------ // Exercicio 1 //------------------------------------------------------------ #include int main(void) { char x = 'A'; char *p = &x; *p = *p + 3; printf("%c\n",x); return 0; } //------------------------------------------------------------ // Exercicio 2 //------------------------------------------------------------ #include int main(void) { float x=2.0, y=3.5; float *p=&x, *q=&y; printf("%.1f\n",*p**q); return 0; } //------------------------------------------------------------ // Exemplo 2 //------------------------------------------------------------ #include void troca(int p,int q) { int x = p; p = q; q = x; } int main(void) { int a=5, b=3; troca(a,b); printf("a=%d b=%d\n",a,b); return 0; } //------------------------------------------------------------ // Exemplo 3 //------------------------------------------------------------ #include void troca(int *p,int *q) { int x = *p; *p = *q; *q = x; } int main(void) { int a=5, b=3; troca(&a,&b); printf("a=%d b=%d\n",a,b); return 0; } //------------------------------------------------------------ // Exercicio 3 //------------------------------------------------------------ #include int main(void) { int v[5] = {26,55,89,14,77}; int min, max, minimax(v,5,&min,&max); printf("Min: %d\n",min); printf("Max: %d\n",max); return 0; } //------------------------------------------------------------ // Exemplo 4 //------------------------------------------------------------ #include int main(void) { int v = 5; printf("Endereco de v: %P\n",&v); printf("Valor de v: %d\n",*(&v)); return 0; } //------------------------------------------------------------ // Exemplo 5 //------------------------------------------------------------ #include int main(void) { int v[3] = {55,79,46}; printf("Endereco do vetor: %P\n",v); printf("Valor no endereco: %d\n",*v); return 0; } //------------------------------------------------------------ // Exemplo 6 //------------------------------------------------------------ #include int main(void) { printf("Endereco da cadeia: %P\n","UM"); printf("Valor no endereco: %c\n",*"UM"); return 0; } //------------------------------------------------------------ // Exemplo 7 //------------------------------------------------------------ #include void exibe(int *p,int n) { for(int i=0; i int main(void) { int v[5] = {27,55,18,34,47}; int *p = v, *q = v+3; printf("v : %P\n",v); printf("p : %P\n",p); printf("q : %P\n",q); printf("p+1: %P\n",p+1); printf("q-1: %P\n",q-1); printf("q-p: %ld\n",q-p+1); return 0; } //------------------------------------------------------------ // Exemplo 9 //------------------------------------------------------------ #include void putstr(char *s) { while( *s ) { putchar(*s); s++; } } int main(void) { putstr("Oi!\n"); return 0; } //------------------------------------------------------------ // Exercicio 4 //------------------------------------------------------------ #include int main(void) { printf("%d\n",len("teste")); return 0; } //------------------------------------------------------------ // Exercicio 5 //------------------------------------------------------------ #include int main(void) { float v[3] = {2.5,1.5,3.0}; printf("%.1f\n",soma(v,3)); return 0; } //------------------------------------------------------------ // Exemplo 10 //------------------------------------------------------------ #include char *pos(char c,char *s) { while( *s && *s!=c ) s++; return (*s ? s : NULL); } int main(void) { char *s = "banana"; printf("Endereco do vetor.: %P\n",s); printf("Posicao da letra n: %P\n",pos('n',s)); printf("Posicao da letra x: %P\n",pos('x',s)); return 0; } //------------------------------------------------------------ // Exemplo 11 //------------------------------------------------------------ #include double media(int n,...) { double s = 0; double *p = (double *)(&n + 1); for(int i=0; i typedef struct { int x; int y; } Ponto; void move(Ponto *q,int dx,int dy) { (*q).x += dx; (*q).y += dy; } int main(void) { Ponto p = {30,44}; move(&p,1,-4); printf("Posicao: %d,%d\n",p.x,p.y); return 0; } //------------------------------------------------------------ // Exemplo 13 //------------------------------------------------------------ #include typedef struct { int x; int y; } Ponto; void move(Ponto *q,int dx,int dy) { q->x += dx; q->y += dy; } int main(void) { Ponto p = {30,44}; move(&p,1,-4); printf("Posicao: %d,%d\n",p.x,p.y); return 0; } //------------------------------------------------------------ // Exemplo 14 //------------------------------------------------------------ #include #include int main(void) { double (*p)(double); p = sqrt; printf("Raiz: %f\n",p(9)); return 0; } //------------------------------------------------------------ // Exemplo 15 //------------------------------------------------------------ #include int cres(int x,int y) { return (x>y); } int decr(int x,int y) { return (x int main(void) { Func v[5] = {{561,"Eva Maranhao",9200.00}, {295,"Ana Teixeira",6100.00}, {473,"Denise Lagoa",8500.00}, {102,"Catia Telles",7300.00}, {384,"Beatriz Lira",5400.00}}; printf("Ordenar por 1-codigo, 2-nome ou 3-salario? "); switch( getchar() ) { case '1': ordena(cmp_c,v,5); break; case '2': ordena(cmp_n,v,5); break; case '3': ordena(cmp_s,v,5); break; } puts("Tabela ordenada:"); exibe(v,5); return 0; }