Sunteți pe pagina 1din 10

#include <stdio.

h>
#include <string.h>
#include <stdlib.h>
#define maxDiscos 1000
1ª versão
typedef struct {
char nomeAutor[80];
char nomeDisco[100];
int numDiscosVendidos;
} DISCO;

int main() {
DISCO listaDiscos[maxDiscos];
int i, N = 0, K;
char st[10];
FILE *f;

// 1ª fase: copiar os dados do ficheiro para o vetor/lista de discos


f = fopen("discos.txt", "r");
if (f == NULL)
return 0;
while (!feof(f)) { // while (fgets(listaDiscos[N].nomeAutor, 80, f) != NULL) {
fgets(listaDiscos[N].nomeAutor, 80, f); // fscanf apenas lê a 1ª palavra
fgets(listaDiscos[N].nomeDisco, 100, f); // listaDiscos[N].nomeDisco é uma string com '\n' no fim
fgets(st, 10, f);
listaDiscos[N].numDiscosVendidos = atoi(st); // fscan(f, “%d\n”, &listaDiscos[N].numDiscosVendidos)
N++;
}
fclose(f);
// 2ª fase: determinar e mostrar os discos (nome de autor, nome do disco, nº de discos vendidos)
printf("Indique o valor a partir do qual quer verificar que discos tem vendas superiores: ");
scanf("%d", &K);
for (i = 0; i < N; i++)
if (listaDiscos[i].numDiscosVendidos >= K) {
puts(listaDiscos[i].nomeAutor);
// puts escreve a string, que já tem '\n', e ainda acrescenta um '\n'
printf(" --> ");
puts(listaDiscos[i].nomeDisco);
printf(" --> ");
// o printf permite anular o 2º '\n'
printf("%d\n", listaDiscos[i].numDiscosVendidos);
}

return 1;

}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxDiscos 1000
2ª versão
typedef struct {
char nomeAutor[80];
char nomeDisco[100];
int numDiscosVendidos;
} DISCO;

int main() {
DISCO listaDiscos[maxDiscos];
int i, N = 0, K;
char st[10];
FILE *f;

// 1ª fase: copiar os dados do ficheiro para o vetor/lista de discos


f = fopen("discos.txt", "r");
if (f == NULL)
return 0;
while (fgets(listaDiscos[N].nomeAutor, 80, f) != NULL) {
fgets(listaDiscos[N].nomeDisco, 100, f);
fgets(st, 10, f);
listaDiscos[N].numDiscosVendidos = atoi(st); // fscan(f, “%d\n”, &listaDiscos[N].numDiscosVendidos)
N++;
}
fclose(f);
// 2ª fase: determinar e mostrar os discos com vendas superiores a um valor
printf("Indique um valor para determinar os discos com vendas superiores: ");
scanf("%d", &K);
for (i = 0; i < N; i++)
if (listaDiscos[i].numDiscosVendidos >= K) {
printf("%s", listaDiscos[i].nomeAutor);
printf(" --> %s", listaDiscos[i].nomeDisco);
printf(" --> %d\n", listaDiscos[i].numDiscosVendidos);
}

return 1;

}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxDiscos 1000
3ª versão
typedef struct {
char nomeAutor[80];
char nomeDisco[100];
int numDiscosVendidos;
} DISCO;

