LupoX
11-12-2003, 10:40
Ciao a tutti, sono un nuovo utente,sto cercando di costruire il mio primo programma ma ho qualche errore, non in compilazione, ma quando lo eseguo,il mio programma visualizza i brani e la somma dei tempi delle canzoni inserite dall'utente:
#include <stdio.h>
#include <stdlib.h>
/*dichiarazione delle variabili*/
unsigned int i;
unsigned int a;
unsigned int condizione;
unsigned int max;
/*definizione della struttura*/
struct canzoni{
unsigned int minuti;
unsigned int secondi;
char nome[30];
}canzone[25];
int main()
{
for (i=1;i<=25;i++)
{
/*chiede all'utente di inserire i dati*/
printf("\ninserire il nome del %d brano\n\n",i);
scanf("%s",canzone[i].nome);
printf("\nInserire la durata del %d brano\n",i);
printf("minuti e secondi separati da uno spazio\n\n");
scanf("%d %d",&canzone[i].minuti,&canzone[i].secondi);
max = i;
/*controlla e converte 60 secondi in minuti*/
for ( ;canzone[i].secondi>=60;canzone[i].minuti++)
{
canzone[i].secondi = (canzone[i].secondi-60);
};
for(;;)
{
/*chiede all'utente se continuare, visualizzare oppure terminare l'inserimento*/
puts("\n1 TERMINA");
puts("\n2 CONTINUA");
puts("\n3 VISUALIZZA BRANI\n\n");
scanf("%d",&condizione);
puts("\n\n");
fflush(stdin);
if (condizione == 1)
break;
if (condizione == 2)
break;
/*visualizza l'inserimento dei brani*/
if (condizione == 3)
{
printf("--------------------------------------------------------------------------------\n");
printf("TITOLO\t\tMINUTI\tSECONDI\n");
printf("--------------------------------------------------------------------------------\n");
for (i=1;i<=max;i++)
{
printf("%s \t\t %d \t %d\n",canzone[i].nome,canzone[i].minuti,canzone[i].secondi);
}
printf("--------------------------------------------------------------------------------\n");
/*somma il tempo di tutti i brani e converte i secondi in minuti*/
unsigned int totale_minuti;
unsigned int totale_secondi;
if (max != 1)
{
for(i=1;i<=max;)
{
totale_minuti=((canzone[i].minuti)+(canzone[i++].minuti));
totale_secondi=((canzone[i].secondi)+(canzone[i++].secondi));
for ( ;totale_secondi>=60;totale_minuti++)
{
totale_secondi = (totale_secondi-60);
};
}
}
printf("TOTALE\t\tMINUTI\tSECONDI\n");
printf("%d brani\t%d\t%d\n\n",max,totale_minuti,totale_secondi);
continue;
}
}
if (condizione == 2)
continue;
if (condizione == 1)
break;
}
puts("premere invio per terminare");
getchar();
return 0;
}
quando lo eseguo ho questi due problemi:
1) quando visualizzo il primo brano il tempo totale non è giusto
2) qando riparte il primo ciclo for non riparte dal secondo elemento ma ne salta uno.
spero che qualcuno possa darmi una mano:D
#include <stdio.h>
#include <stdlib.h>
/*dichiarazione delle variabili*/
unsigned int i;
unsigned int a;
unsigned int condizione;
unsigned int max;
/*definizione della struttura*/
struct canzoni{
unsigned int minuti;
unsigned int secondi;
char nome[30];
}canzone[25];
int main()
{
for (i=1;i<=25;i++)
{
/*chiede all'utente di inserire i dati*/
printf("\ninserire il nome del %d brano\n\n",i);
scanf("%s",canzone[i].nome);
printf("\nInserire la durata del %d brano\n",i);
printf("minuti e secondi separati da uno spazio\n\n");
scanf("%d %d",&canzone[i].minuti,&canzone[i].secondi);
max = i;
/*controlla e converte 60 secondi in minuti*/
for ( ;canzone[i].secondi>=60;canzone[i].minuti++)
{
canzone[i].secondi = (canzone[i].secondi-60);
};
for(;;)
{
/*chiede all'utente se continuare, visualizzare oppure terminare l'inserimento*/
puts("\n1 TERMINA");
puts("\n2 CONTINUA");
puts("\n3 VISUALIZZA BRANI\n\n");
scanf("%d",&condizione);
puts("\n\n");
fflush(stdin);
if (condizione == 1)
break;
if (condizione == 2)
break;
/*visualizza l'inserimento dei brani*/
if (condizione == 3)
{
printf("--------------------------------------------------------------------------------\n");
printf("TITOLO\t\tMINUTI\tSECONDI\n");
printf("--------------------------------------------------------------------------------\n");
for (i=1;i<=max;i++)
{
printf("%s \t\t %d \t %d\n",canzone[i].nome,canzone[i].minuti,canzone[i].secondi);
}
printf("--------------------------------------------------------------------------------\n");
/*somma il tempo di tutti i brani e converte i secondi in minuti*/
unsigned int totale_minuti;
unsigned int totale_secondi;
if (max != 1)
{
for(i=1;i<=max;)
{
totale_minuti=((canzone[i].minuti)+(canzone[i++].minuti));
totale_secondi=((canzone[i].secondi)+(canzone[i++].secondi));
for ( ;totale_secondi>=60;totale_minuti++)
{
totale_secondi = (totale_secondi-60);
};
}
}
printf("TOTALE\t\tMINUTI\tSECONDI\n");
printf("%d brani\t%d\t%d\n\n",max,totale_minuti,totale_secondi);
continue;
}
}
if (condizione == 2)
continue;
if (condizione == 1)
break;
}
puts("premere invio per terminare");
getchar();
return 0;
}
quando lo eseguo ho questi due problemi:
1) quando visualizzo il primo brano il tempo totale non è giusto
2) qando riparte il primo ciclo for non riparte dal secondo elemento ma ne salta uno.
spero che qualcuno possa darmi una mano:D