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

    [Turbo pascal] Algoritmo per problema matematico

    Ciao a tutti,
    ho un problema.. Sono ormai 3 mesi che sto lavorando su un problema di matematica da fare nel linguaggio Turbo Pascal ma mi sono bloccata a un punto.
    Il testo del problema parla delle assegnazioni e consiste:
    1. Caricare una matrice n*n
    2. Cercare il numero minore di ogni riga
    3. Sottrarlo alla matrice originaria e visualizzare la nuova matrice
    fin qui tutto ok
    4. Vedere se all'interno di TUTTE le colonne c'č almeno uno zero (ho chiamato la procedura, che DOVREBBE fare questo, ricerca)
    Qui mi sono bloccata e sono ormai 3 mesi che mi scervello quindi stanotte ho pensato a voi!
    Non č che per favore potreste darmi una mano?? Vi inserisco il programma fatto da me..
    Grazie in anticipo.. Ciao ciao

    Ecco il programma:
    program matrici;
    uses crt;
    const n=10;
    m=10;
    type vett=array[1..n,1..m]of integer;
    vett1=array[1..n]of integer;
    var i,j,l,d,min,sott,x,w:integer;
    v,v1:vett;
    v2:vett1;

    procedure intestazione;
    begin
    gotoxy (30,1);
    writeln ('RICERCA OPERATIVA');
    writeln;
    end;

    procedure carica_matrice;
    begin
    write('Nų dei lavori ');
    readln(l);
    write('Nų delle ditte ');
    readln(d);
    for i:=1 to l do
    for j:=1 to d do
    begin
    write(j,'ų numero ', i,'ų riga ');
    readln(v[i,j]);
    end;
    end;

    procedure visualizza;
    begin
    clrscr;
    gotoxy (25,1);
    writeln ('ASSEGNAZIONE DEI LAVORI');
    for i:=1 to l do
    begin
    writeln;
    for j:=1 to d do
    begin
    write(v[i,j]:4);
    end;
    end;
    readln;
    end;

    procedure visualizza1;
    begin
    for i:=1 to l do
    begin
    writeln;
    for j:=1 to d do
    begin
    write(v1[i,j]:4);
    end;
    end;
    readln;
    end;

    procedure sottrazione (var a:integer);
    begin
    for i:=1 to l do
    for j:=1 to d do
    begin
    v1[i,j]:=v[i,j]-v2[i];
    end;
    visualizza1;
    end;

    procedure minimo;
    var a:integer;
    begin
    writeln;
    x:=1;
    for i:=1 to l do
    begin
    a:=v[i,x];
    for j:=1 to (d-1) do
    begin
    if a>v[i,j+1]
    then
    begin
    a:=v[i,j+1];
    end;
    v2[i]:=a;
    end;
    write ('Numero minore della ',i,'ų riga ',a);
    readln;
    end;
    sottrazione (a);
    end;

    procedure avanti;
    begin
    writeln ('C''č 1 zero per colonna');
    readln;
    end;

    procedure indietro;
    begin
    writeln ('Non c''č 1 zero per colonna');
    readln;
    end;

    procedure ricerca;
    var trovato:boolean;
    conta:integer;
    begin
    conta:=0;
    for j:=1 to d do
    trovato:=false;
    i:=0;
    repeat
    i:=i+1;
    if v1[i,j]=0
    then
    begin
    trovato:=true;
    conta:=conta+1;
    end;
    until (i=1) or (trovato);
    if conta=d
    then
    avanti
    else
    indietro;
    end;

    procedure cerchia;
    begin
    end;
    begin
    clrscr;
    intestazione;
    carica_matrice;
    visualizza;
    minimo;
    ricerca;
    end.


    Ps. scusatemi se ve l'ho messo qui ma non conosco altri modi
    Angie ;o)

  2. #2
    ti dico come lo farei io:
    potresti moltiplicare ciascun elemento di ogni colonna e verificare se il prodotto č zero per tutte le colonne.
    ciao
    sergio

  3. #3
    Eh ma io non lo so fare in pascal, capisci??
    Dai, aiutatemi per favore! Ciao ciao e grazie
    Angie ;o)

  4. #4
    prova questo spunto

    Codice PHP:
    program matrix;

    const 
      
    3;
    type
      matrice 
    = array[.. n.. nof integer;
    var
      
    matrice;
      
    iinteger;
      
    pipj integer;

    begin
      
      
    for := 1 to n do
        for 
    := 1 to n do
        
    [ij] := j;    // tanto per mettere qualcosa
      
    for := 1 to n do
        
    m[i,1] := 0;

    // verifica che tutte le colonne contengano almeno uno zero
      
    pi := 1;
      
    pj := 0;
        
      for 
    := 1 to n do
      
    begin
        
    for := 1 to n do
        
    pi := pi m[i,j];
        
    pj := pj pi;
      
    end;

      if (
    pj 0then
        writeln
    ('ok')
      else
        
    writeln('no');
        
    end
    ciao
    sergio

  5. #5
    Funziona.. Adesso devo continuare il programma e dovrei, sulla carta, cerchiare un solo zero per riga e per colonna e poi memorizzare la posizione per poi contrassegnare la riga e la colonna in cui si trova lo zero cerchiato con un asterisco..
    Ciao, grazie intanto e alla prossima
    Angie ;o)

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.