Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354

    [pascl 2 c] cambiare algoritmo

    La prof pretende un algoritmo in pascl:

    è dato un elenco di prodotti di cui vengono indicati la descrizione, il prezzo e la percentuale di sconto. Scrivere la descrizione e il prezzo scontato di ciascun prodotto.
    scrivere poi la descrizione e il prezzo del prodotto più costoso, comunicare il totale degli sconti, comunicare la media dei pezzi e la media dgli sconti.

    che ho risolto in pascal:
    codice:
    PROGRAM Eprod;
    USES crt;
    VAR
      i,n:integer;
      pre,perc,tots,ppiuc,mpre,mscon:real;
      des,desmax:string[100];
    BEGIN
      clrscr;
      write('Inserire il numero di prodotti nell''elenco: ');
      readln(n);
      i:=1;
      write('Inserire il prezzo del prodotto 1: ');
      readln(pre);
      write('Inserire la percentuale del prodotto 1: ');
      readln(perc);
      write('Inserire la descrizione del prodotto 1: ');
      readln(des);
      writeln('Il prezzo scontato del prodotto 1 e'': ',pre-((pre*perc)/100):5:2);
      writeln('(',des,')');
      desmax:=des;
      ppiuc:=pre;
      tots:=(pre*perc)/100;
      mpre:=pre;
      mscon:=perc;
      REPEAT
        write('Inserire il prezzo del prodotto ',i+1,': ');
        readln(pre);
        write('Inserire la percentuale del prodotto ',i+1,': ');
        readln(perc);
        write('Inserire la descrizione del prodotto ',i+1,': ');
        readln(des);
        writeln('Il prezzo scontato del prodotto ',i+1,' e'': ',pre-((pre*perc)/100):5:2);
        writeln('(',des,')');
        tots:=tots+((pre*perc)/100);
        mpre:=mpre+pre;
        mscon:=mscon+perc;
        IF(ppiuc<=pre)THEN
        BEGIN
          ppiuc:=pre;
          desmax:=des;
        END;
        i:=i+1;
      UNTIL(i>=n);
      writeln('Il prezzo piu'' alto e'': ',ppiuc:5:2);
      writeln('(',desmax,')');
      writeln;
      writeln('Il totale dei prezzi e'': ',tots:5:2);
      writeln;
      writeln('La media dei prezzi e'' di: ',mpre/n:5:2);
      writeln('La media degli sconti e'' di: ',mscon/n:5:2);
      readln;
    END.
    con apparente successo...
    volendo imparare il c ho provato ha riscrivere l'algoritmo in c:
    codice:
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    main(){
      int n,i;
      int pre,perc,tots,ppiuc,mpre,mscon;
      char des[100],desmax[100];
      printf("Inserire il numero di prodotti nell'elenco: ");
      scanf("%d", n);
      i=1;
      printf("Inserire il prezzo del prodotto 1: ");
      scanf("%d", pre);
      printf("Inserire la percentuale del prodotto 1: ");
      scanf("%d", perc);
      printf("Inserire la descrizione del prodotto 1: ");
      scanf("%s", des);
      printf("Il prezzo scontato del prodotto 1 e': %d\n(%d)",pre-((pre*perc)/100),\
      des);
      strcpy(desmax,des);
      ppiuc=pre;
      tots=(pre*perc)/100;
      mpre=pre;
      mscon=perc;
      do{
        printf("Inserire il prezzo del prodotto %d: ",i+1);
        scanf("%d", pre);
        printf("Inserire la percentuale del prodotto %d: ",i+1);
        scanf("%d", perc);
        printf("Inserire la descrizione del prodotto 1: ",i+1);
        scanf("%s", des);
        printf("Il prezzo scontato del prodotto %d e': %d\n(%d)",i+1,pre-((pre*perc)\
        /100),des);
        tots+=((pre*perc)/100);
        mpre+=pre;
        mscon+=perc;
        if(ppiuc<=pre){
          ppiuc=pre;
          strcpy(desmax,des);
        }
        i++;
      }while(i>=n);
      printf("Il prezzo piu' alto e': %d\n(%s)\n\n",ppiuc,desmax);
      printf("Il totale dei prezzi e': %d\n\n",tots);
      printf("La media dei prezzi e' di: %d\nLa media degli sconti e' di: %d\n",mpre/n,mscon/n);
      system("pause");
    }
    Il problema e che non mi funziona l'algoritmo in c. il compilatore gcc non da errori ma quando vado ad eseguiere il programma si blocca dopo l'input della variabile n.

  2. #2
    codice:
    scanf("%d", n);
    Mi pare che la sintassi corretta fosse:

    scanf("%d", &n);
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  3. #3
    Utente bannato
    Registrato dal
    Apr 2005
    Messaggi
    14

    risposta

    prova a dare prima un valore a i e poi assegnare i valori allr altre variabili....

  4. #4
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Originariamente inviato da dekdek
    codice:
    scanf("%d", n);
    Mi pare che la sintassi corretta fosse:

    scanf("%d", &n);
    È giusto, funziona!

    ma non funzionano le stringe!

  5. #5
    Le stringhe sono gia' dei puntatori, le passi normalmente.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  6. #6
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    no, non funziona... ci darò un occhiata anche per il do while

    grazie per avermi aiutato ti farò sapere!

  7. #7
    il secondo parametro della scanf è un puntatore quindi se inserisci una variabile dichiarata come tale (cioè non puntatore) del tipo
    codice:
    int x;
    allora devi usare la scanf inserendo anche l'operatore & che restituisce l'indirizzo di memoria di una variabile cioè scanf(%d, &x);
    alle stringhe non va messo l'& perchè tu le hai già dichiarate come array (e quindi puntatori) quindi devi scrivere
    codice:
    char stringa[100];
    scanf(%s, stringa);

  8. #8
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Funziona, grazie!

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.