#include <stdio.h> #include <string.h> #include <stdlib.h> #define maxdiscos 1000 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 1ª versão 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) 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 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 2ª versão 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) 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 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 3ª versão 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) 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) 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 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 4ª versão 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) 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) 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 typedef struct { char nomeautor[80]; char nomedisco[100]; int numdiscosvendidos; DISCO; 5ª versão 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) 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;