Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24

    [C]Mi date uno sguardo al prog

    ragazzi questo pogramma deve calcolare la rsistenza equivalente tra + resistenze sia in paraallelo che in serie..funziona abbastanza bene..soltanto quando il ciruito comincia ad essere un pò complicato nn calcola bene..ad esempio con 3 paralleli,o 3 paralleli e 1 serie grazie a tutti

    #include <stdio.h>
    #include<string.h>
    main()
    {
    int menu,i,ind=0,res[20],ind1=0,ind2,j,ind3=0,ind4=0,v;
    char matrice[30][30],nodi[200];
    do
    {
    do
    {
    printf("Immettere i 2 nodi (tutti attaccati)");
    ind2=0;
    for(i=0;i<2;i++)
    {
    scanf(" %c",&nodi[ind]);
    matrice[ind1][ind2]=nodi[ind];
    ind++;
    ind2++;
    }
    printf("Immetti la resistenza tra i 2 nodi");
    scanf("%d",&res[ind1]);
    matrice[ind1][3]=res[ind1];
    ind1++;
    printf("Digita 1 se vuoi immettere altri nodi,qualsiasi alro tasto per uscire");
    scanf(" %d",&menu);
    }
    while(menu==1);
    v=ind1;
    printf("\nMatrice iniziale =\n\n");
    for(i=0;i<ind1;i++)
    {
    j=0;
    for(j;j<2;j++)
    {
    printf("%c",matrice[i][j]);
    }
    printf(" %d ohm\n",matrice[i][3]);
    }
    ind2=2;
    ind=0;
    do
    {
    if((nodi[ind]==nodi[ind2])&&(nodi[ind+1]==nodi[ind2+1]))
    {
    res[ind3]=(res[ind3]*res[ind3+1])/(res[ind3]+res[ind3+1]);
    ind4++;
    matrice[0][3]=res[ind3];
    }
    ind2=ind2+2;
    ind=ind+2;
    ind3++;
    }
    while(ind3<ind1);
    ind2=2;
    ind=0;
    ind3=0;
    do
    {
    if((nodi[ind]!=nodi[ind2+1])&&(nodi[ind+1]==nodi[ind2]))
    {
    res[ind3]=res[0]+res[ind3+1];
    matrice[0][3]=res[ind3];
    }
    ind2=ind2+2;
    ind=ind+2;
    ind3++;
    }
    while(ind3<ind1);
    printf("\nMatrice finale = \n\n");
    for(i=0;i<v;i++)
    {
    j=0;
    for(j;j<2;j++)
    {
    printf("%c",matrice[i][j]);
    }
    printf("-");
    }
    printf(" %d ohm\n",matrice[0][3]);
    printf("Immetti 1 per eseguire il programma di nuovo,un'altro tasto per uscire");
    scanf("%d",&menu);
    }
    while(menu==1);
    }

  2. #2

    Consiglio...

    Dopo ogni scanf() dai getchar() per raccogliere il \n che va nel buffer...
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24

    risposta

    scanf("%d",&res[ind1]);
    ad esempio come diventa questo scanf applicando getchar grazie

  4. #4
    scanf("%d",&res[ind1]);
    getchar();

    e' la pulizia del baffer...
    perche' altrimenti salterebbe le altre scanf()...
    prova un programmino con 3 scanf("%d", &var)
    di fila... ti salta la seconda se non usi getchar()
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    24

    grazie

    grazie del consiglio

  6. #6
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    Oppure per la pulizia del buffer usa fflush.

    Consiglio: Quando posti codici lunghi usa i tag code così rendi il codice un pò più ordinato


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 © 2024 vBulletin Solutions, Inc. All rights reserved.