Mostrando postagens com marcador Vetores. Mostrar todas as postagens
Mostrando postagens com marcador Vetores. Mostrar todas as postagens

quarta-feira, 7 de março de 2012

Vetores Vazios em C

Fala galera tudo bom?
vou passar um questionamento de C que fiz ao professor da minha disciplina

Opa tudo bom?
Eu estou com uma dúvida em C que está me tirando o sono, já pensei, procurei e não encontrei como verificar se uma posição do vetor está vazio ou ainda não foi declarado, em java, php e python e bem simples mais em C ainda não achei

Observe que não existe, a princípio a posição vazia.
Minha sugestão: ao iniciar o vetor, coloque um valor inválido, exemplo -1. Desta forma, você pode verificar se a posição é igual a -1, ou seja, ainda não tem valor válido.

Outra resposta sobre vetores de char

Vamos supor um array de char de 10 posicoes. O nome dele será vetor:

char vetor[10];

/* Nesse momento, o espaço (10 chars) foi alocado na area de memoria estática. */
/* Neste instante, quando será o conteúdo do array? LIXO. */

/* De praxe, você deve inicializar essa área de memória com um conteúdo que, para você, é o "VAZIO". Abaixo, vou inicializar cada posição com 'espacos em branco' */

memset(vetor, ' ', 10); /* 1o.parametro: o endereço da primeira posição; 2o.parâmetro: qual o char que preencherá cada posição; 3o. parâmetro: quantos bytes serão preenchidos) */

/* Aí, para saber se uma posição está vazia, é só ver o seu conteudo: */
if(vetor[3] == ' ')
{
// Está vazia!
}

/****************************/

Enfim: você inicializa as posições do array com o que quer você considere como vazio. Aí você usa o vetor, grava valores em suas posições. Para saber se uma posição do array está vazia, faça um simples teste como o acima.

segunda-feira, 24 de outubro de 2011

Vetores em C

/* Fazer um programa para contar o número de espaços em brancos de uma string.  */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
char s[20];
int i, quant;
quant = 0;
printf("Digite uma string: ");
scanf("%[^\n]",s);
printf("String digitada: %s\n",s);
 
for (i=0; s[i] != '\0' ;i++){
char ch;
ch = s[i];
if (ch == ' '){
quant += 1;
}
}
 
printf("Quantidade de espacos digitados: %d",quant);
return 0;
}




/* Refaça o programa anterior criando uma função que receberá como parâmetro a string e
retornará o número de espaços em branco que a string contem.   */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int emBranco (char s[]) {
int i = 0, quant = 0;
for (i=0; s[i] != '\0' ;i++){
char ch;
ch = s[i];
if (ch == ' '){
quant += 1;
}
}
 
printf("Quantidade de espacos digitados: %d",quant);
return 0;
}
int main(){
char s[25];
int i, quant;
quant = 0;
printf("Digite uma string: ");
scanf("%[^\n]",s);
printf("String digitada: %s\n",s);
emBranco(s);
 
 
return 0;
}




/* Fazer um programa para contar o número de vogais numa cadeia de caractere.  */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
char s[40];
int numVogais, i;
char *vogais;
printf("Digite uma string: ");
scanf("%[^\n]",s);
vogais = "aeiouAEIOU";
numVogais = 0;
for (i = 0; s[i] != '\0'; i++) {
char ch;
int j;
ch = s[i];
for (j = 0; vogais[j] != '\0'; j++) {
if (vogais[j] == ch) {
numVogais += 1;
break;
}
}
}
printf("Quantidade de vogais digitados: %d",numVogais);
 
 
return 0;
}




/* Refaça o programa anterior criando uma função que receberá como parâmetro a string e
retornará o número de vogais que a string contem.   */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
int countVogais (char s[]) {
char *vogais;
int numVogais, i;
 
vogais = "aeiouAEIOU";
numVogais = 0;
for (i = 0; s[i] != '\0'; i++) {
char ch;
int j;
ch = s[i];
for (j = 0; vogais[j] != '\0'; j++) {
if (vogais[j] == ch) {
numVogais += 1;
break;
}
}
}
return numVogais;
}
 
 
 
int main()
{
char s[40];
int valor;
printf("Digite uma string: ");
scanf("%[^\n]",s);
valor=countVogais(s);
printf("Quantidade de vogais digitados: %d",valor);
 
 
return 0;
}



/*Escrever um programa para ler uma string (com mais de uma palavra) e faça com que a
primeira letra de cada palavra fique em maiúscula. Para isso, basta subtrair 32 do elemento
que deseja alterar para maiúsculo. chrNome[0] = chrNome[0] – 32;
Exemplo:
Entrada: lab. de linguagem de programacao
Saída: Lab. De Linguagem De Programacao  */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
char s[40];
int i;
 
printf("Digite uma string: ");
scanf("%[^\n]",s);
printf("String digitada: %s\n",s);
 
for (i=0; s[i] != '\0' ;i++){
char ch;
ch = s[i];
if (ch == s[0]){
s[i] = s[i] - 32;
}
 
if (ch == ' '){
s[i+1] = s[i+1] - 32;
}
}
printf("String digitada concertada: %s",s);
 
 
return 0;
}

Vetores númericos

/*Dada um tabela contendo a idade de 10 alunos, faça um algoritmo que calcule o número de
alunos com idade superior a média.
*/
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int v[10];
int i, soma, count;
float media;
soma = 0;
count = 0;
 
for (i=0; i < 10; i++){
printf("Digite a nota %d\n",i+1);
scanf("%d", &v[i]);
soma = soma + v[i];
}
media = ((float)soma)/ 10.0;
 
for (i=0; i < 10; i++){
if (media < ((float)v[i])){
count = count + 1;
}
}
 
printf("Media: %f\n", media);
printf("Quantidade de Alunos com nota maior que a media: %d\n", count);
 
 
return 0;
}




/*Dada um tabela contendo a idade de 10 alunos, faça um algoritmo que calcule o número de
alunos com idade superior a média.
*/
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
int v1[10], v2[10];
int i, soma1, soma2;
 
soma1 = 0;
soma2 = 0;
 
for (i=0; i < 10; i++){
printf("Digite o valor do vetor1 na posicao %d\n",i+1);
scanf("%d", &v1[i]);
soma1 = soma1 + v1[i];
}
printf("A Soma dos valores do primeiro vetor e: %d\n\n", soma1);
 
for (i=0; i < 10; i++){
printf("Digite o valor do vetor2 na posicao %d\n",i+1);
scanf("%d", &v2[i]);
soma2 = soma2 + v2[i];
}
printf("A Soma dos valores do primeiro vetor e: %d\n\n", soma2);
 
printf("A Soma Total e: %d\n", soma1+soma2);
 
 
return 0;
}