Category: programação (C)

Guião laboratorial n.º 0 – exercício 12

“Desenvolva uma função que elimine os espaços em branco supérfluos que poderão existir entre palavras de uma string recebida como argumento.”

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TAM 100
void vazio(char s[TAM]){
int i,conta=0,e=0;
conta=strlen(s);

for(i = 0; i<conta; i++){
  if(s[i] != ' ' && s[i] != '\0'){
    printf("%c", s[i]);
    e=0;
 }
  if(e==0 && s[i] == ' '){
    printf(" ");
 }
 if(s[i] == ' '){
    e++;
 }
}
printf("%d", e);
}


int main ()
{
    char texto[TAM]="1  467 6       4  1 ";
    vazio(texto);

return 0;
}

Tags :

Guião laboratorial n.º 0 – exercício 11

“Desenvolva uma função que verifique se uma string recebida como argumento armazena uma capicua. A função devolve 1 se isso se verificar ou 0 no caso contrário.”
nota: LINK

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TAM 100

int capicua(char s[TAM]){
int i,conta=0, e=0;
conta=strlen(s);

for(i = 0; i<conta; i++, conta--){
  if(s[i] != '\0'){
    if(s[i] == s[conta-1])
    {
      printf("\n%c - %c", s[i],s[conta-1]);
    }else{
    e++;
    }
  }
}
if(e>0){
    return 0;
  }else{
    return 1;
  }

}

int main ()
{
    char texto[TAM]="1467641";
    if(capicua(texto)){
        printf("\ntemos capicua!");
    }else{
        printf("\nnao temos capicua!");
    }
return 0;
}


Tags :

Guião laboratorial n.º 0 – exercício 10

“Desenvolva uma função que, após receber uma string como argumento, escreva cada uma das palavras que a constituem numa linha separada. Considere que as palavras estão separadas por um ou mais espaços em branco, podendo também existir espaços no início e fim da frase. Se a string passada por argumento for: Hoje e Domingo!
No monitor deve surgir:
Hoje
e
Domingo!

#include <stdio.h>
#include <stdlib.h>

#define TAM 100

void comes(char s[TAM]){
int i,conta=0, e=1;

conta=strlen(s);

for(i = 0; i<conta; i++){
 if(s[i] != ' ' && s[i] != '\0'){
    printf("%c", s[i]);
    e=0;
 }
  if(e==0 && s[i] == ' '){
    printf("\n");
 }
 if(s[i] == ' '){
    e++;
 }
}

}

int main ()
{
    char texto[TAM]="   Ola  vamos         programar!  ";
    comes(texto);
return 0;
}


Tags :

Guião laboratorial n.º 0 – exercício 9

“Desenvolva uma função que receba uma string como argumento (i.e., um vetor contendo uma sequência de caracteres terminada com ‘\0’) e que a escreva invertida no monitor. Se a string passada por argumento for: Hoje e Domingo! No monitor deve surgir: !ognimoD e ejoH

#include <stdio.h>
#include <stdlib.h>

#define TAM 100

void inverter(char s[TAM]){
int i,conta=0,aux2=0;
char aux[TAM];

conta=strlen(s);
aux2=conta;

for(i = conta-1, aux2=0; i>=0; i--, aux2++){
    aux[aux2]=s[i];
    conta--;
}
aux[aux2]= '\0';

printf("%s\n", aux);

}

int main ()
{
    char texto[TAM]="Ola viva programar!";
    inverter(texto);
return 0;
}


+ajudas: LINK

Tags :

Guião laboratorial n.º 0 – exercício 8

“Um quadrado mágico é uma matriz 3×3 contendo valores entre 1 e 9 (sem repetições), de tal forma que a soma dos elementos de qualquer uma das linhas, colunas e diagonais é sempre igual. A figura seguinte mostra um exemplo de um quadrado mágico:
6 1 8
7 5 3
2 9 4
desenvolva uma função que verifique se uma matriz 3×3 passada como argumento é um quadrado mágico. A função devolve 1 se isso se verificar ou 0 no caso contrário.”

#include <stdio.h>
#include <stdlib.h>

#define LINHAS 3
#define COLUNAS 3
#define TAM 9

int quadradomagico(int v[TAM]){
int i,j, conta=0, vector[LINHAS][COLUNAS];

//preencher e mostrar
for(i=0; i<LINHAS ; i++){
        for(j=0; j<COLUNAS && conta < 10; j++){
        vector[i][j]=v[conta];
        conta++;
}}
printf("\n conta  %d\n", conta);
for(i=0; i<LINHAS; i++){
        for(j=0; j<COLUNAS; j++){
        printf("%d",vector[i][j]);
}
printf("\n");
}
return 0;
}

