Динамическое выделение памяти / Открытие файла с командной строки - C (СИ)
Формулировка задачи:
Добрый день.
Дана задача: Есть информация о альбомах, выданным музыкальной группой: название, год издания, кол-во песен, кол-во клипов, компания, которая выполнила звукозапись, тираж. Найти компанию, с которой группа работала дольше всего и посчитать общее количество клипов и песен. Упорядочить информацию по тиражу методом минимумов. Напечатать в виде таблицы.
Нужно использовать динамическое выделение памяти и имя файла вводить в командной строке. Все сделано, кроме нахождения компании, использования динам.выделения памяти и ввода имени файла через командную строку.
Заранее благодарен за помощь.
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct group { char nazv[30]; int god; int pes; int clip; char comp[30]; int tir; }arr [100]; int load (struct group *arr) { int i=0; FILE *f=NULL; f=fopen("Input.txt", "rt"); if (f==NULL) { printf ("No file!!!\n"); exit (0); } for(i=0;i<5;i++) { fscanf(f,"%s", &arr[i].nazv); fscanf(f,"%d", &arr[i].god); fscanf(f,"%d", &arr[i].pes); fscanf(f,"%d", &arr[i].clip); fscanf(f,"%s", &arr[i].comp); fscanf(f,"%d", &arr[i].tir); } fclose (f); return 0; } int sumpes (struct group *t) { int i=0, s=0; for(i=0;i<5;i++) { s=s+arr[i].pes; } printf("Summa pesen: %d\n", s); return 0; } int sumclip (struct group *arr) { int i=0, s=0; for (i=0; i<5; i++) { s+=arr[i].clip; } printf("Summa klipov: %d\n", s); return 0; } int comp (struct group *t) { int i=0, j=0, n=0, max=0; struct group temp; for (i=0; i<5; i++) { for (j=0;j<5;j++) { if(t[i].comp==t[j].comp) n++; } if(n>max) { max=n; } n=0; } printf("n: %d\n", max); return 0; } int sorttir (struct group *t) { int i=0, j=0; struct group temp; for(i=0;i<5;i++) { for(j=0; j<4; j++) { if( t[j].tir > t[j+1].tir ) { temp=t[j]; t[j]=t[j+1]; t[j+1]=temp; } } } return 0; } void main (void) { int n=0, i=0; L: printf("1.Load\n2.COMP\n3.Kol-vo pesen\n4.Kol-vo clipov\n5.Sortirovka po tirajy\n6.Quit\n"); printf ("Input number : "); scanf ("%d", &n); printf ("\n"); switch (n) { case 1 : load(arr); break; case 2 : comp(arr); break; case 3 : sumpes (arr); break; case 4 : sumclip (arr); break; case 5 : sorttir (arr); break; case 6 : exit (0); break; } for (i=0;i<5;i++) printf("%s %d %d %d %s %d\n",arr[i].nazv,arr[i].god,arr[i].pes,arr[i].clip,arr[i].comp,arr[i].tir); printf("\n"); goto L; }
Решение задачи: «Динамическое выделение памяти / Открытие файла с командной строки»
textual
Листинг программы
int comp (struct group *arr) { int i=0, j=0, n=0, max=0; for (i=0; i<x; i++) { for (j=0;j<x;j++) { if(arr[i].comp==arr[j].comp) n++; } if(n>max) { max=n; } n=0; } printf("n: %d\n", max); return 0; }