newnoob Postado Março 25, 2011 Denunciar Share Postado Março 25, 2011 galera tenho uma questo que não consigo resolve:Seja um texto contendo vários nomes armazenado em uma matriz 30 X40, onde cada linha da matriz contém um nome completo de umapessoa. As palavras de cada nome são separadas por um espaçobranco, sendo que o último sobrenome é seguido por um ‘’.Fazer um programa contendo as seguintes funções:a) leitura(): ler todos os nomes completos, armazenando-os namatriz.B) ord_mat(): ordena a matriz de nomes completos.c) maior_nome(): imprime o maior nome, caso tenha empate, deveimprimir todos os maiores nomes.d) armaz_prim_nome(): percorrer a matriz de nomes e armazenar oprimeiro nome de cada pessoa em um vetor de estruturas, bemcomo o índice da linha da matriz onde este apareceu e o númerode ocorrências do nome recebe 1. IMPORTANTE: Caso oprimeiro nome já tenha aparecido antes (ex. Ana Maria Cruz eAna Paula de Oliveira), não deve ser armazenado novamente,porém a linha da matriz onde este aparece deve ser armazenadae o número de ocorrências deve ser incrementado. Supor quecada nome aparece no máximo 10 vezes.e) proc_nome(): le um primeiro nome (ex. José) e imprime o nomecompleto de todas as pessoas que iniciam com esse nome (ex.:José da Silva, José de Alencar, José Augusto dos Anjos, etc.).f) maior_ocorr(): imprime o primeiro nome que mais apareceu notexto, se houver empate, deve imprimir todos.Observações:· A definição da estrutura prim_nome é a seguinte:struct prim_nome{char pnome[11]; // primeiro nomeint linhas[10]; // linhas onde ocorre primeiro nomeint n_ocor; // número de ocorrências do primeiro nome};· A declaração do vetor de primeiros nomes é: struct prim_nomevet_nome[30];· Utilize as funções para manipulação de strings definidas em string.h.vo posta o codigo aqui paravcs verem o que eu já consegui faze e ver se alguém consegue faze ele funciona, to deseperado, por favor me ajudem.#include <stdlib.h>#include <stdio.h>#include <string.h>typedef struct { char pnome[11]; int linhas[11]; int n_ocor;}prim_nome; void leitura(){ char string [30] [40]; int i=0; prim_nome vet_nome[30]; char resp,s; for (i = 0; i < 30; i++){ printf ("\nDigite um o nome da %da pessoa:", i + 1); scanf ("%s", &vet_nome[30].pnome); printf ("\nDigite o sobrenome da %da pessoa:"); scanf ("%s",&string[30]); strcat (vet_nome[30].pnome,string); system ("cls"); printf ("deseja inserir mais nomes? s/n?"); scanf ("%s", &resp); if (resp == 's') scanf ("%s", &string); else { printf ("\nFim da coleta de nomes!"); i=30; } } printf ("\nOs nomes que voce digitou foram:\n"); for (i = 0; i < 30; i++){ printf ("\n%s", string); } } void ord_mat(int matriz[], int tam){ char string[30] [40]; int temp, i, j; for(i = 0; i < tam; i++){ for(j = 0; j < tam; j++){ if(matriz < matriz[j]){ temp = matriz; matriz = matriz[j]; matriz[j] = temp; } } }} void maior_nome(){ char string [30] [40]; int ordem = strlen (string); } int main() { int i = 0; leitura (); ord_mat(valores, tamanho); puts("\n"); for(i = 0; i < 30; i++){ printf("%d ", valores); } system ("pause"); } int strcmp (char *string, char *string[i+1])desde já agradeço a vocês, o melhor forum da netvlw mesmo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
newnoob
galera tenho uma questo que não consigo resolve:
Seja um texto contendo vários nomes armazenado em uma matriz 30 X
40, onde cada linha da matriz contém um nome completo de uma
pessoa. As palavras de cada nome são separadas por um espaço
branco, sendo que o último sobrenome é seguido por um ‘’.
Fazer um programa contendo as seguintes funções:
a) leitura(): ler todos os nomes completos, armazenando-os na
matriz.
B) ord_mat(): ordena a matriz de nomes completos.
c) maior_nome(): imprime o maior nome, caso tenha empate, deve
imprimir todos os maiores nomes.
d) armaz_prim_nome(): percorrer a matriz de nomes e armazenar o
primeiro nome de cada pessoa em um vetor de estruturas, bem
como o índice da linha da matriz onde este apareceu e o número
de ocorrências do nome recebe 1. IMPORTANTE: Caso o
primeiro nome já tenha aparecido antes (ex. Ana Maria Cruz e
Ana Paula de Oliveira), não deve ser armazenado novamente,
porém a linha da matriz onde este aparece deve ser armazenada
e o número de ocorrências deve ser incrementado. Supor que
cada nome aparece no máximo 10 vezes.
e) proc_nome(): le um primeiro nome (ex. José) e imprime o nome
completo de todas as pessoas que iniciam com esse nome (ex.:
José da Silva, José de Alencar, José Augusto dos Anjos, etc.).
f) maior_ocorr(): imprime o primeiro nome que mais apareceu no
texto, se houver empate, deve imprimir todos.
Observações:
· A definição da estrutura prim_nome é a seguinte:
struct prim_nome
{
char pnome[11]; // primeiro nome
int linhas[10]; // linhas onde ocorre primeiro nome
int n_ocor; // número de ocorrências do primeiro nome
};
· A declaração do vetor de primeiros nomes é: struct prim_nome
vet_nome[30];
· Utilize as funções para manipulação de strings definidas em string.h.
vo posta o codigo aqui paravcs verem o que eu já consegui faze e ver se alguém consegue faze ele funciona, to deseperado, por favor me ajudem.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct {
char pnome[11];
int linhas[11];
int n_ocor;
}prim_nome;
void leitura(){
char string [30] [40];
int i=0;
prim_nome vet_nome[30];
char resp,s;
for (i = 0; i < 30; i++){
printf ("\nDigite um o nome da %da pessoa:", i + 1);
scanf ("%s", &vet_nome[30].pnome);
printf ("\nDigite o sobrenome da %da pessoa:");
scanf ("%s",&string[30]);
strcat (vet_nome[30].pnome,string);
system ("cls");
printf ("deseja inserir mais nomes? s/n?");
scanf ("%s", &resp);
if (resp == 's')
scanf ("%s", &string);
else {
printf ("\nFim da coleta de nomes!");
i=30;
}
}
printf ("\nOs nomes que voce digitou foram:\n");
for (i = 0; i < 30; i++){
printf ("\n%s", string);
}
}
void ord_mat(int matriz[], int tam){
char string[30] [40];
int temp, i, j;
for(i = 0; i < tam; i++){
for(j = 0; j < tam; j++){
if(matriz < matriz[j]){
temp = matriz;
matriz = matriz[j];
matriz[j] = temp;
}
}
}
}
void maior_nome(){
char string [30] [40];
int ordem = strlen (string);
}
int main()
{
int i = 0;
leitura ();
ord_mat(valores, tamanho);
puts("\n");
for(i = 0; i < 30; i++){
printf("%d ", valores);
}
system ("pause");
}
int strcmp (char *string, char *string[i+1])
desde já agradeço a vocês, o melhor forum da net
vlw mesmo
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.