int main ()
{
    int dados[TAM]={6,1,8,7,5,3,2,9,4};
    quadradomagico(dados);
return 0;
}


Tags :

Guião laboratorial n.º 0 – exercício 7

“Desenvolva uma função que preencha uma matriz 10×3 da seguinte forma: em cada uma das linhas, a primeira coluna deve ficar com um inteiro entre 1 e 100 introduzido pelo utilizador, a segunda coluna com o quadrado deste valor e a terceira com o cubo. Durante o preenchimento deve garantir que não existem repetições nos valores da primeira coluna. Antes de terminar, a função deve apresentar o conteúdo completo da matriz no monitor e indicar quantas posições têm valores superiores a 1000.”

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define LINHAS 10
#define COLUNAS 3

void matrix(){
int vector[LINHAS][COLUNAS];
int conta=0, aux=0, i, verifica=0, superiroes=0;

//preencher a primeia coluna
do{
    printf("\nIntroduza o %d de %d: ", conta, LINHAS);
    scanf("%d", &aux);
    vector[conta][0]=aux;
   for(i=0; i<=conta; i++){
        if(aux==vector[i][0]){
            verifica++;
        }
   }
   if(verifica<2){
        vector[conta][1]=vector[conta][0]*vector[conta][0];
        vector[conta][2]=vector[conta][0]*vector[conta][0]*vector[conta][0];
        printf("\nvalor v: %d foi inserido e (^2)%d e (^3)%d",vector[conta][0],vector[conta][1],vector[conta][2]);
        conta++;
        verifica=0;
   }else{
   verifica=0;
   }

}while(conta<10);

for(i=0; i<LINHAS; i++){
    printf("\n%d \t%d \t%d",vector[i][0],vector[i][1],vector[i][2]);
    if(vector[i][0] >1000){
        superiroes++;
    }
    if(vector[i][1] >1000){
        superiroes++;
    }
    if(vector[i][2] >1000){
        superiroes++;
    }

}

printf("\n\ntotal de numeros maiores que 1000: %d", superiroes);

}


int main ()
{
matrix();
return 0;
}


Tags :

Guião laboratorial n.º 0 – exercício 6

“Desenvolva uma função que calcule e devolva o desvio padrão de um conjunto de valores inteiros indicados pelo utilizador. A função recebe como argumento o número de valores a considerar. O desvio padrão de um conjunto de N valores (x1, x2, …, x) é calculado através da seguinte fórmula, em que X representa a média dos valores:”

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define TAM 10

float desvio_padrao(int v[TAM], int e){
float desviop=0;
float media=0,somatorio=0,aux=0;
int soma=0, i=0;

for(i=0; i<e; i++ ){
       soma=soma+v[i];
}

media=soma/e;

for(i=0; i<e; i++ ){
       somatorio=somatorio+((float)v[i]-media)*((float)v[i]-media);
}
aux=somatorio/e;
desviop=sqrt(aux);

return desviop;
}


int main ()
{
int vector[TAM];
int elementos,i;
printf("Quantos elementos tem o conjunto (max %d):", TAM);
scanf("%d",&elementos);
if(elementos<TAM){
        for(i=0; i<elementos;i++){
           printf("\nQual o numero do conjunto para a posicao %d: ", i);
           scanf("%d", &vector[i]);
        }

     printf("\a\no desvio padrao vem: %f", desvio_padrao(vector, elementos));
}else{
     printf("nao foi possivel calcular");

}


return 0;
}

Tags :

Guião laboratorial n.º 0 – exercício 5

“Desenvolva uma função que encontre o segundo maior elemento armazenado num vetor de inteiros. A função recebe como argumentos o nome e a dimensão do vetor. Devolve como resultado o segundo maior valor existente no vetor. Pode assumir que o vetor recebido não contém elementos repetidos.”

#include <stdio.h>
#include <stdlib.h>

#define TAM 10

