Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Videata in Linguaggio c non riuscita

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Videata in Linguaggio c non riuscita

Messaggioda Foto Utenteangrigio » 28 mar 2016, 20:39

Salve, sto scrivendo un programma in c con funzione di inserimento di 2 array con successiva stampa del risultato.
Impostando per il vettore lunghezza pari a 5 ,
Il risultato a video e' il seguente:

Inserisci gli elementi dell'Array 1:
0: 3
1: 5
2: 9
3: 2
4: 7

Array 1 [ 3.00000 5.00000 9.00000 2.00000 7.00000]

Inserisci gli elementi dell'Array 2:
0: -5
1: 1.2
2: 34
3: 3.5
4: 2

Array 2 [ -5.00000 1.200000 3400000 3.500000 2.00000]




Ho scritto un codice in C cercando di usare una funzione sola per l'inserimento degli Array.
Codice: Seleziona tutto
#include<stdio.h>
void InserisciArray(float[],int,float);
int main()

{
  #define lungh 5
   float vettore[lungh];
   int alfa;
   printf("Inserisci gli elementi dell'array 1 :");
   
   void InserisciArray(float[],int,float);
 

return 0;
}

void InserisciArray(float inserire[],int inserire1,float previsto)
{
float uno;
   int due;
   float tre[lungh];


        for (due =0 ; due < lungh; due++)

   {
      scanf("%d", &tre);
      printf("%f:",tre[due]);



}
}


Codice che pero' non e' in grado di generare la videata di quello che sto cercando di fare.
Se avete qualche guida per lo studio delle funzioni ve ne sarei grato
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[2] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utenteangrigio » 28 mar 2016, 21:20

Ho provato ad usare una funzione per stampare a video il primo punto del problema,il programma una volta fatto girare visualizza la sola scritta Inserisci gli elementi dell'array 1
e poi termina.
Quindi ho fatto un errore di progettazione del software che pero' non so individuare
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[3] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utentesimo85 » 28 mar 2016, 21:48

Rivedi la funzione:

Codice: Seleziona tutto
void InserisciArray(float inserire[],int inserire1,float previsto)
{
  float uno;
  int due;
  float tre[lungh];

  for (due =0 ; due < lungh; due++)
  {
    scanf("%d", &tre);
    printf("%lf:", tre[due]);
  }
}


Non capisco perché passi un array, un intero ed un double per argomento e poi non usi nessuno di loro.
Comunque con la prima chiamata alla scanf vuoi assegnare un numero intero al primo elemento di un array float.

Magari come esempio vedi questo:

Codice: Seleziona tutto
#include <stdio.h>

#define MAX_LEN 5

void fillArray(double array[], int size)

   int i = 0;

   printf("Insert value:\n");
   for(i = 0; i < size; i++)
   {
      printf("%d: ", i);
      scanf("%lf", &(array[i]));
   }
}

void printArray(double array[], int size)

   int i = 0;
   for(i = 0; i < size; i++)
      printf("%lf ", array[i]);
   printf("\n");
}

int main(void)
{
   double aarr[MAX_LEN] = {0.0};
   double barr[MAX_LEN] = {0.0};

   fillArray(aarr, MAX_LEN);
   fillArray(barr, MAX_LEN);
   printArray(aarr, MAX_LEN);
   printArray(barr, MAX_LEN);

   return 0;
}


PS: videata ? :-|
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[4] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utenteangrigio » 28 mar 2016, 22:03

Ti ringrazio per la risposta: provo a far girare il programma con le modifiche suggerite.
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[5] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utenteangrigio » 28 mar 2016, 22:12

Ho usato il programma che hai fatto .Funziona.
Non capisco il controllo del ciclo fatto su int size. La lunghezza del vettore non e' data da MAX_LEN .
Forse il parametro int size "prende" la dimensione del vettore (che nel caso previsto e' 5)?
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[6] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utentesimo85 » 28 mar 2016, 22:28

È solo un altro modo di farlo. Io sono abituato a passare sempre il numero di elementi del buffer quando passo un buffer per argomento.

La lunghezza del vettore double è MAX_LEN.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

1
voti

[7] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utenteposta10100 » 28 mar 2016, 22:33

angrigio ha scritto:Non capisco il controllo del ciclo fatto su int size.

perché Foto Utentesimo85 è saggio e ha scritto una funzione generica che può essere chiamata con lunghezze di array diverse nello stesso programma, ad esempio puoi fare una cosa del genere:

Codice: Seleziona tutto
    #include <stdio.h>

    #define MAX_LEN_A 5
    #define MAX_LEN_B 10

    void fillArray(double array[], int size)
    {
       .....
    }

    void printArray(double array[], int size)
    {
       .....
    }

    int main(void)
    {
       double aarr[MAX_LEN_A] = {0.0};
       double barr[MAX_LEN_A] = {0.0};
       double carr[MAX_LEN_B] = {0.0};
       double darr[MAX_LEN_B] = {0.0};

       printf("Array da %i elementi", MAX_LEN_A);
       fillArray(aarr, MAX_LEN_A);
       fillArray(barr, MAX_LEN_A);
       printArray(aarr, MAX_LEN_A);
       printArray(barr, MAX_LEN_A);

       printf("Array da %i elementi", MAX_LEN_B);
       fillArray(aarr, MAX_LEN_B);
       fillArray(barr, MAX_LEN_B);
       printArray(aarr, MAX_LEN_B);
       printArray(barr, MAX_LEN_B);

       return 0;
    }


Foto Utentesimo85 è anche molto veloce a rispondere e mi ha bruciato sul tempo :mrgreen:
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[8] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utenteangrigio » 29 mar 2016, 9:49

Nell'istruzione del programma e' posta la seguente:
Codice: Seleziona tutto
double aarr[MAX_LEN_A] = {0.0};
double barr[MAX_LEN_A] = {0.0};
Non riesco a capire perche' inizializzare l'array .
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[9] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utentesimo85 » 29 mar 2016, 9:54

angrigio ha scritto:Non riesco a capire perche' inizializzare l'array

A me piace inizializzare tutto a zero quando dichiaro una variabile o un array.
Non è obbligatorio..
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[10] Re: Videata in Linguaggio c non riuscita

Messaggioda Foto Utentesimo85 » 29 mar 2016, 11:35

posta10100 ha scritto:perché simo85 è saggio ...

:^o Ma non è vero dai :lol:

Il primo motivo per cui faccio cosi è perché, quando voglio iterare un buffer passat per argomento dentro una funzione, devo conoscerne la dimensione. Non potrei di certo usare la funzione sizeof.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti