Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Visual C++ Problemi con scanf
Forum - C/C++ - Visual C++ Problemi con scanf

Avatar
Natureboy (Normal User)
Newbie


Messaggi: 2
Iscritto: 09/07/2007

Segnala al moderatore
Postato alle 11:15
Lunedì, 09/07/2007
Ciao a tutti, sono alle prime armi di programmazione C++, sto scrivendo un programmino con Visual C++ ed ho qualche problema con gli scanf. Riporto la parte iniziale del programma:

Codice sorgente - presumibilmente C++

  1. [CODE]
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include "funzioni.h"
  5.  
  6.  
  7. void main()
  8. {
  9.  
  10.     int nmic, size, m, k, i, j, sumlambda, medialambda, sumcoppie, omog,
  11.         newsumlambda,
  12.         newmedialambda, newsumcoppie, newomog, c1, c2, c3, costo, g, h,
  13.         c1new, c2new, c3new, microfoni, newcosto;
  14.     float sum;
  15.  
  16.     printf("Inserire numero: \n");
  17.     scanf_s("%d\n", &nmic);
  18.  
  19.     size=-1;
  20.     float **a;
  21.     int **l;
  22.     int **lm;
  23.     int **ncoppie;
  24.     a=new float *[nmic-1];
  25.     l=new int *[nmic];
  26.     for(int i=0; i<nmic; i++)
  27.         l[i]=new int [nmic];
  28.     lm=new int *[nmic];
  29.     for(int i=0; i<nmic; i++)
  30.         lm[i]=new int [nmic];
  31.     ncoppie=new int *[2];
  32.     for(int i=0; i<2; i++)
  33.         ncoppie[i]=new int [size+1];
  34.  
  35.  
  36.    
  37. /* Creazione di un vettore */
  38.     for(m=1; m<nmic; m++){
  39.         printf("Inserire la distanza fra i microfoni %d", m);
  40.         printf(" e %d: \n", m+1);
  41.         scanf_s("\n%f\n", &a[m-1]);
  42.     }
  43.    
  44.     for(i=0; i<nmic; i++)
  45.         printf("Valore %f: ", a[i]);
  46.  
  47. /* Creazione matrice */
  48.     sum=0;
  49.     for(i=0; i<nmic; i++){
  50.         for(j=i+1; j<nmic; j++){
  51.             for(k=0; k<j; k++)
  52.                 sum+=*a[k];
  53.             *l[i, j]=*l[j, i]=340/(sum*2);
  54.         }
  55.     }
  56.  
  57. [/CODE]



La compilazione avviene senza errori, quando avvio il debug però avvengono le seguenti cose:
1) sul primo scanf non so perchè ma devo inserire il numero 2 volte (premendo quindi 2 volte invio) per far andare avanti il debug;
2) sul secondo scanf, all'interno del ciclo for, si blocca il debug riportando un errore nella riga " sum+=*a[k] "; in realtà da quanto ho capito nello scanf del ciclo for non riesce a memorizzare i valori che digito all'interno del vettore a[].

Qualcuno riesce ad aiutarmi? Grazie!

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:06
Lunedì, 09/07/2007
Per il primo problema prova ad eseguire un flush dello standard input subito dopo lo scanf, per il secondo prova a modificare la riga

Codice sorgente - presumibilmente C/C++

  1. a=new float *[nmic-1];



Aumentando le dimensioni dell'array (prova a moltiplicare nmic per 2 giusto per fare un test).


Il mio blog: https://piero.dev
PM Quote