Witam mam do zrobienia program w C polegający na wczytaniu od użytkownika nazwisk i indeksów N studentów (N podane także przez użytkownika). Program ma rezerowować dla tych danych pamięć przy użyciu malloc. Następnie wypisywane jest nazwisko studenta, którego suma cyfr w indeksie jest największa. Jeżeli jest więcej takich studentów, to wypisuje pierwszego z nich. Ja do zagadnienia podeszłam w następujący sposób:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
# define INDEKSY 6
typedef struct
{
char nazwisko[100];
int cyferki[INDEKSY];
int suma;
}studenci;
int main()
{
int N;
char szczesliwiec[100];
printf("Podaj liczbe studentow do wczytania ");
scanf("%d", &N);
studenci *student = (studenci*) malloc ( N* sizeof(studenci));
int suma_maks=0;
for ( int i = 0 ; i < N ; i++)
{
printf("Podaj nazwisko studenta nr %d", i+1);
scanf("%s", student[i].nazwisko);
student[i].suma = 0 ;
for( int j = 0 ; j< INDEKSY; j++)
{
printf("Podaj %d cyfre indeksu tego studenta ", j+1 );
scanf("%d", &(student[i].cyferki[j]));
student[i].suma = student[i].suma + student[i].cyferki[j];
}
** if(student[i].suma > suma_maks )
{ suma_maks = student[i].suma;
char dst[strlen(student[i].nazwisko)+1];
strcpy(student[i].nazwisko , dst);
szczesliwiec = dst;
}**
}
printf("Student o najwiekszej sumie cyfr z indeksu to %s ", szczesliwiec);
free(student);
return 0;
}
Niestety przy odpalaniu programu, zamiast nazwiska studenta pokazują się dwa przypadkowe "krzaki". Domyślam się że błąd może być w ogwiazdkowanej części kodu, ale nie mam pomysłu jak w inny sposób podejść do tego zadania. Bardzo proszę o podpowiedzi.