Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    3d Mass Point

    Salve ho questo problema:

    Il centro di massa consiste in una locazione 3-D e in una massa
    associata , ad esempio Locazione6,0,-2) Massa:3g
    In un sistema di centri di massa, considerare p1, p2,...,pn i punti 3-D


    e m1,m2,...,mn le loro masse associate. Se m è la somma delle masse,il


    centro di gravità C è calcolato come
    C= 1/m(m1p1+m2p2+...+mnpn)
    Scrivi un programmache ripetutamente inserisce un sistema di punti di
    massa da un input file finchè input operation fails. Per ciascun
    sistema di punti, mostra la matrice di locazione , il vettore di massa,


    n, e il centro di gravità.
    Ciascun data set include una matrice di locazione (a matrix in which
    row is a point), una one-dimensional array delle masse, e il numero dei


    point masses, n.
    stabilisci che n può variare da 3 a 10.


    Sample Data File
    4
    5 -4 3 2
    4 3 -2 5
    -4 -3 -1 2
    -9 8 6 1
    This sample should be stored as:
    location 5 -4 3
    4 3 -2
    -4 -3 -1
    -9 8 6
    mass 2
    5
    2
    1
    n 4


    La tua main function deve funzionare processando i data sets da un
    input file finchè non trova EOF.


    Io ho creato questo programma:


    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>


    int main (void)
    {
    FILE *ingresso, *uscita;
    int n,i,j, massa, vett_masse[10], mat[10][3];
    float cx, c1, cy, c2, cz, c3;
    float totmasse = 0;
    printf("Inserire il numero dei punti ");
    scanf("%d", &n);
    uscita = fopen("punti.txt","w");
    fprintf(uscita, "%d\n", n);


    for (i=0; i<n; i++)
    {
    printf("\nInserire le 3 coordinate del punto %d--> ",i+1);
    for (j = 0; j<3; j++)
    {
    scanf(" %d",&mat[i][j]);
    fprintf(uscita, "%d ", mat[i][j]);
    }
    printf ("Inserire la massa del punto %d--> ",i+1);
    scanf(" %d", &vett_masse[i]);
    totmasse = totmasse + vett_masse[i]; /*calcolo della
    massa totale*/
    fprintf(uscita, "%d\n",vett_masse[i]);
    }
    fclose(uscita);


    /*visualizzazione locazione punti */
    fopen ("punti","r");
    printf("\nLocazione punti:\n");
    for (i=0; i<n; i++)
    {
    for (j = 0; j<3; j++)
    {
    printf("%d ", mat[i][j]);
    }
    printf("\n");
    }


    /* visualizzazione masse*/
    printf("\nMasse punti:\n");
    for (i = 0; i<n ;i++)
    {
    printf("%d\n", vett_masse[i]);
    }


    /*stampa del numero dei punti*/
    printf("\nNumero punti = %d\n", n);


    /*centro di gravita*/


    /*int c1, c2, c3;
    int vet [2];
    c1 = (1/totmasse)*(vett_masse[ n - (n-1)]* mat[ 0][ 0]*/


    for(i=0; i<n; ++i)
    {
    c1=c1 + (vett_masse[i]*mat[i][0]);
    c2=c2 + (vett_masse[i]*mat[i][1]);
    c3=c3 + (vett_masse[i]*mat[i][2]);
    }


    cx = (1/totmasse)*(c1);
    cy = (1/totmasse)*(c2);
    cz = (1/totmasse)*(c3);


    printf("IL CENTRO DI GRAVITA E' C(%.3f, %.3f, %.3f)\n\n" , cx, cy,
    cz );
    fclose(uscita);
    system ("pause");



    }


    L'utente Goodidea mi ha suggerito questo:

    FILE *fp;
    int f,n;
    int a,b,c,d;
    char s [30];


    // Apri il file che contiene i dati
    fp = fopen ("data.txt","r");
    if (fp == NULL)
    {
    printf ("\nIl dati sono spariti!\n");
    return 1;
    }


    // Leggi la prima riga (n = numero di elementi)
    fgets (s,30,fp);
    sscanf (s,"%d",&n);


    // Leggi gli n elementi
    for (f=0;f<n;f++)
    {
    fgets (s,30,fp);
    sscanf (s,"%d %d %d %d\r\n",&a,&b,&c,&d);
    }


    Il mio dilemma è una volta letti i dati, come inserirli in una
    matrice???
    insomma dovrei fondere le due parti di codice...Grazie mille
    anticipatamente a chiunque deciderà di aiutarmi

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Il linguaggio anche nel titolo la prossima volta. Questo l'ho corretto io.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    168
    credo dovresti fare un vettore parallelo...uno per i 3 numeri chiamiamoli x,y,z e uno per la massa...se sbaglio correggetemi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.