Oppure

Loading
09/07/07 9:15
Natureboy
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:

[CODE]
#include <stdio.h>
#include <stdlib.h>
#include "funzioni.h"


void main()
{

int nmic, size, m, k, i, j, sumlambda, medialambda, sumcoppie, omog,
newsumlambda,
newmedialambda, newsumcoppie, newomog, c1, c2, c3, costo, g, h,
c1new, c2new, c3new, microfoni, newcosto;
float sum;

printf("Inserire numero: \n";);
scanf_s("%d\n", &nmic);

size=-1;
float **a;
int **l;
int **lm;
int **ncoppie;
a=new float *[nmic-1];
l=new int *[nmic];
for(int i=0; i<nmic; i++)
l[i]=new int [nmic];
lm=new int *[nmic];
for(int i=0; i<nmic; i++)
lm[i]=new int [nmic];
ncoppie=new int *[2];
for(int i=0; i<2; i++)
ncoppie[i]=new int [size+1];



/* Creazione di un vettore */
for(m=1; m<nmic; m++){
printf("Inserire la distanza fra i microfoni %d", m);
printf(" e %d: \n", m+1);
scanf_s("\n%f\n", &a[m-1]);
}

for(i=0; i<nmic; i++)
printf("Valore %f: ", a[i]);

/* Creazione matrice */
sum=0;
for(i=0; i<nmic; i++){
for(j=i+1; j<nmic; j++){
for(k=0; k<j; k++)
sum+=*a[k];
*l[i, j]=*l[j, i]=340/(sum*2);
}
}

[/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!
aaa
09/07/07 19:06
pierotofy
Per il primo problema prova ad eseguire un flush dello standard input subito dopo lo scanf, per il secondo prova a modificare la riga

 a=new float *[nmic-1]; 


Aumentando le dimensioni dell'array (prova a moltiplicare nmic per 2 giusto per fare un test).
Il mio blog: piero.dev