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.
Diário sobre as diversas coisas de Tecnologia, esportes, educação física e guia para estudos
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
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 eretornará 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 eretornará 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 aprimeira letra de cada palavra fique em maiúscula. Para isso, basta subtrair 32 do elementoque deseja alterar para maiúsculo. chrNome[0] = chrNome[0] – 32;Exemplo:Entrada: lab. de linguagem de programacaoSaí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 dealunos 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 dealunos 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;}
Assinar:
Comentários (Atom)