Sequenza terminata da negativo

di il
12 risposte

Sequenza terminata da negativo

..risultato compilazione .. ..sballataaa..perché..ecco il testo e mia soluzione
/*Scrivere un programma C che:
· Legga da tastiera una sequenza (di lunghezza non nota a priori) di numeri positivi. La sequenza termina quando viene inserito un numero negativo
ESEMPIO:
Data la sequenza di numeri: 1 5 7 9 3 12 3 0 -1
*/
include<stdio.h>

int main(){
int i,dim;
float num;    
float seq[dim];  
printf("Inserisci la sequenza di numeri terminata da un numero negativo\n");    
while(num>=0){
 scanf("%d",&num); 
      seq[i]=num;
       i++;                    
             }       
printf("Stampo la sequenza inserita :\n");
 for(i=0;i<dim;i++)
     printf("%d",seq[i]);            
                   
return 0;      
             }

12 Risposte

  • Re: Sequenza terminata da negativo

    1) dim non ha alcun valore ... come allochi il vettore se non sai quanto vale dim?

    2) num non ha alcun valore all'inizio ... come lo confronti nella while ?

    3) il controllo del valore negativo va fatto diversamente (accetti il valore e lo assegni senza controllarlo ...)

    4) la for lavora fino a dim che non ha un valore assegnato ...
  • Re: Sequenza terminata da negativo

    Infatti..la questione della Dim..la pensavo anche io cosi..ma come faccio a inizializzare il vettore senza dare una dim predefinita?
  • Re: Sequenza terminata da negativo

    Non puoi ...

    Se lavori con C++ puoi usare una list ...

    Se usi il C e pensi che un valore (ad esempio) di 1000 elementi possa essere un buon limite, utilizza 1000 come valore per allocare il vettore; altrimenti dovrai allocare/riallocare memoria dinamicamente.

    Ma nell'esercizio ti viene espressamente indicato di conservare i valori in un vettore? Oppure puoi anche non conservare i valori?
  • Re: Sequenza terminata da negativo

    Allora l'esercizio..ultimata la sequenza ,mi chiede di fare la somma dei numeri nella posizione i e i+1..cioè i successivi ...
  • Re: Sequenza terminata da negativo

    Quindi li devi memorizzare da qualche parte ...
  • Re: Sequenza terminata da negativo

    Fatto!! ci sono possibili miglioramenti?
    #include<stdio.h>
    #define dim 10
    int main(){
    int num=0;
    int seq[dim];
    printf("Inserisci la sequenza di numeri terminata da un numero negativo\n");    
    
    int i=0;
    while(num!=-1){
                 scanf("%d",&num);  
        seq[i]=num;
        i++;          
                  }
    
                      
    printf("Stampo la sequenza inserita :\n");
     for(i=0;i<seq[i];i++)
         printf("%d",seq[i]);            
                      
    return 0;      
                 }
    
             
    
  • Re: Sequenza terminata da negativo

    A parte che 10 mi sembra pochino, la for è sbagliata ... l'hai compilato e provato?
  • Re: Sequenza terminata da negativo

    Allora..si compila e da il risultato desiderato. Effettivamente dim meglio 100..cmq fatto anche esercizio completo..compila e da risultato..ma forse un po' troppo lungo...
    Un metodo per accorciarlo??
    /*Scrivere un programma C che:
    · Legga da tastiera una sequenza (di lunghezza non nota a priori) di numeri positivi e calcoli il
    massimo della somma di ogni numero inserito e del suo precedente (cioè il massimo tra: il
    primo + il secondo, il secondo + il terzo, il terzo + il quarto,…). La sequenza termina
    quando viene inserito un numero negativo
    · Per determinare il massimo fra due numeri si implementi la funzione
    int max (int n1, int n2) che restituisce il massimo fra n1 e n2
    · Il programma deve visualizzare il valore massimo calcolato
    ESEMPIO:
    Data la sequenza di numeri: 1 5 7 9 3 12 3 0 -1
    Il programma deve produrre un output del tipo: il massimo è 16
    */
    int max(int n1, int n2);
    
    #include<stdio.h>
    #define dim 100
    int main(){
    int num=0;
    int seq[dim];
    int somma[dim];
    int ris[dim];
    int massimo;
    printf("Inserisci la sequenza di numeri terminata da un numero negativo\n");    
    int i=0;
    while(num!=-1){
    scanf("%d",&num);  
    seq[i]=num;
    i++;          
                  }
    printf("Stampo la sequenza inserita :\n");
     for(i=0;i<seq[i];i++){
         printf(" %d ",seq[i]);            
                          }
    for(i=0;i<dim;i++){
    somma[i]=seq[i]+seq[i+1];                      
                      }
                      printf("\n");
    printf("la somma e' :\n");
     for(i=0;i<seq[i];i++){
         printf(" %d ",somma[i]);
                          }                                         
    for(i=0;i<dim;i++){
       ris[i]=max(somma[i],somma[i+1]);
      if(ris[i]>ris[i+1]) {
      massimo=ris[i];
                          }else{
      massimo=ris[i+1];                            
                               }
                      }
    printf("\n");                  
    printf("il massimo e' :\n");
         
         printf(" %d ",&massimo); 
         
    return 0;      
                 }
    
             
    int max(int n1, int n2){
          int risultato=n2;
          if(n1>n2)
          risultato=n1;
          else 
          return risultato;                 
                           }
    
  • Re: Sequenza terminata da negativo

    I<seq non ha senso
  • Re: Sequenza terminata da negativo

    Lo so ma se metto dim mi continua con le posizioni..cioè numeri
  • Re: Sequenza terminata da negativo

    Ma che vuoi dire?
  • Re: Sequenza terminata da negativo

    Avevi ragione...!!!cmq risolto...
Devi accedere o registrarti per scrivere nel forum
12 risposte