int main() {
DISCO listaDiscos[maxDiscos];
int i, N = 0, K;
char st[10];
FILE *f, *g;

// 1ª fase: copiar os dados do ficheiro para o vetor/lista de discos


f = fopen("discos.txt", "r");
if (f == NULL)
return 0;
while (!feof(f)) { // while (fgets(listaDiscos[N].nomeAutor, 80, f) != NULL) {
fgets(listaDiscos[N].nomeAutor, 80, f); // fscanf apenas lê a 1ª palavra
fgets(listaDiscos[N].nomeDisco, 100, f); // listaDiscos[N].nomeDisco é uma string com '\n' no fim
fgets(st, 10, f);
listaDiscos[N].numDiscosVendidos = atoi(st); // fscan(f, “%d\n”, &listaDiscos[N].numDiscosVendidos)
N++;
}
fclose(f);
// 2ª fase: determinar e mostrar os discos (nome de autor, nome do disco, nº de discos vendidos)
printf("Indique o valor a partir do qual quer verificar que discos tem vendas superiores: ");
scanf("%d", &K);
g = fopen("maisvendidos.txt", "w");
if (g == NULL)
return 0;
for (i = 0; i < N; i++)
if (listaDiscos[i].numDiscosVendidos >= K) {
fputs(listaDiscos[i].nomeAutor, g);
// puts escreve a string, que já tem '\n', e ainda acrescenta um '\n'
fprintf(g, " --> ");
fputs(listaDiscos[i].nomeDisco, g);
fprintf(g, " --> ");
// o printf permite anular o 2º '\n'
fprintf(g, "%d\n", listaDiscos[i].numDiscosVendidos);
}
fclose(g);

return 1;

}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxDiscos 1000
4ª versão
typedef struct {
char nomeAutor[80];
char nomeDisco[100];
int numDiscosVendidos;
} DISCO;

int main() {
DISCO listaDiscos[maxDiscos];
int i, N = 0, K;
char st[10];
FILE *f, *g;

// 1ª fase: copiar os dados do ficheiro para o vetor/lista de discos


f = fopen("discos.txt", "r");
if (f == NULL)
return 0;
while (fgets(listaDiscos[N].nomeAutor, 80, f) != NULL) {
fgets(listaDiscos[N].nomeDisco, 100, f);
fgets(st, 10, f);
listaDiscos[N].numDiscosVendidos = atoi(st); // fscan(f, “%d\n”, &listaDiscos[N].numDiscosVendidos)
N++;
}
fclose(f);
// 2ª fase: determinar e mostrar os discos com vendas superiores a um valor e guardar num ficheiro
printf("Indique um valor para determinar os discos com vendas superiores: ");
scanf("%d", &K);
g = fopen("maisvendidos2.txt", "w");
if (g == NULL)
return 0;
for (i = 0; i < N; i++)
if (listaDiscos[i].numDiscosVendidos >= K) {
fprintf(g, "%s", listaDiscos[i].nomeAutor);
fprintf(g, " --> %s", listaDiscos[i].nomeDisco);
fprintf(g, " --> %d\n", listaDiscos[i].numDiscosVendidos);
}
fclose(g);

return 1;

}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define maxDiscos 1000
5ª versão
typedef struct {
char nomeAutor[80];
char nomeDisco[100];
int numDiscosVendidos;
} DISCO;

int main() {
DISCO listaDiscos[maxDiscos];
int i, N = 0, K;
char st[10];
FILE *f;

// 1ª fase: copiar os dados do ficheiro para o vetor/lista de discos


f = fopen("discos.txt", "r");
if (f == NULL)
return 0;
while (!feof(f)) { // while (fgets(listaDiscos[N].nomeAutor, 80, f) != NULL) {
fgets(listaDiscos[N].nomeAutor, 80, f); // fscanf apenas lê a 1ª palavra
fgets(listaDiscos[N].nomeDisco, 100, f); // listaDiscos[N].nomeDisco é uma string com '\n' no fim
fgets(st, 10, f);
listaDiscos[N].numDiscosVendidos = atoi(st); // fscan(f, “%d\n”, &listaDiscos[N].numDiscosVendidos)
N++;
}
fclose(f);
// 2ª fase: determinar e mostrar os discos (nome de autor, nome do disco, nº de discos vendidos)
printf("Indique o valor a partir do qual quer verificar que discos tem vendas superiores: ");
scanf("%d", &K);
for (i = 0; i < N; i++)
if (listaDiscos[i].numDiscosVendidos >= K) {
fputs(listaDiscos[i].nomeAutor, stdout);
fprintf(stdout, " --> ");
fputs(listaDiscos[i].nomeDisco, stdout);
fprintf(stdout, " --> ");
fprintf(stdout, "%d\n", listaDiscos[i].numDiscosVendidos);
}

return 1;

S-ar putea să vă placă și