int funcao1(int v[TAM], int t){
int maior=v[0],maior2=v[0];
int vector_sem_maior[TAM];
int i;

//vou procurar o maior
for(i=0; i<t; i++){
    if(v[i]>maior)
    {
        maior=v[i];
    }
}

//vou preencher um vetor auxilar sem o maior
for(i=0; i<t; i++){
    if(v[i]!=maior)
    {
        vector_sem_maior[i]=v[i];
    }else{
        vector_sem_maior[i]=0;
    }
}

//vou procurar o segundo maior
for(i=0; i<t; i++){
    if(vector_sem_maior[i]>maior2)
    {
        maior2=vector_sem_maior[i];
    }
}

return maior2;
}

int main()
{
    int vector[TAM]={0,1,20,3,4,5,6,7,8,29};
    printf("o segundo maior vem: %d", funcao1(vector, TAM));
    return 0;
}


Tags : ,

Guião laboratorial n.º 0 – exercício 4

“Desenvolva uma função que descubra qual o elemento que surge mais vezes num vetor de inteiros. A função recebe como argumentos o nome e a dimensão do vetor. Devolve como resultado o elemento mais comum do vetor (i.e., o que surge mais vezes). Se existirem vários elementos mais comuns, a função deve devolver o maior deles. ”

#include <stdio.h>
#include <stdlib.h>

#define TAM 10

int funcao1(int v[TAM], int t){
int i,j,conta=0;
//para guardar a informação acerca das repetições
int aux[TAM];
int maior=0;
int omaisC=aux[0];
int posicao_m=0;

for(i=0; i<TAM; i++){
    for(j=0; j<TAM; j++){
    if(v[i]==v[j]){
        conta++;
    }
    }
    aux[i]=conta;
    printf("%d ",  aux[i]);
    conta=0;
}

for(i=0; i<TAM; i++){
    if(aux[i]>maior)
    {
    maior=aux[i];
    posicao_m=i;

    }
}
    printf("\no maior vem na posicao do vetor %d ",  posicao_m);
    omaisC=v[posicao_m];

return omaisC;
}

int main()
{
    int vector[TAM]={1,1,12,12,4,10,10,10,9,9};
    printf("\a \no mais comum vem: %d", funcao1(vector, TAM));
    return 0;
}


Tags : ,

Guião laboratorial n.º 0 – exercício 3

“Desenvolva uma função que conte quantas vezes surge o maior elemento num vetor de inteiros. A função recebe como argumentos o nome e a dimensão do vetor. Devolve como resultado o número de vezes que o maior elemento surge no vetor.”

#include <stdio.h>
#include <stdlib.h>

#define TAM 10

int funcao1(int v[TAM], int t){
int maior=v[0];
int total=0;
int i;

for(i=0; i<t; i++){
    if(v[i]>maior)
    {
        maior=v[i];
    }
}

for(i=0; i<t; i++){
    if(v[i]==maior)
    {
        total=total+1;
    }
}


return total;
}

int main()
{
    int vector[TAM]={0,1,25,3,4,25,20,7,8,27};
    printf("o maior vem: %d", funcao1(vector, TAM));
    return 0;
}


Tags : ,

Guião laboratorial n.º 0 – exercício 2

“Desenvolva uma função encontre o maior elemento armazenado num vetor de inteiros. A função recebe como argumentos o nome e a dimensão do vetor. Devolve como resultado a posição em que se encontra o maior valor existente no vetor. Se o maior valor surgir várias vezes no vetor, a função devolve a primeira posição em que ele ocorre.”

#include <stdio.h>
#include <stdlib.h>

#define TAM 10

int funcao1(int v[TAM], int t){
int maior=v[0];
int posicao=0;
int i;

for(i=0; i<t; i++){
    if(v[i]>maior)
    {
        maior=v[i];
        posicao = i;
    }
}

return posicao;
}

int main()
{
    int vector[TAM]={0,1,20,3,4,25,20,7,8,9};
    printf("o maior vem: %d", funcao1(vector, TAM));
    return 0;
}
Tags : ,

Guião laboratorial n.º 0 – exercício 1

“Desenvolva uma função que encontre o maior elemento armazenado num vetor de inteiros. A
função recebe como argumentos o nome e a dimensão do vetor. Devolve como resultado o maior
valor existente no vetor.”

 

#include <stdio.h>
#include <stdlib.h>

#define TAM 10

int funcao1(int v[TAM], int t){
int maior=v[0];
int i;

for(i=0; i<t; i++){
    if(v[i]>maior)
    {
        maior=v[i];
    }
}

return maior;
}

int main()
{
    int vector[TAM]={0,1,20,3,4,5,6,7,8,9};
    printf("o maior vem: %d", funcao1(vector, TAM));
    return 0;
}

Tags : ,